diff --git a/.clang-format b/.clang-format index f0d042c27..7ab3cb079 100644 --- a/.clang-format +++ b/.clang-format @@ -47,13 +47,20 @@ DerivePointerAlignment: true DisableFormat: false ExperimentalAutoDetectBinPacking: false ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +IncludeBlocks: Merge IncludeCategories: - - Regex: '^<.*\.h>' + - Regex: '^.*.h"' Priority: 1 - - Regex: '^<.*' + - Regex: '^.*(boost|gflags|glog|gnsssdr|gpstk|gtest|gnuradio|pmt|uhd|volk)/' + Priority: 2 + - Regex: '^.*(armadillo|matio|pugixml)' Priority: 2 - Regex: '.*' Priority: 3 + - Regex: '^<.*\.h>' + Priority: 4 + - Regex: '^<.*' + Priority: 5 IndentCaseLabels: false IndentWidth: 4 IndentWrappedFunctionNames: false @@ -73,7 +80,7 @@ PenaltyExcessCharacter: 1000000 PenaltyReturnTypeOnItsOwnLine: 200 PointerAlignment: Left ReflowComments: true -SortIncludes: false +SortIncludes: true SpaceAfterCStyleCast: false SpaceBeforeAssignmentOperators: true SpaceBeforeParens: ControlStatements diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 000000000..50fa566d0 --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,3 @@ +--- +Checks: '-*,boost-use-to-string,cert-dcl21-cpp,cert-dcl58-cpp,cert-env33-c,cert-err52-cpp,cert-err60-cpp,cert-flp30-c,clang-analyzer-cplusplus*,cppcoreguidelines-pro-type-static-cast-downcast,cppcoreguidelines-slicing,google-build-namespaces,google-runtime-int,google-runtime-references,llvm-header-guard,misc-misplaced-const,misc-new-delete-overloads,misc-non-copyable-objects,misc-static-assert,misc-throw-by-value-catch-by-reference,misc-uniqueptr-reset-release,modernize-deprecated-headers,modernize-loop-convert,modernize-pass-by-value,modernize-raw-string-literal,modernize-use-auto,modernize-use-bool-literals,modernize-use-equals-default,modernize-use-equals-delete,modernize-use-noexcept,modernize-use-nullptr,modernize-use-using,performance-faster-string-find,performance-inefficient-algorithm,performance-move-const-arg,performance-type-promotion-in-math-fn,performance-unnecessary-copy-initialization,performance-unnecessary-value-param,readability-container-size-empty,readability-named-parameter,readability-non-const-parameter,readability-string-compare' +HeaderFilterRegex: '.*' diff --git a/CMakeLists.txt b/CMakeLists.txt index fceeb244b..a24768c62 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -115,9 +115,9 @@ endif() set(VERSION_INFO_MAJOR_VERSION 0) set(VERSION_INFO_API_COMPAT 0) if(${THIS_IS_A_RELEASE}) - set(VERSION_INFO_MINOR_VERSION 9) + set(VERSION_INFO_MINOR_VERSION 10) else() - set(VERSION_INFO_MINOR_VERSION 9.git-${GIT_BRANCH}-${GIT_COMMIT_HASH}) + set(VERSION_INFO_MINOR_VERSION 10.git-${GIT_BRANCH}-${GIT_COMMIT_HASH}) endif() set(VERSION ${VERSION_INFO_MAJOR_VERSION}.${VERSION_INFO_API_COMPAT}.${VERSION_INFO_MINOR_VERSION}) @@ -1131,7 +1131,13 @@ if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERS endif() message(FATAL_ERROR "libtool is required to build matio from source") endif() - if(EXISTS "/usr/bin/aclocal" OR EXISTS "/usr/bin/aclocal-1.16" OR EXISTS "/usr/bin/aclocal-1.15" OR EXISTS "/usr/bin/aclocal-1.14" OR EXISTS "/usr/bin/aclocal-1.13" OR EXISTS "/usr/bin/aclocal-1.11" OR EXISTS "/usr/bin/aclocal-1.10") + if(EXISTS "/usr/bin/aclocal" OR + EXISTS "/usr/bin/aclocal-1.16" OR + EXISTS "/usr/bin/aclocal-1.15" OR + EXISTS "/usr/bin/aclocal-1.14" OR + EXISTS "/usr/bin/aclocal-1.13" OR + EXISTS "/usr/bin/aclocal-1.11" OR + EXISTS "/usr/bin/aclocal-1.10") message(STATUS "Automake found.") else() message(" aclocal has not been found.") @@ -1612,6 +1618,26 @@ if((CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU endif() +######################################################################## +# clang-tidy https://clang.llvm.org/extra/clang-tidy/index.html +######################################################################## +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + if(NOT (CMAKE_VERSION VERSION_LESS "3.6")) + find_program( + CLANG_TIDY_EXE + NAMES "clang-tidy" + DOC "Path to clang-tidy executable" + ) + if(NOT CLANG_TIDY_EXE) + message(STATUS "clang-tidy not found.") + else() + message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}") + set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-checks=*") + set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + endif() + endif() +endif() + ######################################################################## # Create uninstall target diff --git a/cmake/Modules/FindGFLAGS.cmake b/cmake/Modules/FindGFLAGS.cmake index 76a832ca5..31739e216 100644 --- a/cmake/Modules/FindGFLAGS.cmake +++ b/cmake/Modules/FindGFLAGS.cmake @@ -17,8 +17,9 @@ # - Try to find GFlags # -# The following variables are optionally searched for defaults -# GFlags_ROOT_DIR: Base directory where all GFlags components are found +# The following CMake and environment variables are optionally searched +# for defaults: +# GFLAGS_ROOT: Base directory where all GFlags components are found # # The following are set after configuration is done: # GFlags_FOUND @@ -30,39 +31,45 @@ if(APPLE) find_path(GFlags_ROOT_DIR libgflags.dylib PATHS - /opt/local/lib - /usr/local/lib + /opt/local/lib + /usr/local/lib + ${GFLAGS_ROOT}/lib + $ENV{GFLAGS_ROOT}/lib ) else() find_path(GFlags_ROOT_DIR libgflags.so HINTS - /usr/local/lib - /usr/lib/x86_64-linux-gnu - /usr/lib/i386-linux-gnu - /usr/lib/arm-linux-gnueabihf - /usr/lib/arm-linux-gnueabi - /usr/lib/aarch64-linux-gnu - /usr/lib/mipsel-linux-gnu - /usr/lib/mips-linux-gnu - /usr/lib/mips64el-linux-gnuabi64 - /usr/lib/powerpc-linux-gnu - /usr/lib/powerpc64-linux-gnu - /usr/lib/powerpc64le-linux-gnu - /usr/lib/powerpc-linux-gnuspe - /usr/lib/hppa-linux-gnu - /usr/lib/s390x-linux-gnu - /usr/lib/i386-gnu - /usr/lib/hppa-linux-gnu - /usr/lib/x86_64-kfreebsd-gnu - /usr/lib/i386-kfreebsd-gnu - /usr/lib/m68k-linux-gnu - /usr/lib/sh4-linux-gnu - /usr/lib/sparc64-linux-gnu - /usr/lib/x86_64-linux-gnux32 - /usr/lib/alpha-linux-gnu - /usr/lib64 - /usr/lib + /usr/local/lib + /usr/lib/x86_64-linux-gnu + /usr/lib/i386-linux-gnu + /usr/lib/arm-linux-gnueabihf + /usr/lib/arm-linux-gnueabi + /usr/lib/aarch64-linux-gnu + /usr/lib/mipsel-linux-gnu + /usr/lib/mips-linux-gnu + /usr/lib/mips64el-linux-gnuabi64 + /usr/lib/powerpc-linux-gnu + /usr/lib/powerpc64-linux-gnu + /usr/lib/powerpc64le-linux-gnu + /usr/lib/powerpc-linux-gnuspe + /usr/lib/hppa-linux-gnu + /usr/lib/s390x-linux-gnu + /usr/lib/i386-gnu + /usr/lib/hppa-linux-gnu + /usr/lib/x86_64-kfreebsd-gnu + /usr/lib/i386-kfreebsd-gnu + /usr/lib/m68k-linux-gnu + /usr/lib/sh4-linux-gnu + /usr/lib/sparc64-linux-gnu + /usr/lib/x86_64-linux-gnux32 + /usr/lib/alpha-linux-gnu + /usr/lib64 + /usr/lib + ${GFLAGS_ROOT}/lib + $ENV{GFLAGS_ROOT}/lib + ${GFLAGS_ROOT}/lib64 + $ENV{GFLAGS_ROOT}/lib64 ) endif() @@ -71,10 +78,12 @@ if(GFlags_ROOT_DIR) find_path(GFlags_INCLUDE_DIRS gflags/gflags.h HINTS - /opt/local/include - /usr/local/include - /usr/include - ${GFlags_ROOT_DIR}/src + /opt/local/include + /usr/local/include + /usr/include + ${GFlags_ROOT_DIR}/src + ${GFLAGS_ROOT}/include + $ENV{GFLAGS_ROOT}/include ) # Find the libraries diff --git a/cmake/Modules/FindGFORTRAN.cmake b/cmake/Modules/FindGFORTRAN.cmake index f3299fefb..f19ccd77a 100644 --- a/cmake/Modules/FindGFORTRAN.cmake +++ b/cmake/Modules/FindGFORTRAN.cmake @@ -142,6 +142,8 @@ find_library(GFORTRAN NAMES gfortran /usr/lib/gcc/powerpc64le-linux-gnu/8 /usr/lib/gcc/s390x-linux-gnu/8 /usr/lib/gcc/alpha-linux-gnu/8 + ${GFORTRAN_ROOT}/lib + $ENV{GFORTRAN_ROOT}/lib ) include(FindPackageHandleStandardArgs) diff --git a/cmake/Modules/FindGLOG.cmake b/cmake/Modules/FindGLOG.cmake index 50231f585..2d8f154f3 100644 --- a/cmake/Modules/FindGLOG.cmake +++ b/cmake/Modules/FindGLOG.cmake @@ -68,6 +68,10 @@ macro(_FIND_GLOG_LIBRARIES _var) /usr/lib/alpha-linux-gnu /usr/lib64 /usr/lib + ${GLOG_ROOT}/lib + $ENV{GLOG_ROOT}/lib + ${GLOG_ROOT}/lib64 + $ENV{GLOG_ROOT}/lib64 PATH_SUFFIXES lib ) mark_as_advanced(${_var}) diff --git a/cmake/Modules/FindGNSSSIMULATOR.cmake b/cmake/Modules/FindGNSSSIMULATOR.cmake index 5d4294548..66aa9176a 100644 --- a/cmake/Modules/FindGNSSSIMULATOR.cmake +++ b/cmake/Modules/FindGNSSSIMULATOR.cmake @@ -17,11 +17,14 @@ find_program(SW_GENERATOR_BIN gnss_sim PATHS /usr/bin - /usr/local/bin - /opt/local/bin - ${CMAKE_INSTALL_PREFIX}/bin - PATH_SUFFIXES bin) + /usr/local/bin + /opt/local/bin + ${CMAKE_INSTALL_PREFIX}/bin + ${GNSSSIMULATOR_ROOT}/bin + $ENV{GNSSSIMULATOR_ROOT}/bin + PATH_SUFFIXES bin +) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(GNSSSIMULATOR DEFAULT_MSG SW_GENERATOR_BIN) +find_package_handle_standard_args(GNSSSIMULATOR DEFAULT_MSG SW_GENERATOR_BIN) mark_as_advanced(SW_GENERATOR_BIN) diff --git a/cmake/Modules/FindGNURADIO.cmake b/cmake/Modules/FindGNURADIO.cmake index c6811ba7f..7f5deb3ab 100644 --- a/cmake/Modules/FindGNURADIO.cmake +++ b/cmake/Modules/FindGNURADIO.cmake @@ -65,29 +65,29 @@ function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE) set(PC_LIBDIR ${PC_GNURADIO_${EXTVAR}_LIBDIR}) # look for include files - find_path( - ${INCVAR_NAME} + find_path(${INCVAR_NAME} NAMES ${INCFILE} HINTS $ENV{GNURADIO_RUNTIME_DIR}/include - ${PC_INCDIR} - ${CMAKE_INSTALL_PREFIX}/include - ${GNURADIO_INSTALL_PREFIX}/include + ${PC_INCDIR} + ${CMAKE_INSTALL_PREFIX}/include + ${GNURADIO_INSTALL_PREFIX}/include PATHS /usr/local/include /usr/include ${GNURADIO_INSTALL_PREFIX}/include + ${GNURADIO_ROOT}/include + $ENV{GNURADIO_ROOT}/include ) # look for libs foreach(libname ${PC_GNURADIO_${EXTVAR}_LIBRARIES}) - find_library( - ${LIBVAR_NAME}_${libname} + find_library(${LIBVAR_NAME}_${libname} NAMES ${libname} ${libname}-${PC_GNURADIO_RUNTIME_VERSION} HINTS $ENV{GNURADIO_RUNTIME_DIR}/lib - ${PC_LIBDIR} - ${CMAKE_INSTALL_PREFIX}/lib/ - ${CMAKE_INSTALL_PREFIX}/lib64/ - ${GNURADIO_INSTALL_PREFIX}/lib/ - ${GNURADIO_INSTALL_PREFIX}/lib64 + ${PC_LIBDIR} + ${CMAKE_INSTALL_PREFIX}/lib + ${CMAKE_INSTALL_PREFIX}/lib64 + ${GNURADIO_INSTALL_PREFIX}/lib + ${GNURADIO_INSTALL_PREFIX}/lib64 PATHS /usr/local/lib /usr/lib/x86_64-linux-gnu /usr/lib/i386-linux-gnu @@ -115,6 +115,10 @@ function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE) /usr/lib64 /usr/lib ${GNURADIO_INSTALL_PREFIX}/lib + ${GNURADIO_ROOT}/lib + $ENV{GNURADIO_ROOT}/lib + ${GNURADIO_ROOT}/lib64 + $ENV{GNURADIO_ROOT}/lib64 ) list(APPEND ${LIBVAR_NAME} ${${LIBVAR_NAME}_${libname}}) endforeach() @@ -174,6 +178,8 @@ if(NOT PC_GNURADIO_RUNTIME_VERSION) PATHS /usr/local/include /usr/include ${GNURADIO_INSTALL_PREFIX}/include + ${GNURADIO_ROOT}/include + $ENV{GNURADIO_ROOT}/include ) if(GNURADIO_VERSION_GREATER_THAN_373) set(PC_GNURADIO_RUNTIME_VERSION "3.7.4+") @@ -187,6 +193,8 @@ if(NOT PC_GNURADIO_RUNTIME_VERSION) PATHS /usr/local/include /usr/include ${GNURADIO_INSTALL_PREFIX}/include + ${GNURADIO_ROOT}/include + $ENV{GNURADIO_ROOT}/include ) if(GNURADIO_VERSION_GREATER_THAN_38) set(PC_GNURADIO_RUNTIME_VERSION "3.8.0+") diff --git a/cmake/Modules/FindGPERFTOOLS.cmake b/cmake/Modules/FindGPERFTOOLS.cmake index 3278caf92..67dfff8af 100644 --- a/cmake/Modules/FindGPERFTOOLS.cmake +++ b/cmake/Modules/FindGPERFTOOLS.cmake @@ -24,7 +24,7 @@ # Variables used by this module, they can change the default behaviour and need # to be set before calling find_package: # -# Gperftools_ROOT_DIR Set this variable to the root installation of +# GPERFTOOLS_ROOT Set this variable to the root installation of # Gperftools if the module has problems finding # the proper installation path. # @@ -36,19 +36,37 @@ find_library(GPERFTOOLS_TCMALLOC NAMES tcmalloc - HINTS ${Gperftools_ROOT_DIR}/lib) + HINTS ${Gperftools_ROOT_DIR}/lib + ${GPERFTOOLS_ROOT}/lib + $ENV{GPERFTOOLS_ROOT}/lib + ${GPERFTOOLS_ROOT}/lib64 + $ENV{GPERFTOOLS_ROOT}/lib64 +) find_library(GPERFTOOLS_PROFILER NAMES profiler - HINTS ${Gperftools_ROOT_DIR}/lib) + HINTS ${Gperftools_ROOT_DIR}/lib + ${GPERFTOOLS_ROOT}/lib + $ENV{GPERFTOOLS_ROOT}/lib + ${GPERFTOOLS_ROOT}/lib64 + $ENV{GPERFTOOLS_ROOT}/lib64 +) find_library(GPERFTOOLS_TCMALLOC_AND_PROFILER NAMES tcmalloc_and_profiler - HINTS ${Gperftools_ROOT_DIR}/lib) + HINTS ${Gperftools_ROOT_DIR}/lib + ${GPERFTOOLS_ROOT}/lib + $ENV{GPERFTOOLS_ROOT}/lib + ${GPERFTOOLS_ROOT}/lib64 + $ENV{GPERFTOOLS_ROOT}/lib64 +) find_path(GPERFTOOLS_INCLUDE_DIR NAMES gperftools/heap-profiler.h - HINTS ${Gperftools_ROOT_DIR}/include) + HINTS ${Gperftools_ROOT_DIR}/include + ${GPERFTOOLS_ROOT}/include + $ENV{GPERFTOOLS_ROOT}/include +) set(GPERFTOOLS_LIBRARIES ${GPERFTOOLS_TCMALLOC_AND_PROFILER}) diff --git a/cmake/Modules/FindGPSTK.cmake b/cmake/Modules/FindGPSTK.cmake index c3270a6eb..f5ecb667e 100644 --- a/cmake/Modules/FindGPSTK.cmake +++ b/cmake/Modules/FindGPSTK.cmake @@ -24,14 +24,23 @@ find_path(GPSTK_INCLUDE_DIR gpstk/Rinex3ObsBase.hpp HINTS /usr/include - /usr/local/include - /opt/local/include) + /usr/local/include + /opt/local/include + ${GPSTK_ROOT}/include + $ENV{GPSTK_ROOT}/include +) set(GPSTK_NAMES ${GPSTK_NAMES} gpstk libgpstk) + find_library(GPSTK_LIBRARY NAMES ${GPSTK_NAMES} HINTS /usr/lib - /usr/local/lib - /opt/local/lib) + /usr/local/lib + /opt/local/lib + ${GPSTK_ROOT}/lib + $ENV{GPSTK_ROOT}/lib + ${GPSTK_ROOT}/lib64 + $ENV{GPSTK_ROOT}/lib64 +) # handle the QUIETLY and REQUIRED arguments and set GPSTK_FOUND to TRUE if # all listed variables are TRUE diff --git a/cmake/Modules/FindGRDBFCTTC.cmake b/cmake/Modules/FindGRDBFCTTC.cmake index 4b99f3702..e0689aeaf 100644 --- a/cmake/Modules/FindGRDBFCTTC.cmake +++ b/cmake/Modules/FindGRDBFCTTC.cmake @@ -30,6 +30,8 @@ find_path( PATHS ${CMAKE_INSTALL_PREFIX}/include /usr/include /usr/local/include + ${GRDBFCTTC_ROOT}/include + $ENV{GRDBFCTTC_ROOT}/include ) find_library( @@ -43,6 +45,10 @@ find_library( /usr/lib64 /usr/local/lib /usr/local/lib64 + ${GRDBFCTTC_ROOT}/lib + $ENV{GRDBFCTTC_ROOT}/lib + ${GRDBFCTTC_ROOT}/lib64 + $ENV{GRDBFCTTC_ROOT}/lib64 ) include(FindPackageHandleStandardArgs) diff --git a/cmake/Modules/FindGRGN3S.cmake b/cmake/Modules/FindGRGN3S.cmake index 119a75eed..93f7bda89 100644 --- a/cmake/Modules/FindGRGN3S.cmake +++ b/cmake/Modules/FindGRGN3S.cmake @@ -30,6 +30,8 @@ find_path( PATHS ${CMAKE_INSTALL_PREFIX}/include /usr/local/include /usr/include + ${GRGN3S_ROOT}/include + $ENV{GRGN3S_ROOT}/include ) find_library( @@ -43,6 +45,10 @@ find_library( /usr/local/lib64 /usr/lib /usr/lib64 + ${GRGN3S_ROOT}/lib + $ENV{GRGN3S_ROOT}/lib + ${GRGN3S_ROOT}/lib64 + $ENV{GRGN3S_ROOT}/lib64 ) include(FindPackageHandleStandardArgs) diff --git a/cmake/Modules/FindGRIIO.cmake b/cmake/Modules/FindGRIIO.cmake index 5575e3122..6d341e7fd 100644 --- a/cmake/Modules/FindGRIIO.cmake +++ b/cmake/Modules/FindGRIIO.cmake @@ -18,21 +18,21 @@ include(FindPkgConfig) pkg_check_modules(PC_IIO gnuradio-iio) -find_path( - IIO_INCLUDE_DIRS +find_path(IIO_INCLUDE_DIRS NAMES gnuradio/iio/api.h HINTS $ENV{IIO_DIR}/include - ${PC_IIO_INCLUDEDIR} + ${PC_IIO_INCLUDEDIR} PATHS ${CMAKE_INSTALL_PREFIX}/include /usr/local/include /usr/include + ${GRIIO_ROOT}/include + $ENV{GRIIO_ROOT}/include ) -find_library( - IIO_LIBRARIES +find_library(IIO_LIBRARIES NAMES gnuradio-iio HINTS $ENV{IIO_DIR}/lib - ${PC_IIO_LIBDIR} + ${PC_IIO_LIBDIR} PATHS ${CMAKE_INSTALL_PREFIX}/lib ${CMAKE_INSTALL_PREFIX}/lib64 /usr/local/lib @@ -61,6 +61,10 @@ find_library( /usr/lib/sparc64-linux-gnu /usr/lib/x86_64-linux-gnux32 /usr/lib/sh4-linux-gnu + ${GRIIO_ROOT}/lib + $ENV{GRIIO_ROOT}/lib + ${GRIIO_ROOT}/lib64 + $ENV{GRIIO_ROOT}/lib64 ) include(FindPackageHandleStandardArgs) diff --git a/cmake/Modules/FindGROSMOSDR.cmake b/cmake/Modules/FindGROSMOSDR.cmake index e78541806..48379ed76 100644 --- a/cmake/Modules/FindGROSMOSDR.cmake +++ b/cmake/Modules/FindGROSMOSDR.cmake @@ -34,14 +34,20 @@ # GROSMOSDR_LIBRARIES The gr-osmosdr libraries (gnuradio-osmosdr) # GROSMOSDR_INCLUDE_DIR The location of gr-osmosdr headers +include(FindPkgConfig) pkg_check_modules(GROSMOSDR_PKG gnuradio-osmosdr) + find_path(GROSMOSDR_INCLUDE_DIR - NAMES osmosdr/source.h + NAMES + osmosdr/source.h osmosdr/api.h PATHS - ${GROSMOSDR_PKG_INCLUDE_DIRS} - /usr/include - /usr/local/include + ${GROSMOSDR_PKG_INCLUDE_DIRS} + /usr/include + /usr/local/include + /opt/local/include + ${GROSMOSDR_ROOT}/include + $ENV{GROSMOSDR_ROOT}/include ) find_library(GROSMOSDR_LIBRARIES @@ -50,6 +56,7 @@ find_library(GROSMOSDR_LIBRARIES ${GROSMOSDR_PKG_LIBRARY_DIRS} /usr/lib /usr/local/lib + /opt/local/lib /usr/lib/x86_64-linux-gnu /usr/lib/i386-linux-gnu /usr/lib/arm-linux-gnueabihf @@ -74,6 +81,10 @@ find_library(GROSMOSDR_LIBRARIES /usr/lib/x86_64-linux-gnux32 /usr/lib/alpha-linux-gnu /usr/lib64 + ${GROSMOSDR_ROOT}/lib + $ENV{GROSMOSDR_ROOT}/lib + ${GROSMOSDR_ROOT}/lib64 + $ENV{GROSMOSDR_ROOT}/lib64 ) include(FindPackageHandleStandardArgs) diff --git a/cmake/Modules/FindLIBIIO.cmake b/cmake/Modules/FindLIBIIO.cmake index f8b6d10b9..a76180ca2 100644 --- a/cmake/Modules/FindLIBIIO.cmake +++ b/cmake/Modules/FindLIBIIO.cmake @@ -27,6 +27,8 @@ find_path( /usr/local/include /usr/include /opt/local/include + ${LIBIIO_ROOT}/include + $ENV{LIBIIO_ROOT}/include ) find_library( @@ -63,6 +65,10 @@ find_library( /usr/lib/x86_64-linux-gnux32 /usr/lib/sh4-linux-gnu /Library/Frameworks/iio.framework/ + ${LIBIIO_ROOT}/lib + $ENV{LIBIIO_ROOT}/lib + ${LIBIIO_ROOT}/lib64 + $ENV{LIBIIO_ROOT}/lib64 ) include(FindPackageHandleStandardArgs) diff --git a/cmake/Modules/FindLIBOSMOSDR.cmake b/cmake/Modules/FindLIBOSMOSDR.cmake index 72f459e72..1e3aaf5e0 100644 --- a/cmake/Modules/FindLIBOSMOSDR.cmake +++ b/cmake/Modules/FindLIBOSMOSDR.cmake @@ -28,12 +28,16 @@ # LIBOSMOSDR_LIBRARIES The libosmosdr libraries # LIBOSMOSDR_INCLUDE_DIR The location of libosmosdr headers +include(FindPkgConfig) pkg_check_modules(LIBOSMOSDR_PKG libosmosdr) + find_path(LIBOSMOSDR_INCLUDE_DIR NAMES osmosdr.h PATHS - ${LIBOSMOSDR_PKG_INCLUDE_DIRS} - /usr/include - /usr/local/include + ${LIBOSMOSDR_PKG_INCLUDE_DIRS} + /usr/include + /usr/local/include + ${LIBOSMOSDR_ROOT}/include + $ENV{LIBOSMOSDR_ROOT}/include ) find_library(LIBOSMOSDR_LIBRARIES NAMES osmosdr @@ -65,7 +69,11 @@ find_library(LIBOSMOSDR_LIBRARIES NAMES osmosdr /usr/lib/x86_64-linux-gnux32 /usr/lib/alpha-linux-gnu /usr/lib64 - ) + ${LIBOSMOSDR_ROOT}/lib + $ENV{LIBOSMOSDR_ROOT}/lib + ${LIBOSMOSDR_ROOT}/lib64 + $ENV{LIBOSMOSDR_ROOT}/lib64 +) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LIBOSMOSDR DEFAULT_MSG LIBOSMOSDR_INCLUDE_DIR LIBOSMOSDR_LIBRARIES) diff --git a/cmake/Modules/FindLOG4CPP.cmake b/cmake/Modules/FindLOG4CPP.cmake index b14ac009a..283c3ddf9 100644 --- a/cmake/Modules/FindLOG4CPP.cmake +++ b/cmake/Modules/FindLOG4CPP.cmake @@ -32,6 +32,8 @@ find_path(LOG4CPP_INCLUDE_DIR log4cpp/Category.hh /opt/local/include /usr/local/include /usr/include + ${LOG4CPP_ROOT}/include + $ENV{LOG4CPP_ROOT}/include ) set(LOG4CPP_NAMES log4cpp) @@ -68,6 +70,10 @@ find_library(LOG4CPP_LIBRARY /usr/lib /usr/local/lib /opt/local/lib + ${LOG4CPP_ROOT}/lib + $ENV{LOG4CPP_ROOT}/lib + ${LOG4CPP_ROOT}/lib64 + $ENV{LOG4CPP_ROOT}/lib64 ) if(LOG4CPP_INCLUDE_DIR AND LOG4CPP_LIBRARY) diff --git a/cmake/Modules/FindMATIO.cmake b/cmake/Modules/FindMATIO.cmake index e9d66c65b..08facf069 100644 --- a/cmake/Modules/FindMATIO.cmake +++ b/cmake/Modules/FindMATIO.cmake @@ -60,10 +60,24 @@ # # Look for the header file. -find_path(MATIO_INCLUDE_DIR NAMES matio.h DOC "The MATIO include directory") +find_path(MATIO_INCLUDE_DIR + NAMES matio.h + HINTS + ${MATIO_ROOT}/include + $ENV{MATIO_ROOT}/include + DOC "The MATIO include directory" +) # Look for the library. -find_library(MATIO_LIBRARY NAMES matio DOC "The MATIO library") +find_library(MATIO_LIBRARY + NAMES matio + HINTS + ${MATIO_ROOT}/lib + $ENV{MATIO_ROOT}/lib + ${MATIO_ROOT}/lib64 + $ENV{MATIO_ROOT}/lib64 + DOC "The MATIO library" +) if(MATIO_INCLUDE_DIR) # --------------------------------------------------- diff --git a/cmake/Modules/FindOPENBLAS.cmake b/cmake/Modules/FindOPENBLAS.cmake index 0704a9681..8ff70d65f 100644 --- a/cmake/Modules/FindOPENBLAS.cmake +++ b/cmake/Modules/FindOPENBLAS.cmake @@ -20,17 +20,22 @@ # The following environment variable is optionally searched # OPENBLAS_HOME: Base directory where all OpenBlas components are found -set(OPEN_BLAS_SEARCH_PATHS /lib/ - /lib64/ - /usr/lib - /usr/lib64 - /usr/local/lib - /usr/local/lib64 - /opt/OpenBLAS/lib - /opt/local/lib - /usr/lib/openblas-base - $ENV{OPENBLAS_HOME}/lib - ) +set(OPEN_BLAS_SEARCH_PATHS + /lib + /lib64/ + /usr/lib + /usr/lib64 + /usr/local/lib + /usr/local/lib64 + /opt/OpenBLAS/lib + /opt/local/lib + /usr/lib/openblas-base + $ENV{OPENBLAS_HOME}/lib + ${OPENBLAS_ROOT}/lib + $ENV{OPENBLAS_ROOT}/lib + ${OPENBLAS_ROOT}/lib64 + $ENV{OPENBLAS_ROOT}/lib64 +) find_library(OPENBLAS NAMES openblas PATHS ${OPEN_BLAS_SEARCH_PATHS}) diff --git a/cmake/Modules/FindORC.cmake b/cmake/Modules/FindORC.cmake index 7bd013e67..fea12b98f 100644 --- a/cmake/Modules/FindORC.cmake +++ b/cmake/Modules/FindORC.cmake @@ -20,41 +20,50 @@ pkg_check_modules(PC_ORC "orc-0.4 > 0.4.22") find_program(ORCC_EXECUTABLE orcc HINTS ${PC_ORC_TOOLSDIR} - PATHS ${ORC_ROOT}/bin ${CMAKE_INSTALL_PREFIX}/bin) + PATHS ${ORC_ROOT}/bin + ${CMAKE_INSTALL_PREFIX}/bin +) -find_path(ORC_INCLUDE_DIR NAMES orc/orc.h +find_path(ORC_INCLUDE_DIR + NAMES orc/orc.h HINTS ${PC_ORC_INCLUDEDIR} - PATHS ${ORC_ROOT}/include/orc-0.4 ${CMAKE_INSTALL_PREFIX}/include/orc-0.4) + PATHS ${ORC_ROOT}/include/orc-0.4 + ${CMAKE_INSTALL_PREFIX}/include/orc-0.4 +) - -find_path(ORC_LIBRARY_DIR NAMES ${CMAKE_SHARED_LIBRARY_PREFIX}orc-0.4${CMAKE_SHARED_LIBRARY_SUFFIX} +find_path(ORC_LIBRARY_DIR + NAMES ${CMAKE_SHARED_LIBRARY_PREFIX}orc-0.4${CMAKE_SHARED_LIBRARY_SUFFIX} HINTS ${PC_ORC_LIBDIR} - /usr/local/lib - /usr/lib/x86_64-linux-gnu - /usr/lib/i386-linux-gnu - /usr/lib/arm-linux-gnueabihf - /usr/lib/arm-linux-gnueabi - /usr/lib/aarch64-linux-gnu - /usr/lib/mipsel-linux-gnu - /usr/lib/mips-linux-gnu - /usr/lib/mips64el-linux-gnuabi64 - /usr/lib/powerpc-linux-gnu - /usr/lib/powerpc64-linux-gnu - /usr/lib/powerpc64le-linux-gnu - /usr/lib/hppa-linux-gnu - /usr/lib/s390x-linux-gnu - /usr/lib64 - /usr/lib - PATHS ${ORC_ROOT}/lib${LIB_SUFFIX} ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}) + /usr/local/lib + /usr/lib/x86_64-linux-gnu + /usr/lib/i386-linux-gnu + /usr/lib/arm-linux-gnueabihf + /usr/lib/arm-linux-gnueabi + /usr/lib/aarch64-linux-gnu + /usr/lib/mipsel-linux-gnu + /usr/lib/mips-linux-gnu + /usr/lib/mips64el-linux-gnuabi64 + /usr/lib/powerpc-linux-gnu + /usr/lib/powerpc64-linux-gnu + /usr/lib/powerpc64le-linux-gnu + /usr/lib/hppa-linux-gnu + /usr/lib/s390x-linux-gnu + /usr/lib64 + /usr/lib + ${ORC_ROOT}/lib + $ENV{ORC_ROOT}/lib + PATHS + ${ORC_ROOT}/lib${LIB_SUFFIX} + ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX} +) find_library(ORC_LIB orc-0.4 HINTS ${PC_ORC_LIBRARY_DIRS} - PATHS ${ORC_ROOT}/lib${LIB_SUFFIX} ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}) - -list(APPEND ORC_LIBRARY - ${ORC_LIB} + PATHS ${ORC_ROOT}/lib${LIB_SUFFIX} + ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX} ) +list(APPEND ORC_LIBRARY ${ORC_LIB}) set(ORC_INCLUDE_DIRS ${ORC_INCLUDE_DIR}) set(ORC_LIBRARIES ${ORC_LIBRARY}) diff --git a/cmake/Modules/FindPCAP.cmake b/cmake/Modules/FindPCAP.cmake index d91524ff4..af746c852 100644 --- a/cmake/Modules/FindPCAP.cmake +++ b/cmake/Modules/FindPCAP.cmake @@ -48,10 +48,12 @@ if(EXISTS $ENV{PCAPDIR}) find_path(PCAP_INCLUDE_DIR NAMES - pcap/pcap.h - pcap.h + pcap/pcap.h + pcap.h PATHS $ENV{PCAPDIR} + ${PCAP_ROOT}/include + $ENV{PCAP_ROOT}/include NO_DEFAULT_PATH ) find_library(PCAP_LIBRARY @@ -59,18 +61,25 @@ if(EXISTS $ENV{PCAPDIR}) pcap PATHS $ENV{PCAPDIR} + ${PCAP_ROOT}/lib + $ENV{PCAP_ROOT}/lib NO_DEFAULT_PATH ) else() find_path(PCAP_INCLUDE_DIR NAMES - pcap/pcap.h - pcap.h + pcap/pcap.h + pcap.h + HINTS + ${PCAP_ROOT}/include + $ENV{PCAP_ROOT}/include ) - find_library(PCAP_LIBRARY NAMES pcap + HINTS + ${PCAP_ROOT}/lib + $ENV{PCAP_ROOT}/lib ) endif() diff --git a/cmake/Modules/FindPUGIXML.cmake b/cmake/Modules/FindPUGIXML.cmake index da7de4188..236a4c95a 100644 --- a/cmake/Modules/FindPUGIXML.cmake +++ b/cmake/Modules/FindPUGIXML.cmake @@ -26,28 +26,36 @@ find_path(PUGIXML_INCLUDE_DIR NAMES pugixml.hpp PATHS ${PUGIXML_HOME}/include - /usr/include - /usr/local/include - /opt/local/include) + /usr/include + /usr/local/include + /opt/local/include + ${PUGIXML_ROOT}/include + $ENV{PUGIXML_ROOT}/include +) find_library(PUGIXML_LIBRARY NAMES pugixml PATHS ${PUGIXML_HOME}/lib - /usr/lib/x86_64-linux-gnu - /usr/lib/aarch64-linux-gnu - /usr/lib/arm-linux-gnueabi - /usr/lib/arm-linux-gnueabihf - /usr/lib/i386-linux-gnu - /usr/lib/mips-linux-gnu - /usr/lib/mips64el-linux-gnuabi64 - /usr/lib/mipsel-linux-gnu - /usr/lib/powerpc64le-linux-gnu - /usr/lib/s390x-linux-gnu - /usr/local/lib - /opt/local/lib - /usr/lib - /usr/lib64 - /usr/local/lib64) + /usr/lib/x86_64-linux-gnu + /usr/lib/aarch64-linux-gnu + /usr/lib/arm-linux-gnueabi + /usr/lib/arm-linux-gnueabihf + /usr/lib/i386-linux-gnu + /usr/lib/mips-linux-gnu + /usr/lib/mips64el-linux-gnuabi64 + /usr/lib/mipsel-linux-gnu + /usr/lib/powerpc64le-linux-gnu + /usr/lib/s390x-linux-gnu + /usr/local/lib + /opt/local/lib + /usr/lib + /usr/lib64 + /usr/local/lib64 + ${PUGIXML_ROOT}/lib + $ENV{PUGIXML_ROOT}/lib + ${PUGIXML_ROOT}/lib64 + $ENV{PUGIXML_ROOT}/lib64 +) # Support the REQUIRED and QUIET arguments, and set PUGIXML_FOUND if found. include(FindPackageHandleStandardArgs) diff --git a/cmake/Modules/FindTELEORBIT.cmake b/cmake/Modules/FindTELEORBIT.cmake index 0f78ed339..eb2420687 100644 --- a/cmake/Modules/FindTELEORBIT.cmake +++ b/cmake/Modules/FindTELEORBIT.cmake @@ -18,27 +18,31 @@ include(FindPkgConfig) pkg_check_modules(PC_TELEORBIT teleorbit) -find_path( - TELEORBIT_INCLUDE_DIRS +find_path(TELEORBIT_INCLUDE_DIRS NAMES teleorbit/api.h HINTS $ENV{TELEORBIT_DIR}/include - ${PC_TELEORBIT_INCLUDEDIR} + ${PC_TELEORBIT_INCLUDEDIR} PATHS ${CMAKE_INSTALL_PREFIX}/include /usr/local/include /usr/include + ${TELEORBIT_ROOT}/include + $ENV{TELEORBIT_ROOT}/include ) -find_library( - TELEORBIT_LIBRARIES +find_library(TELEORBIT_LIBRARIES NAMES gnuradio-teleorbit HINTS $ENV{TELEORBIT_DIR}/lib - ${PC_TELEORBIT_LIBDIR} + ${PC_TELEORBIT_LIBDIR} PATHS ${CMAKE_INSTALL_PREFIX}/lib ${CMAKE_INSTALL_PREFIX}/lib64 /usr/local/lib /usr/local/lib64 /usr/lib /usr/lib64 + ${TELEORBIT_ROOT}/lib + $ENV{TELEORBIT_ROOT}/lib + ${TELEORBIT_ROOT}/lib64 + $ENV{TELEORBIT_ROOT}/lib64 ) include(FindPackageHandleStandardArgs) diff --git a/cmake/Modules/FindUHD.cmake b/cmake/Modules/FindUHD.cmake index fc12a9cdd..31d299937 100644 --- a/cmake/Modules/FindUHD.cmake +++ b/cmake/Modules/FindUHD.cmake @@ -22,21 +22,21 @@ include(FindPkgConfig) pkg_check_modules(PC_UHD uhd) -find_path( - UHD_INCLUDE_DIRS +find_path(UHD_INCLUDE_DIRS NAMES uhd/config.hpp HINTS $ENV{UHD_DIR}/include - ${PC_UHD_INCLUDEDIR} + ${PC_UHD_INCLUDEDIR} PATHS /usr/local/include /usr/include ${GNURADIO_INSTALL_PREFIX}/include + ${UHD_ROOT}/include + $ENV{UHD_ROOT}/include ) -find_library( - UHD_LIBRARIES +find_library(UHD_LIBRARIES NAMES uhd HINTS $ENV{UHD_DIR}/lib - ${PC_UHD_LIBDIR} + ${PC_UHD_LIBDIR} PATHS /usr/local/lib /usr/lib/x86_64-linux-gnu /usr/lib/i386-linux-gnu @@ -64,6 +64,10 @@ find_library( /usr/lib64 /usr/lib ${GNURADIO_INSTALL_PREFIX}/lib + ${UHD_ROOT}/lib + $ENV{UHD_ROOT}/lib + ${UHD_ROOT}/lib64 + $ENV{UHD_ROOT}/lib64 ) include(FindPackageHandleStandardArgs) diff --git a/cmake/Modules/FindVOLK.cmake b/cmake/Modules/FindVOLK.cmake index d491c08b0..97191179c 100644 --- a/cmake/Modules/FindVOLK.cmake +++ b/cmake/Modules/FindVOLK.cmake @@ -22,18 +22,18 @@ include(FindPkgConfig) pkg_check_modules(PC_VOLK volk) -find_path( - VOLK_INCLUDE_DIRS +find_path(VOLK_INCLUDE_DIRS NAMES volk/volk.h HINTS $ENV{VOLK_DIR}/include ${PC_VOLK_INCLUDEDIR} PATHS /usr/local/include /usr/include ${CMAKE_INSTALL_PREFIX}/include + ${VOLK_ROOT}/include + $ENV{VOLK_ROOT}/include ) -find_library( - VOLK_LIBRARIES +find_library(VOLK_LIBRARIES NAMES volk HINTS $ENV{VOLK_DIR}/lib ${PC_VOLK_LIBDIR} @@ -65,6 +65,10 @@ find_library( /usr/lib/alpha-linux-gnu /usr/lib64 ${CMAKE_INSTALL_PREFIX}/lib + ${VOLK_ROOT}/lib + $ENV{VOLK_ROOT}/lib + ${VOLK_ROOT}/lib64 + $ENV{VOLK_ROOT}/lib64 ) include(FindPackageHandleStandardArgs) diff --git a/cmake/Modules/FindVOLKGNSSSDR.cmake b/cmake/Modules/FindVOLKGNSSSDR.cmake index cd5cac918..5cdc4e61d 100644 --- a/cmake/Modules/FindVOLKGNSSSDR.cmake +++ b/cmake/Modules/FindVOLKGNSSSDR.cmake @@ -22,26 +22,30 @@ include(FindPkgConfig) pkg_check_modules(PC_VOLK_GNSSSDR volk_gnsssdr) -find_path( - VOLK_GNSSSDR_INCLUDE_DIRS +find_path(VOLK_GNSSSDR_INCLUDE_DIRS NAMES volk_gnsssdr/volk_gnsssdr.h HINTS $ENV{VOLK_GNSSSDR_DIR}/include - ${PC_VOLK_GNSSSDR_INCLUDEDIR} + ${PC_VOLK_GNSSSDR_INCLUDEDIR} PATHS /usr/local/include /usr/include ${GNURADIO_INSTALL_PREFIX}/include + ${VOLKGNSSSDR_ROOT}/include + $ENV{VOLKGNSSSDR_ROOT}/include ) -find_library( - VOLK_GNSSSDR_LIBRARIES +find_library(VOLK_GNSSSDR_LIBRARIES NAMES volk_gnsssdr HINTS $ENV{VOLK_GNSSSDR_DIR}/lib - ${PC_VOLK_GNSSSDR_LIBDIR} + ${PC_VOLK_GNSSSDR_LIBDIR} PATHS /usr/local/lib /usr/local/lib64 /usr/lib /usr/lib64 ${GNURADIO_INSTALL_PREFIX}/lib + ${VOLKGNSSSDR_ROOT}/lib + $ENV{VOLKGNSSSDR_ROOT}/lib + ${VOLKGNSSSDR_ROOT}/lib64 + $ENV{VOLKGNSSSDR_ROOT}/lib64 ) include(FindPackageHandleStandardArgs) diff --git a/cmake/Toolchains/oe-sdk_cross.cmake b/cmake/Toolchains/oe-sdk_cross.cmake index aac39094e..dd7aedf5f 100644 --- a/cmake/Toolchains/oe-sdk_cross.cmake +++ b/cmake/Toolchains/oe-sdk_cross.cmake @@ -18,20 +18,20 @@ ########################################################## # Toolchain file for Open Embedded ########################################################## -set( CMAKE_SYSTEM_NAME Linux ) +set(CMAKE_SYSTEM_NAME Linux) string(REGEX MATCH "sysroots/([a-zA-Z0-9]+)" CMAKE_SYSTEM_PROCESSOR $ENV{SDKTARGETSYSROOT}) string(REGEX REPLACE "sysroots/" "" CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}) -set( CMAKE_CXX_FLAGS $ENV{CXXFLAGS} CACHE STRING "" FORCE ) -set( CMAKE_C_FLAGS $ENV{CFLAGS} CACHE STRING "" FORCE ) #same flags for C sources -set( CMAKE_LDFLAGS_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE ) #same flags for C sources -set( CMAKE_LIBRARY_PATH $ENV{OECORE_TARGET_SYSROOT}/usr/lib ) +set(CMAKE_CXX_FLAGS $ENV{CXXFLAGS} CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS $ENV{CFLAGS} CACHE STRING "" FORCE) # same flags for C sources +set(CMAKE_LDFLAGS_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE) # same flags for C sources +set(CMAKE_LIBRARY_PATH $ENV{OECORE_TARGET_SYSROOT}/usr/lib) -set( CMAKE_FIND_ROOT_PATH $ENV{OECORE_TARGET_SYSROOT} $ENV{OECORE_NATIVE_SYSROOT} ) -set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) -set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) -set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) +set(CMAKE_FIND_ROOT_PATH $ENV{OECORE_TARGET_SYSROOT} $ENV{OECORE_NATIVE_SYSROOT}) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set ( ORC_INCLUDE_DIRS $ENV{OECORE_TARGET_SYSROOT}/usr/include/orc-0.4 ) -set ( ORC_LIBRARY_DIRS $ENV{OECORE_TARGET_SYSROOT}/usr/lib ) +set(ORC_INCLUDE_DIRS $ENV{OECORE_TARGET_SYSROOT}/usr/include/orc-0.4) +set(ORC_LIBRARY_DIRS $ENV{OECORE_TARGET_SYSROOT}/usr/lib) diff --git a/cmake/cmake_uninstall.cmake.in b/cmake/cmake_uninstall.cmake.in index 9b3887185..a0004acc5 100644 --- a/cmake/cmake_uninstall.cmake.in +++ b/cmake/cmake_uninstall.cmake.in @@ -17,7 +17,7 @@ if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") -endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") +endif() file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) string(REGEX REPLACE "\n" ";" files "${files}") @@ -28,11 +28,11 @@ foreach(file ${files}) COMMAND @CMAKE_COMMAND@ -E remove \"$ENV{DESTDIR}${file}\" OUTPUT_VARIABLE rm_out RESULT_VARIABLE rm_retval - ) + ) if(NOT "${rm_retval}" STREQUAL 0) message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") - endif(NOT "${rm_retval}" STREQUAL 0) - else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + endif() + else() message(STATUS "File $ENV{DESTDIR}${file} does not exist.") - endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") -endforeach(file) + endif() +endforeach() diff --git a/conf/gnss-sdr_BDS_B1I_byte.conf b/conf/gnss-sdr_BDS_B1I_byte.conf index b513a35fe..1ec800c1e 100644 --- a/conf/gnss-sdr_BDS_B1I_byte.conf +++ b/conf/gnss-sdr_BDS_B1I_byte.conf @@ -16,7 +16,7 @@ ControlThread.wait_for_flowgraph=false ;######### SIGNAL_SOURCE CONFIG ############ SignalSource.implementation=File_Signal_Source -SignalSource.filename=/home/gnss/Documents/GNSS-Metadata-Standard/install/BdsB1IStr01.dat +SignalSource.filename=/home/dmiralles/Documents/GNSS-Metadata-Standard/install/BdsB1IStr01.dat SignalSource.item_type=byte SignalSource.sampling_frequency=25000000 SignalSource.samples=0 diff --git a/docs/changelog b/docs/changelog index 2382a4779..f9effa7d2 100644 --- a/docs/changelog +++ b/docs/changelog @@ -1,6 +1,6 @@ -## [Unreleased](https://github.com/gnss-sdr/gnss-sdr/tree/next) +## [0.0.10](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.10) -Next release will have several improvements in different dimensions, addition of new features and bug fixes: +This release has several improvements in different dimensions, addition of new features and bug fixes: ### Improvements in Accuracy: @@ -14,7 +14,7 @@ Next release will have several improvements in different dimensions, addition of - Internal Finite State Machines rewritten for improved continuity in delivering position fixes. This fixes a bug that was stalling the receiver after about six hours of continuous operation. - Redesign of the time counter for enhanced continuity. -- Improved flow graph in multisystem configurations: the receiver does not get stalled anymore if no signal is found from the first system. +- Improved flow graph in multi-system configurations: the receiver does not get stalled anymore if no signal is found from the first system. - Improved acquisition and tracking sensitivity. - Added mechanisms for Assisted GNSS, thus shortening the Time-To-First-Fix. Provision of data via XML files or via SUPL v1.0. Documented at https://gnss-sdr.org/docs/sp-blocks/global-parameters/ - Other minor bug fixes. @@ -23,7 +23,7 @@ Next release will have several improvements in different dimensions, addition of ### Improvements in Efficiency: - Added the possibility of non-blocking acquisition, which works well when using real-time data from an RF front-end. -- Improved flow graph in multiband configurations: satellites acquired in one band are immediately searched in others. +- Improved flow graph in multi-band configurations: satellites acquired in one band are immediately searched in others. - Complex local codes have been replaced by real codes, alleviating the computational burden. - New volk_gnsssdr kernels: volk_gnsssdr_16i_xn_resampler_16i_xn.h, volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h, volk_gnsssdr_32f_xn_resampler_32f_xn.h, volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h - Some AVX2 implementations added to the volk_gnsssdr library. @@ -64,13 +64,14 @@ Next release will have several improvements in different dimensions, addition of ### Improvements in Maintainability: -- Setup of a Continuous Integration system that checks building and runs QA code in a wide range of GNU/Linux distributions (ArchLinux, CentOS, Debian, Fedora, OpenSUSE, Ubuntu) and releases. See https://gitlab.com/gnss-sdr/gnss-sdr +- Setup of a Continuous Integration system that checks building and runs QA code in a wide range of GNU/Linux distributions (Arch Linux, CentOS, Debian, Fedora, OpenSUSE, Ubuntu) and releases. See https://gitlab.com/gnss-sdr/gnss-sdr - Creation of multi-system processing blocks, drastically reducing code duplication and maintainability time. - Automated code formatting with clang-format. This tool is widely available and easy to integrate into many code editors, and it also can be used from the command line. It cuts time spent on adhering to the project's code formatting style. - Improvement in C++ usage: C-style casts have been replaced by C++ casts. C-style casts are difficult to search for. C++ casts provide compile time checking ability and express programmers' intent better, so they are safer and clearer. - Improvement in C++ usage: The override special identifier is now used when overriding a virtual function. This helps the compiler to check for type changes in the base class, making the detection of errors easier. - Improvement in C++ usage: A number of unused includes have been removed. Order of includes set to: local (in-source) headers, then library headers, then system headers. This helps to detect missing includes. - Improvement in C++ usage: Enhanced const correctness. Misuses of those variables are detected by the compiler. +- Improved code with clang-tidy and generation of a compile_commands.json file containing the exact compiler calls for all translation units of the project in machine-readable form if clang-tidy is detected. - Applied some style rules to CMake scripts. - Minimal versions of dependencies identified and detected. @@ -83,13 +84,13 @@ Next release will have several improvements in different dimensions, addition of - The software builds with C++11, C++14 and C++17 standards. - The software can now be built using GCC >= 4.7.2 or LLVM/Clang >= 3.4.0 compilers on GNU/Linux, and with Clang/AppleClang on MacOS. - The Ninja build system can be used in replacement of make. -- The volk_gnsssdr library can be built using Python 2.7 or Python 3.6. +- The volk_gnsssdr library can be built using Python 2.7+ or Python 3.6+. - The volk_gnsssdr library is now ready for AArch64 NEON instructions. -- Ready for GNU Radio 3.8 C++ API (as per current master branch of GNU Radio upstream repository). - Improved detection of required and optional dependencies in many GNU/Linux distributions and processor architectures. - Improvement in C++ usage: The library has been replaced by the more modern and portable (except for the interaction with RTKLIB). - Improvement in C++ usage: The library has been replaced by the more modern and portable for file handling. - Improvement in C++ usage: C++ libraries preferred over C libraries (e.g., instead of , instead of ). +- Fix compatibility with Boost 1.67 (closes Debian bug #911882 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911882) - Fixes required by Debian packaging. - Fixes required by Macports packaging. - A downside in portability: BLAS and LAPACK libraries are now required even in ARM devices. @@ -100,7 +101,7 @@ Next release will have several improvements in different dimensions, addition of ### Improvements in Reliability: - Introduced 3 new Input Filter implementations for pulsed and narrowband interference mitigation: `Pulse_Blanking_Filter`, `Notch_Filter` and `Notch_Filter_Lite`. Documented in https://gnss-sdr.org/docs/sp-blocks/input-filter/ -- Improved flow graph stabiliy. +- Improved flow graph stability. - Introduction of high-integrity C++ practices into the source code and included in the coding style guide. See https://gnss-sdr.org/coding-style/ - Fixed a number of defects detected by Coverity Scan. - Improvement of QA code and addition of a number of new tests. Documented at https://gnss-sdr.org/docs/tutorials/testing-software-receiver-2/ @@ -125,7 +126,12 @@ Next release will have several improvements in different dimensions, addition of ### Improvements in Testability: - Several Unit Tests added. Documentation of testing concepts and available tests at https://gnss-sdr.org/docs/tutorials/testing-software-receiver/ +- New extra unit test AcquisitionPerformanceTest checks the performance of Acquisition blocks. +- New extra unit test TrackingPullInTest checks acquisition to tracking transition. +- New extra unit test HybridObservablesTest checks the generation of observables. +- Improved system testing: position_test accepts a wide list of parameters and can be used with external files. - Receiver channels can now be fixed to a given satellite. +- Testing integrated in a Continuous Reproducibility system (see above). - Improved CTest support in volk_gnsssdr. @@ -141,6 +147,7 @@ Next release will have several improvements in different dimensions, addition of - Added a changelog, a code of conduct, a contributing guide and a pull-request template in the source tree. - Added colors to the commandline user interface. - Updated manfiles. +- Updated examples of configuration files under the conf/ folder. @@ -149,7 +156,6 @@ See the definitions of concepts and metrics at https://gnss-sdr.org/design-force - ## [0.0.9](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.9) DOI: https://doi.org/10.5281/zenodo.291371 diff --git a/docs/manpage/gnss-sdr-manpage b/docs/manpage/gnss-sdr-manpage index 5ca98ccb7..90f7d1a8e 100644 --- a/docs/manpage/gnss-sdr-manpage +++ b/docs/manpage/gnss-sdr-manpage @@ -1,6 +1,6 @@ .\" Manpage for gnss\-sdr. .\" Contact carles.fernandez@cttc.es to correct errors or typos. -.TH gnss\-sdr 1 "24 Feb 2018" "0.0.9" "gnss\-sdr man page" +.TH gnss\-sdr 1 "12 Dec 2018" "0.0.10" "gnss\-sdr man page" .SH NAME \fBgnss\-sdr\fR \- GNSS Software Defined Receiver. .SH SYNOPSIS diff --git a/docs/xml-schemas/cnav_ephemeris_map.xsd b/docs/xml-schemas/cnav_ephemeris_map.xsd index 139756f36..2ada62f13 100644 --- a/docs/xml-schemas/cnav_ephemeris_map.xsd +++ b/docs/xml-schemas/cnav_ephemeris_map.xsd @@ -15,15 +15,15 @@ - + - - - + + + diff --git a/docs/xml-schemas/ephemeris_map.xsd b/docs/xml-schemas/ephemeris_map.xsd index f76c5e900..4290bbed5 100644 --- a/docs/xml-schemas/ephemeris_map.xsd +++ b/docs/xml-schemas/ephemeris_map.xsd @@ -15,9 +15,9 @@ - - - + + + @@ -25,8 +25,8 @@ - - + + @@ -41,7 +41,7 @@ - + diff --git a/docs/xml-schemas/gal_almanac_map.xsd b/docs/xml-schemas/gal_almanac_map.xsd index 390609c58..8512bfc64 100644 --- a/docs/xml-schemas/gal_almanac_map.xsd +++ b/docs/xml-schemas/gal_almanac_map.xsd @@ -12,10 +12,10 @@ - + - + diff --git a/docs/xml-schemas/gal_ephemeris_map.xsd b/docs/xml-schemas/gal_ephemeris_map.xsd index bf6c5ea20..fe307412e 100644 --- a/docs/xml-schemas/gal_ephemeris_map.xsd +++ b/docs/xml-schemas/gal_ephemeris_map.xsd @@ -1,4 +1,4 @@ -< + @@ -30,25 +30,25 @@ - - + + - - + + - + - - + + - - + + diff --git a/docs/xml-schemas/gal_iono_model.xsd b/docs/xml-schemas/gal_iono_model.xsd index dc0219273..69b22aad4 100644 --- a/docs/xml-schemas/gal_iono_model.xsd +++ b/docs/xml-schemas/gal_iono_model.xsd @@ -13,8 +13,8 @@ - - + + diff --git a/docs/xml-schemas/gal_utc_model.xsd b/docs/xml-schemas/gal_utc_model.xsd index a589f94fb..3cc38107c 100644 --- a/docs/xml-schemas/gal_utc_model.xsd +++ b/docs/xml-schemas/gal_utc_model.xsd @@ -7,12 +7,12 @@ - - - - - - + + + + + + diff --git a/docs/xml-schemas/utc_model.xsd b/docs/xml-schemas/utc_model.xsd index 44005a628..c02015ead 100644 --- a/docs/xml-schemas/utc_model.xsd +++ b/docs/xml-schemas/utc_model.xsd @@ -8,12 +8,12 @@ - + - + - + diff --git a/src/algorithms/PVT/adapters/rtklib_pvt.cc b/src/algorithms/PVT/adapters/rtklib_pvt.cc index 92bc29778..bf8dfc9dc 100644 --- a/src/algorithms/PVT/adapters/rtklib_pvt.cc +++ b/src/algorithms/PVT/adapters/rtklib_pvt.cc @@ -30,11 +30,11 @@ #include "rtklib_pvt.h" -#include "pvt_conf.h" #include "configuration_interface.h" #include "gnss_sdr_flags.h" -#include +#include "pvt_conf.h" #include +#include #include #include #if OLD_BOOST @@ -49,30 +49,10 @@ namespace bc = boost::integer; using google::LogMessage; -bool RtklibPvt::get_latest_PVT(double* longitude_deg, - double* latitude_deg, - double* height_m, - double* ground_speed_kmh, - double* course_over_ground_deg, - time_t* UTC_time) -{ - return pvt_->get_latest_PVT(longitude_deg, - latitude_deg, - height_m, - ground_speed_kmh, - course_over_ground_deg, - UTC_time); -} - -void RtklibPvt::clear_ephemeris() -{ - pvt_->clear_ephemeris(); -} - RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, - unsigned int out_streams) : role_(role), + unsigned int out_streams) : role_(std::move(role)), in_streams_(in_streams), out_streams_(out_streams) { @@ -100,27 +80,27 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, // RINEX version pvt_output_parameters.rinex_version = configuration->property(role + ".rinex_version", 3); - if (FLAGS_RINEX_version.compare("3.01") == 0) + if (FLAGS_RINEX_version == "3.01") { pvt_output_parameters.rinex_version = 3; } - else if (FLAGS_RINEX_version.compare("3.02") == 0) + else if (FLAGS_RINEX_version == "3.02") { pvt_output_parameters.rinex_version = 3; } - else if (FLAGS_RINEX_version.compare("3") == 0) + else if (FLAGS_RINEX_version == "3") { pvt_output_parameters.rinex_version = 3; } - else if (FLAGS_RINEX_version.compare("2.11") == 0) + else if (FLAGS_RINEX_version == "2.11") { pvt_output_parameters.rinex_version = 2; } - else if (FLAGS_RINEX_version.compare("2.10") == 0) + else if (FLAGS_RINEX_version == "2.10") { pvt_output_parameters.rinex_version = 2; } - else if (FLAGS_RINEX_version.compare("2") == 0) + else if (FLAGS_RINEX_version == "2") { pvt_output_parameters.rinex_version = 2; } @@ -252,16 +232,16 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count != 0)) pvt_output_parameters.type_of_receiver = 54; if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0) && (bds_B1_count != 0)) pvt_output_parameters.type_of_receiver = 55; - //RTKLIB PVT solver options + // RTKLIB PVT solver options // Settings 1 int positioning_mode = -1; std::string default_pos_mode("Single"); std::string positioning_mode_str = configuration->property(role + ".positioning_mode", default_pos_mode); // (PMODE_XXX) see src/algorithms/libs/rtklib/rtklib.h - if (positioning_mode_str.compare("Single") == 0) positioning_mode = PMODE_SINGLE; - if (positioning_mode_str.compare("Static") == 0) positioning_mode = PMODE_STATIC; - if (positioning_mode_str.compare("Kinematic") == 0) positioning_mode = PMODE_KINEMA; - if (positioning_mode_str.compare("PPP_Static") == 0) positioning_mode = PMODE_PPP_STATIC; - if (positioning_mode_str.compare("PPP_Kinematic") == 0) positioning_mode = PMODE_PPP_KINEMA; + if (positioning_mode_str == "Single") positioning_mode = PMODE_SINGLE; + if (positioning_mode_str == "Static") positioning_mode = PMODE_STATIC; + if (positioning_mode_str == "Kinematic") positioning_mode = PMODE_KINEMA; + if (positioning_mode_str == "PPP_Static") positioning_mode = PMODE_PPP_STATIC; + if (positioning_mode_str == "PPP_Kinematic") positioning_mode = PMODE_PPP_KINEMA; if (positioning_mode == -1) { @@ -306,12 +286,12 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, std::string default_iono_model("OFF"); std::string iono_model_str = configuration->property(role + ".iono_model", default_iono_model); /* (IONOOPT_XXX) see src/algorithms/libs/rtklib/rtklib.h */ int iono_model = -1; - if (iono_model_str.compare("OFF") == 0) iono_model = IONOOPT_OFF; - if (iono_model_str.compare("Broadcast") == 0) iono_model = IONOOPT_BRDC; - if (iono_model_str.compare("SBAS") == 0) iono_model = IONOOPT_SBAS; - if (iono_model_str.compare("Iono-Free-LC") == 0) iono_model = IONOOPT_IFLC; - if (iono_model_str.compare("Estimate_STEC") == 0) iono_model = IONOOPT_EST; - if (iono_model_str.compare("IONEX") == 0) iono_model = IONOOPT_TEC; + if (iono_model_str == "OFF") iono_model = IONOOPT_OFF; + if (iono_model_str == "Broadcast") iono_model = IONOOPT_BRDC; + if (iono_model_str == "SBAS") iono_model = IONOOPT_SBAS; + if (iono_model_str == "Iono-Free-LC") iono_model = IONOOPT_IFLC; + if (iono_model_str == "Estimate_STEC") iono_model = IONOOPT_EST; + if (iono_model_str == "IONEX") iono_model = IONOOPT_TEC; if (iono_model == -1) { //warn user and set the default @@ -325,11 +305,11 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, std::string default_trop_model("OFF"); int trop_model = -1; std::string trop_model_str = configuration->property(role + ".trop_model", default_trop_model); /* (TROPOPT_XXX) see src/algorithms/libs/rtklib/rtklib.h */ - if (trop_model_str.compare("OFF") == 0) trop_model = TROPOPT_OFF; - if (trop_model_str.compare("Saastamoinen") == 0) trop_model = TROPOPT_SAAS; - if (trop_model_str.compare("SBAS") == 0) trop_model = TROPOPT_SBAS; - if (trop_model_str.compare("Estimate_ZTD") == 0) trop_model = TROPOPT_EST; - if (trop_model_str.compare("Estimate_ZTD_Grad") == 0) trop_model = TROPOPT_ESTG; + if (trop_model_str == "OFF") trop_model = TROPOPT_OFF; + if (trop_model_str == "Saastamoinen") trop_model = TROPOPT_SAAS; + if (trop_model_str == "SBAS") trop_model = TROPOPT_SBAS; + if (trop_model_str == "Estimate_ZTD") trop_model = TROPOPT_EST; + if (trop_model_str == "Estimate_ZTD_Grad") trop_model = TROPOPT_ESTG; if (trop_model == -1) { //warn user and set the default @@ -376,11 +356,11 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, std::string default_gps_ar("Continuous"); std::string integer_ambiguity_resolution_gps_str = configuration->property(role + ".AR_GPS", default_gps_ar); /* Integer Ambiguity Resolution mode for GPS (0:off,1:continuous,2:instantaneous,3:fix and hold,4:ppp-ar) */ int integer_ambiguity_resolution_gps = -1; - if (integer_ambiguity_resolution_gps_str.compare("OFF") == 0) integer_ambiguity_resolution_gps = ARMODE_OFF; - if (integer_ambiguity_resolution_gps_str.compare("Continuous") == 0) integer_ambiguity_resolution_gps = ARMODE_CONT; - if (integer_ambiguity_resolution_gps_str.compare("Instantaneous") == 0) integer_ambiguity_resolution_gps = ARMODE_INST; - if (integer_ambiguity_resolution_gps_str.compare("Fix-and-Hold") == 0) integer_ambiguity_resolution_gps = ARMODE_FIXHOLD; - if (integer_ambiguity_resolution_gps_str.compare("PPP-AR") == 0) integer_ambiguity_resolution_gps = ARMODE_PPPAR; + if (integer_ambiguity_resolution_gps_str == "OFF") integer_ambiguity_resolution_gps = ARMODE_OFF; + if (integer_ambiguity_resolution_gps_str == "Continuous") integer_ambiguity_resolution_gps = ARMODE_CONT; + if (integer_ambiguity_resolution_gps_str == "Instantaneous") integer_ambiguity_resolution_gps = ARMODE_INST; + if (integer_ambiguity_resolution_gps_str == "Fix-and-Hold") integer_ambiguity_resolution_gps = ARMODE_FIXHOLD; + if (integer_ambiguity_resolution_gps_str == "PPP-AR") integer_ambiguity_resolution_gps = ARMODE_PPPAR; if (integer_ambiguity_resolution_gps == -1) { //warn user and set the default @@ -410,7 +390,7 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration, double min_ratio_to_fix_ambiguity = configuration->property(role + ".min_ratio_to_fix_ambiguity", 3.0); /* Set the integer ambiguity validation threshold for ratioโ€test, which uses the ratio of squared residuals of the best integer vector to the secondโ€best vector. */ - int min_lock_to_fix_ambiguity = configuration->property(role + ".min_lock_to_fix_ambiguity", 0); /* Set the minimum lock count to fix integer ambiguity. + int min_lock_to_fix_ambiguity = configuration->property(role + ".min_lock_to_fix_ambiguity", 0); /* Set the minimum lock count to fix integer ambiguity.FLAGS_RINEX_version. If the lock count is less than the value, the ambiguity is excluded from the fixed integer vector. */ double min_elevation_to_fix_ambiguity = configuration->property(role + ".min_elevation_to_fix_ambiguity", 0.0); /* Set the minimum elevation (deg) to fix integer ambiguity. @@ -556,6 +536,28 @@ RtklibPvt::~RtklibPvt() } +bool RtklibPvt::get_latest_PVT(double* longitude_deg, + double* latitude_deg, + double* height_m, + double* ground_speed_kmh, + double* course_over_ground_deg, + time_t* UTC_time) +{ + return pvt_->get_latest_PVT(longitude_deg, + latitude_deg, + height_m, + ground_speed_kmh, + course_over_ground_deg, + UTC_time); +} + + +void RtklibPvt::clear_ephemeris() +{ + pvt_->clear_ephemeris(); +} + + std::map RtklibPvt::get_gps_ephemeris() const { return pvt_->get_gps_ephemeris_map(); diff --git a/src/algorithms/PVT/adapters/rtklib_pvt.h b/src/algorithms/PVT/adapters/rtklib_pvt.h index ed2bf7da4..41235471b 100644 --- a/src/algorithms/PVT/adapters/rtklib_pvt.h +++ b/src/algorithms/PVT/adapters/rtklib_pvt.h @@ -46,7 +46,7 @@ class RtklibPvt : public PvtInterface { public: RtklibPvt(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); @@ -94,7 +94,7 @@ public: private: rtklib_pvt_cc_sptr pvt_; - rtk_t rtk; + rtk_t rtk{}; std::string role_; unsigned int in_streams_; unsigned int out_streams_; diff --git a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_cc.cc b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_cc.cc index 21086a44d..9c36707ad 100644 --- a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_cc.cc +++ b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_cc.cc @@ -29,13 +29,13 @@ */ #include "rtklib_pvt_cc.h" +#include "display.h" #include "galileo_almanac.h" #include "galileo_almanac_helper.h" -#include "pvt_conf.h" -#include "display.h" #include "gnss_sdr_create_directory.h" -#include +#include "pvt_conf.h" #include +#include #include #include #include @@ -43,9 +43,9 @@ #include #include #include +#include #include #include -#include #if OLD_BOOST #include namespace bc = boost::math; @@ -59,7 +59,7 @@ using google::LogMessage; rtklib_pvt_cc_sptr rtklib_make_pvt_cc(uint32_t nchannels, const Pvt_Conf& conf_, - rtk_t& rtk) + const rtk_t& rtk) { return rtklib_pvt_cc_sptr(new rtklib_pvt_cc(nchannels, conf_, @@ -320,7 +320,7 @@ void rtklib_pvt_cc::clear_ephemeris() rtklib_pvt_cc::rtklib_pvt_cc(uint32_t nchannels, const Pvt_Conf& conf_, - rtk_t& rtk) : gr::sync_block("rtklib_pvt_cc", + const rtk_t& rtk) : gr::sync_block("rtklib_pvt_cc", gr::io_signature::make(nchannels, nchannels, sizeof(Gnss_Synchro)), gr::io_signature::make(0, 0, 0)) { @@ -544,7 +544,7 @@ rtklib_pvt_cc::rtklib_pvt_cc(uint32_t nchannels, { xml_base_path = p.string(); } - if (xml_base_path.compare(".") != 0) + if (xml_base_path != ".") { std::cout << "XML files will be stored at " << xml_base_path << std::endl; } @@ -566,7 +566,7 @@ rtklib_pvt_cc::rtklib_pvt_cc(uint32_t nchannels, if ((sysv_msqid = msgget(sysv_msg_key, msgflg)) == -1) { std::cout << "GNSS-SDR can not create message queues!" << std::endl; - throw new std::exception(); + throw std::exception(); } start = std::chrono::system_clock::now(); } @@ -998,7 +998,7 @@ bool rtklib_pvt_cc::send_sys_v_ttff_msg(ttff_msgbuf ttff) } -bool rtklib_pvt_cc::save_gnss_synchro_map_xml(const std::string file_name) +bool rtklib_pvt_cc::save_gnss_synchro_map_xml(const std::string& file_name) { if (gnss_observables_map.empty() == false) { @@ -1017,15 +1017,13 @@ bool rtklib_pvt_cc::save_gnss_synchro_map_xml(const std::string file_name) } return true; } - else - { + LOG(WARNING) << "Failed to save gnss_synchro, map is empty"; return false; - } } -bool rtklib_pvt_cc::load_gnss_synchro_map_xml(const std::string file_name) +bool rtklib_pvt_cc::load_gnss_synchro_map_xml(const std::string& file_name) { // load from xml (boost serialize) std::ifstream ifs; @@ -1065,10 +1063,8 @@ bool rtklib_pvt_cc::get_latest_PVT(double* longitude_deg, return true; } - else - { + return false; - } } @@ -1101,7 +1097,14 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item std::map::const_iterator tmp_eph_iter_glo_gnav = d_pvt_solver->glonass_gnav_ephemeris_map.find(in[i][epoch].PRN); std::map::const_iterator tmp_eph_iter_bds_dnav = d_pvt_solver->beidou_dnav_ephemeris_map.find(in[i][epoch].PRN); - if (((tmp_eph_iter_gps->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal).compare("1C") == 0)) or ((tmp_eph_iter_cnav->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal).compare("2S") == 0)) or ((tmp_eph_iter_gal->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal).compare("1B") == 0)) or ((tmp_eph_iter_gal->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal).compare("5X") == 0)) or ((tmp_eph_iter_glo_gnav->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal).compare("1G") == 0)) or ((tmp_eph_iter_glo_gnav->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal).compare("2G") == 0)) or ((tmp_eph_iter_cnav->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal).compare("L5") == 0)) or ((tmp_eph_iter_bds_dnav->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal).compare("B1") == 0))) + if (((tmp_eph_iter_gps->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal) == "1C")) or + ((tmp_eph_iter_cnav->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal) == "2S")) or + ((tmp_eph_iter_gal->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal) == "1B")) or + ((tmp_eph_iter_gal->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal) == "5X")) or + ((tmp_eph_iter_glo_gnav->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal) == "1G")) or + ((tmp_eph_iter_glo_gnav->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal) == "2G")) or + ((tmp_eph_iter_cnav->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal) == "L5")) or + ((tmp_eph_iter_bds_dnav->second.i_satellite_PRN == in[i][epoch].PRN) and (std::string(in[i][epoch].Signal) == "B1"))) { // store valid observables in a map. gnss_observables_map.insert(std::pair(i, in[i][epoch])); @@ -1157,7 +1160,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item if (gnss_observables_map.empty() == false) { double current_RX_time = gnss_observables_map.begin()->second.RX_time; - uint32_t current_RX_time_ms = static_cast(current_RX_time * 1000.0); + auto current_RX_time_ms = static_cast(current_RX_time * 1000.0); if (current_RX_time_ms % d_output_rate_ms == 0) { flag_compute_pvt_output = true; @@ -1552,6 +1555,16 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item b_rinex_header_written = true; // do not write header anymore } break; + case 33: // L1+E1+E5a + if ((gps_ephemeris_iter != d_pvt_solver->gps_ephemeris_map.cend()) and + (galileo_ephemeris_iter != d_pvt_solver->galileo_ephemeris_map.cend())) + { + std::string gal_signal("1B 5X"); + rp->rinex_obs_header(rp->obsFile, gps_ephemeris_iter->second, galileo_ephemeris_iter->second, d_rx_time, gal_signal); + rp->rinex_nav_header(rp->navMixFile, d_pvt_solver->gps_iono, d_pvt_solver->gps_utc_model, d_pvt_solver->galileo_iono, d_pvt_solver->galileo_utc_model); + b_rinex_header_written = true; // do not write header anymore + } + break; case 50: // BDS B1I only if (beidou_dnav_ephemeris_iter != d_pvt_solver->beidou_dnav_ephemeris_map.cend()) { @@ -1559,8 +1572,8 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item rp->rinex_nav_header(rp->navFile, d_pvt_solver->beidou_dnav_iono, d_pvt_solver->beidou_dnav_utc_model); b_rinex_header_written = true; // do not write header anymore } - break; + break; default: break; } @@ -1641,6 +1654,9 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item case 32: // L1+E1+L5+E5a rp->log_rinex_nav(rp->navMixFile, d_pvt_solver->gps_ephemeris_map, d_pvt_solver->galileo_ephemeris_map); break; + case 33: // L1+E1+E5a + rp->log_rinex_nav(rp->navMixFile, d_pvt_solver->gps_ephemeris_map, d_pvt_solver->galileo_ephemeris_map); + break; case 50: // BDS B1I only rp->log_rinex_nav(rp->navFile, d_pvt_solver->beidou_dnav_ephemeris_map); break; @@ -1939,6 +1955,18 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item b_rinex_header_updated = true; // do not write header anymore } break; + case 33: // L1+E1+E5a + if ((gps_ephemeris_iter != d_pvt_solver->gps_ephemeris_map.cend()) and (galileo_ephemeris_iter != d_pvt_solver->galileo_ephemeris_map.cend())) + { + rp->log_rinex_obs(rp->obsFile, gps_ephemeris_iter->second, galileo_ephemeris_iter->second, d_rx_time, gnss_observables_map); + } + if (!b_rinex_header_updated and (d_pvt_solver->gps_utc_model.d_A0 != 0) and (d_pvt_solver->galileo_utc_model.A0_6 != 0)) + { + rp->update_obs_header(rp->obsFile, d_pvt_solver->gps_utc_model); + rp->update_nav_header(rp->navMixFile, d_pvt_solver->gps_iono, d_pvt_solver->gps_utc_model, d_pvt_solver->galileo_iono, d_pvt_solver->galileo_utc_model); + b_rinex_header_updated = true; // do not write header anymore + } + break; case 50: // BDS B1I only if (beidou_dnav_ephemeris_iter != d_pvt_solver->beidou_dnav_ephemeris_map.cend()) { @@ -1951,6 +1979,8 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item b_rinex_header_updated = true; } break; + default: + break; } } } @@ -2103,18 +2133,49 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item } } - if (flag_write_RTCM_MSM_output == true) + if (flag_write_RTCM_MSM_output and d_rtcm_MSM_rate_ms != 0) { + std::map::const_iterator gnss_observables_iter; std::map::const_iterator gal_eph_iter = d_pvt_solver->galileo_ephemeris_map.cbegin(); std::map::const_iterator gps_cnav_eph_iter = d_pvt_solver->gps_cnav_ephemeris_map.cbegin(); + int gal_channel = 0; + int gps_channel = 0; + for (gnss_observables_iter = gnss_observables_map.cbegin(); gnss_observables_iter != gnss_observables_map.cend(); gnss_observables_iter++) + { + std::string system(&gnss_observables_iter->second.System, 1); + if (gps_channel == 0) + { + if (system == "G") + { + // This is a channel with valid GPS signal + gps_cnav_eph_iter = d_pvt_solver->gps_cnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (gps_cnav_eph_iter != d_pvt_solver->gps_cnav_ephemeris_map.cend()) { - d_rtcm_printer->Print_Rtcm_MSM(7, {}, gps_cnav_eph_iter->second, {}, {}, d_rx_time, gnss_observables_map, 0, 0, 0, 0, 0); + gps_channel = 1; } + } + } + if (gal_channel == 0) + { + if (system == "E") + { + gal_eph_iter = d_pvt_solver->galileo_ephemeris_map.find(gnss_observables_iter->second.PRN); if (gal_eph_iter != d_pvt_solver->galileo_ephemeris_map.cend()) + { + gal_channel = 1; + } + } + } + } + + if (gal_eph_iter != d_pvt_solver->galileo_ephemeris_map.cend() and (d_rtcm_MT1097_rate_ms != 0)) { d_rtcm_printer->Print_Rtcm_MSM(7, {}, {}, gal_eph_iter->second, {}, d_rx_time, gnss_observables_map, 0, 0, 0, 0, 0); } + if (gps_cnav_eph_iter != d_pvt_solver->gps_cnav_ephemeris_map.cend() and (d_rtcm_MT1077_rate_ms != 0)) + { + d_rtcm_printer->Print_Rtcm_MSM(7, {}, gps_cnav_eph_iter->second, {}, {}, d_rx_time, gnss_observables_map, 0, 0, 0, 0, 0); + } } break; case 14: @@ -2182,7 +2243,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item std::string system(&gnss_observables_iter->second.System, 1); if (gps_channel == 0) { - if (system.compare("G") == 0) + if (system == "G") { // This is a channel with valid GPS signal gps_eph_iter = d_pvt_solver->gps_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -2194,7 +2255,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item } if (glo_channel == 0) { - if (system.compare("R") == 0) + if (system == "R") { glonass_gnav_eph_iter = d_pvt_solver->glonass_gnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (glonass_gnav_eph_iter != d_pvt_solver->glonass_gnav_ephemeris_map.cend()) @@ -2242,7 +2303,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item std::string system(&gnss_observables_iter->second.System, 1); if (gal_channel == 0) { - if (system.compare("E") == 0) + if (system == "E") { // This is a channel with valid GPS signal gal_eph_iter = d_pvt_solver->galileo_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -2254,7 +2315,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item } if (glo_channel == 0) { - if (system.compare("R") == 0) + if (system == "R") { glonass_gnav_eph_iter = d_pvt_solver->glonass_gnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (glonass_gnav_eph_iter != d_pvt_solver->glonass_gnav_ephemeris_map.cend()) @@ -2301,7 +2362,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item std::string system(&gnss_observables_iter->second.System, 1); if (gps_channel == 0) { - if (system.compare("G") == 0) + if (system == "G") { // This is a channel with valid GPS signal gps_eph_iter = d_pvt_solver->gps_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -2313,7 +2374,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item } if (glo_channel == 0) { - if (system.compare("R") == 0) + if (system == "R") { glonass_gnav_eph_iter = d_pvt_solver->glonass_gnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (glonass_gnav_eph_iter != d_pvt_solver->glonass_gnav_ephemeris_map.cend()) @@ -2360,7 +2421,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item std::string system(&gnss_observables_iter->second.System, 1); if (gal_channel == 0) { - if (system.compare("E") == 0) + if (system == "E") { // This is a channel with valid GPS signal gal_eph_iter = d_pvt_solver->galileo_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -2372,7 +2433,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item } if (glo_channel == 0) { - if (system.compare("R") == 0) + if (system == "R") { glonass_gnav_eph_iter = d_pvt_solver->glonass_gnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (glonass_gnav_eph_iter != d_pvt_solver->glonass_gnav_ephemeris_map.cend()) @@ -2419,7 +2480,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item std::string system(&gnss_observables_iter->second.System, 1); if (gal_channel == 0) { - if (system.compare("E") == 0) + if (system == "E") { // This is a channel with valid GPS signal gal_eph_iter = d_pvt_solver->galileo_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -2431,7 +2492,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item } if (gps_channel == 0) { - if (system.compare("G") == 0) + if (system == "G") { gps_eph_iter = d_pvt_solver->gps_ephemeris_map.find(gnss_observables_iter->second.PRN); if (gps_eph_iter != d_pvt_solver->gps_ephemeris_map.cend()) @@ -2564,7 +2625,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item std::string system(&gnss_observables_iter->second.System, 1); if (gps_channel == 0) { - if (system.compare("G") == 0) + if (system == "G") { // This is a channel with valid GPS signal gps_eph_iter = d_pvt_solver->gps_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -2576,7 +2637,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item } if (gal_channel == 0) { - if (system.compare("E") == 0) + if (system == "E") { gal_eph_iter = d_pvt_solver->galileo_ephemeris_map.find(gnss_observables_iter->second.PRN); if (gal_eph_iter != d_pvt_solver->galileo_ephemeris_map.cend()) @@ -2608,7 +2669,25 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item } if (d_rtcm_MSM_rate_ms != 0) { + std::map::const_iterator gnss_observables_iter; std::map::const_iterator gal_eph_iter = d_pvt_solver->galileo_ephemeris_map.cbegin(); + int gal_channel = 0; + for (gnss_observables_iter = gnss_observables_map.cbegin(); gnss_observables_iter != gnss_observables_map.cend(); gnss_observables_iter++) + { + std::string system(&gnss_observables_iter->second.System, 1); + if (gal_channel == 0) + { + if (system == "E") + { + gal_eph_iter = d_pvt_solver->galileo_ephemeris_map.find(gnss_observables_iter->second.PRN); + if (gal_eph_iter != d_pvt_solver->galileo_ephemeris_map.cend()) + { + gal_channel = 1; + } + } + } + } + if (gal_eph_iter != d_pvt_solver->galileo_ephemeris_map.cend() and (d_rtcm_MT1097_rate_ms != 0)) { d_rtcm_printer->Print_Rtcm_MSM(7, {}, {}, gal_eph_iter->second, {}, d_rx_time, gnss_observables_map, 0, 0, 0, 0, 0); @@ -2682,7 +2761,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item std::string system(&gnss_observables_iter->second.System, 1); if (gps_channel == 0) { - if (system.compare("G") == 0) + if (system == "G") { // This is a channel with valid GPS signal gps_eph_iter = d_pvt_solver->gps_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -2694,7 +2773,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item } if (glo_channel == 0) { - if (system.compare("R") == 0) + if (system == "R") { glonass_gnav_eph_iter = d_pvt_solver->glonass_gnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (glonass_gnav_eph_iter != d_pvt_solver->glonass_gnav_ephemeris_map.cend()) @@ -2742,7 +2821,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item std::string system(&gnss_observables_iter->second.System, 1); if (gal_channel == 0) { - if (system.compare("E") == 0) + if (system == "E") { // This is a channel with valid GPS signal gal_eph_iter = d_pvt_solver->galileo_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -2754,7 +2833,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item } if (glo_channel == 0) { - if (system.compare("R") == 0) + if (system == "R") { glonass_gnav_eph_iter = d_pvt_solver->glonass_gnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (glonass_gnav_eph_iter != d_pvt_solver->glonass_gnav_ephemeris_map.cend()) @@ -2802,7 +2881,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item std::string system(&gnss_observables_iter->second.System, 1); if (gps_channel == 0) { - if (system.compare("G") == 0) + if (system == "G") { // This is a channel with valid GPS signal gps_eph_iter = d_pvt_solver->gps_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -2814,7 +2893,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item } if (glo_channel == 0) { - if (system.compare("R") == 0) + if (system == "R") { glonass_gnav_eph_iter = d_pvt_solver->glonass_gnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (glonass_gnav_eph_iter != d_pvt_solver->glonass_gnav_ephemeris_map.cend()) @@ -2863,7 +2942,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item std::string system(&gnss_observables_iter->second.System, 1); if (gal_channel == 0) { - if (system.compare("E") == 0) + if (system == "E") { // This is a channel with valid GPS signal gal_eph_iter = d_pvt_solver->galileo_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -2875,7 +2954,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item } if (glo_channel == 0) { - if (system.compare("R") == 0) + if (system == "R") { glonass_gnav_eph_iter = d_pvt_solver->glonass_gnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (glonass_gnav_eph_iter != d_pvt_solver->glonass_gnav_ephemeris_map.cend()) @@ -2923,7 +3002,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item std::string system(&gnss_observables_iter->second.System, 1); if (gps_channel == 0) { - if (system.compare("G") == 0) + if (system == "G") { // This is a channel with valid GPS signal gps_eph_iter = d_pvt_solver->gps_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -2935,7 +3014,7 @@ int rtklib_pvt_cc::work(int noutput_items, gr_vector_const_void_star& input_item } if (gal_channel == 0) { - if (system.compare("E") == 0) + if (system == "E") { gal_eph_iter = d_pvt_solver->galileo_ephemeris_map.find(gnss_observables_iter->second.PRN); if (gal_eph_iter != d_pvt_solver->galileo_ephemeris_map.cend()) diff --git a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_cc.h b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_cc.h index e624035c0..df79836c7 100644 --- a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_cc.h +++ b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_cc.h @@ -31,26 +31,26 @@ #ifndef GNSS_SDR_RTKLIB_PVT_CC_H #define GNSS_SDR_RTKLIB_PVT_CC_H -#include "gps_ephemeris.h" -#include "nmea_printer.h" -#include "kml_printer.h" -#include "gpx_printer.h" #include "geojson_printer.h" +#include "gps_ephemeris.h" +#include "gpx_printer.h" +#include "kml_printer.h" +#include "nmea_printer.h" +#include "pvt_conf.h" #include "rinex_printer.h" #include "rtcm_printer.h" -#include "pvt_conf.h" #include "rtklib_solver.h" -#include #include +#include #include -#include -#include -#include #include #include #include -#include #include +#include +#include +#include +#include class rtklib_pvt_cc; @@ -59,7 +59,7 @@ typedef boost::shared_ptr rtklib_pvt_cc_sptr; rtklib_pvt_cc_sptr rtklib_make_pvt_cc(uint32_t n_channels, const Pvt_Conf& conf_, - rtk_t& rtk); + const rtk_t& rtk); /*! * \brief This class implements a block that computes the PVT solution using the RTKLIB integrated library @@ -69,7 +69,7 @@ class rtklib_pvt_cc : public gr::sync_block private: friend rtklib_pvt_cc_sptr rtklib_make_pvt_cc(uint32_t nchannels, const Pvt_Conf& conf_, - rtk_t& rtk); + const rtk_t& rtk); void msg_handler_telemetry(pmt::pmt_t msg); @@ -131,9 +131,9 @@ private: bool send_sys_v_ttff_msg(ttff_msgbuf ttff); std::chrono::time_point start, end; - bool save_gnss_synchro_map_xml(const std::string file_name); //debug helper function + bool save_gnss_synchro_map_xml(const std::string& file_name); //debug helper function - bool load_gnss_synchro_map_xml(const std::string file_name); //debug helper function + bool load_gnss_synchro_map_xml(const std::string& file_name); //debug helper function bool d_xml_storage; std::string xml_base_path; @@ -147,7 +147,7 @@ private: public: rtklib_pvt_cc(uint32_t nchannels, const Pvt_Conf& conf_, - rtk_t& rtk); + const rtk_t& rtk); /*! * \brief Get latest set of ephemeris from PVT block diff --git a/src/algorithms/PVT/libs/CMakeLists.txt b/src/algorithms/PVT/libs/CMakeLists.txt index cd306531a..25a4c592a 100644 --- a/src/algorithms/PVT/libs/CMakeLists.txt +++ b/src/algorithms/PVT/libs/CMakeLists.txt @@ -80,8 +80,7 @@ else() ) endif() -target_link_libraries( - pvt_lib +target_link_libraries(pvt_lib rtklib_lib gnss_sdr_flags gnss_sp_libs diff --git a/src/algorithms/PVT/libs/geojson_printer.cc b/src/algorithms/PVT/libs/geojson_printer.cc index b79a4edae..7f4da17c1 100644 --- a/src/algorithms/PVT/libs/geojson_printer.cc +++ b/src/algorithms/PVT/libs/geojson_printer.cc @@ -68,7 +68,7 @@ GeoJSON_Printer::GeoJSON_Printer(const std::string& base_path) { geojson_base_path = p.string(); } - if (geojson_base_path.compare(".") != 0) + if (geojson_base_path != ".") { std::cout << "GeoJSON files will be stored at " << geojson_base_path << std::endl; } @@ -83,7 +83,7 @@ GeoJSON_Printer::~GeoJSON_Printer() } -bool GeoJSON_Printer::set_headers(std::string filename, bool time_tag_name) +bool GeoJSON_Printer::set_headers(const std::string& filename, bool time_tag_name) { boost::posix_time::ptime pt = boost::posix_time::second_clock::local_time(); tm timeinfo = boost::posix_time::to_tm(pt); @@ -140,28 +140,24 @@ bool GeoJSON_Printer::set_headers(std::string filename, bool time_tag_name) DLOG(INFO) << "GeoJSON printer writing on " << filename.c_str(); // Set iostream numeric format and precision - geojson_file.setf(geojson_file.fixed, geojson_file.floatfield); + geojson_file.setf(geojson_file.std::ofstream::fixed, geojson_file.std::ofstream::floatfield); geojson_file << std::setprecision(14); // Writing the header geojson_file << "{" << std::endl; - geojson_file << " \"type\": \"Feature\"," << std::endl; + geojson_file << R"( "type": "Feature",)" << std::endl; geojson_file << " \"properties\": {" << std::endl; - geojson_file << " \"name\": \"Locations generated by GNSS-SDR\" " << std::endl; + geojson_file << R"( "name": "Locations generated by GNSS-SDR" )" << std::endl; geojson_file << " }," << std::endl; - - geojson_file << " \"geometry\": {" << std::endl; - geojson_file << " \"type\": \"MultiPoint\"," << std::endl; + geojson_file << R"( "type": "MultiPoint",)" << std::endl; geojson_file << " \"coordinates\": [" << std::endl; return true; } - else - { - std::cout << "File " << filename_ << " cannot be saved. Wrong permissions?" << std::endl; - return false; - } + + std::cout << "File " << filename_ << " cannot be saved. Wrong permissions?" << std::endl; + return false; } @@ -171,7 +167,7 @@ bool GeoJSON_Printer::print_position(const std::shared_ptr& positi double longitude; double height; - std::shared_ptr position_ = position; + const std::shared_ptr& position_ = position; if (print_average_values == false) { @@ -200,10 +196,7 @@ bool GeoJSON_Printer::print_position(const std::shared_ptr& positi } return true; } - else - { - return false; - } + return false; } @@ -222,11 +215,7 @@ bool GeoJSON_Printer::close_file() { if (remove(filename_.c_str()) != 0) LOG(INFO) << "Error deleting temporary file"; } - return true; } - else - { - return false; - } + return false; } diff --git a/src/algorithms/PVT/libs/geojson_printer.h b/src/algorithms/PVT/libs/geojson_printer.h index 63630552c..b9bdcdb28 100644 --- a/src/algorithms/PVT/libs/geojson_printer.h +++ b/src/algorithms/PVT/libs/geojson_printer.h @@ -55,7 +55,7 @@ private: public: GeoJSON_Printer(const std::string& base_path = "."); ~GeoJSON_Printer(); - bool set_headers(std::string filename, bool time_tag_name = true); + bool set_headers(const std::string& filename, bool time_tag_name = true); bool print_position(const std::shared_ptr& position, bool print_average_values); bool close_file(); }; diff --git a/src/algorithms/PVT/libs/gpx_printer.cc b/src/algorithms/PVT/libs/gpx_printer.cc index 1861139be..7ca86052a 100644 --- a/src/algorithms/PVT/libs/gpx_printer.cc +++ b/src/algorithms/PVT/libs/gpx_printer.cc @@ -70,7 +70,7 @@ Gpx_Printer::Gpx_Printer(const std::string& base_path) { gpx_base_path = p.string(); } - if (gpx_base_path.compare(".") != 0) + if (gpx_base_path != ".") { std::cout << "GPX files will be stored at " << gpx_base_path << std::endl; } @@ -79,7 +79,7 @@ Gpx_Printer::Gpx_Printer(const std::string& base_path) } -bool Gpx_Printer::set_headers(std::string filename, bool time_tag_name) +bool Gpx_Printer::set_headers(const std::string& filename, bool time_tag_name) { boost::posix_time::ptime pt = boost::posix_time::second_clock::local_time(); tm timeinfo = boost::posix_time::to_tm(pt); @@ -134,10 +134,10 @@ bool Gpx_Printer::set_headers(std::string filename, bool time_tag_name) { DLOG(INFO) << "GPX printer writing on " << filename.c_str(); // Set iostream numeric format and precision - gpx_file.setf(gpx_file.fixed, gpx_file.floatfield); + gpx_file.setf(gpx_file.std::ofstream::fixed, gpx_file.std::ofstream::floatfield); gpx_file << std::setprecision(14); - gpx_file << "" << std::endl - << ")" << std::endl + << R"(" << std::endl; return true; } - else - { - std::cout << "File " << gpx_filename << " cannot be saved. Wrong permissions?" << std::endl; - return false; - } + std::cout << "File " << gpx_filename << " cannot be saved. Wrong permissions?" << std::endl; + return false; } @@ -164,7 +161,7 @@ bool Gpx_Printer::print_position(const std::shared_ptr& position, double height; positions_printed = true; - std::shared_ptr position_ = position; + const std::shared_ptr& position_ = position; double speed_over_ground = position_->get_speed_over_ground(); // expressed in m/s double course_over_ground = position_->get_course_over_ground(); // expressed in deg @@ -201,10 +198,7 @@ bool Gpx_Printer::print_position(const std::shared_ptr& position, << "" << std::endl; return true; } - else - { - return false; - } + return false; } @@ -218,10 +212,7 @@ bool Gpx_Printer::close_file() gpx_file.close(); return true; } - else - { - return false; - } + return false; } diff --git a/src/algorithms/PVT/libs/gpx_printer.h b/src/algorithms/PVT/libs/gpx_printer.h index d4efcf81d..27e9fe4ff 100644 --- a/src/algorithms/PVT/libs/gpx_printer.h +++ b/src/algorithms/PVT/libs/gpx_printer.h @@ -57,7 +57,7 @@ private: public: Gpx_Printer(const std::string& base_path = "."); ~Gpx_Printer(); - bool set_headers(std::string filename, bool time_tag_name = true); + bool set_headers(const std::string& filename, bool time_tag_name = true); bool print_position(const std::shared_ptr& position, bool print_average_values); bool close_file(); }; diff --git a/src/algorithms/PVT/libs/hybrid_ls_pvt.cc b/src/algorithms/PVT/libs/hybrid_ls_pvt.cc index 2bded706f..5fbc52ab8 100644 --- a/src/algorithms/PVT/libs/hybrid_ls_pvt.cc +++ b/src/algorithms/PVT/libs/hybrid_ls_pvt.cc @@ -30,11 +30,12 @@ */ #include "hybrid_ls_pvt.h" -#include "Galileo_E1.h" #include "GPS_L1_CA.h" #include "GPS_L2C.h" +#include "Galileo_E1.h" #include #include +#include using google::LogMessage; @@ -43,7 +44,7 @@ hybrid_ls_pvt::hybrid_ls_pvt(int nchannels, std::string dump_filename, bool flag { // init empty ephemeris for all the available GNSS channels d_nchannels = nchannels; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_flag_dump_enabled = flag_dump_to_file; d_galileo_current_time = 0; count_valid_position = 0; @@ -173,7 +174,7 @@ bool hybrid_ls_pvt::get_PVT(std::map gnss_observables_map, do { // 1 GPS - find the ephemeris for the current GPS SV observation. The SV PRN ID is the map key std::string sig_(gnss_observables_iter->second.Signal); - if (sig_.compare("1C") == 0) + if (sig_ == "1C") { gps_ephemeris_iter = gps_ephemeris_map.find(gnss_observables_iter->second.PRN); if (gps_ephemeris_iter != gps_ephemeris_map.end()) @@ -228,7 +229,7 @@ bool hybrid_ls_pvt::get_PVT(std::map gnss_observables_map, do DLOG(INFO) << "No ephemeris data for SV " << gnss_observables_iter->first; } } - if (sig_.compare("2S") == 0) + if (sig_ == "2S") { gps_cnav_ephemeris_iter = gps_cnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (gps_cnav_ephemeris_iter != gps_cnav_ephemeris_map.end()) @@ -333,7 +334,7 @@ bool hybrid_ls_pvt::get_PVT(std::map gnss_observables_map, do } // get time string Gregorian calendar - boost::posix_time::time_duration t = boost::posix_time::milliseconds(static_cast(utc * 1000.0)); + boost::posix_time::time_duration t = boost::posix_time::milliseconds(static_cast(utc * 1000.0)); // NOLINT(google-runtime-int) // 22 August 1999 00:00 last Galileo start GST epoch (ICD sec 5.1.2) boost::posix_time::ptime p_time(boost::gregorian::date(1999, 8, 22), t); this->set_position_UTC_time(p_time); diff --git a/src/algorithms/PVT/libs/hybrid_ls_pvt.h b/src/algorithms/PVT/libs/hybrid_ls_pvt.h index 2fe5fd9f3..8a9c2b590 100644 --- a/src/algorithms/PVT/libs/hybrid_ls_pvt.h +++ b/src/algorithms/PVT/libs/hybrid_ls_pvt.h @@ -32,12 +32,12 @@ #ifndef GNSS_SDR_HYBRID_LS_PVT_H_ #define GNSS_SDR_HYBRID_LS_PVT_H_ -#include "ls_pvt.h" -#include "galileo_navigation_message.h" -#include "gps_navigation_message.h" -#include "gps_cnav_navigation_message.h" #include "galileo_almanac.h" +#include "galileo_navigation_message.h" #include "gnss_synchro.h" +#include "gps_cnav_navigation_message.h" +#include "gps_navigation_message.h" +#include "ls_pvt.h" #include "rtklib_rtkcmn.h" #include #include diff --git a/src/algorithms/PVT/libs/kml_printer.cc b/src/algorithms/PVT/libs/kml_printer.cc index fb742b385..76018ba35 100644 --- a/src/algorithms/PVT/libs/kml_printer.cc +++ b/src/algorithms/PVT/libs/kml_printer.cc @@ -70,7 +70,7 @@ Kml_Printer::Kml_Printer(const std::string& base_path) { kml_base_path = p.string(); } - if (kml_base_path.compare(".") != 0) + if (kml_base_path != ".") { std::cout << "KML files will be stored at " << kml_base_path << std::endl; } @@ -87,7 +87,7 @@ Kml_Printer::Kml_Printer(const std::string& base_path) } -bool Kml_Printer::set_headers(std::string filename, bool time_tag_name) +bool Kml_Printer::set_headers(const std::string& filename, bool time_tag_name) { boost::posix_time::ptime pt = boost::posix_time::second_clock::local_time(); tm timeinfo = boost::posix_time::to_tm(pt); @@ -143,14 +143,14 @@ bool Kml_Printer::set_headers(std::string filename, bool time_tag_name) { DLOG(INFO) << "KML printer writing on " << filename.c_str(); // Set iostream numeric format and precision - kml_file.setf(kml_file.fixed, kml_file.floatfield); + kml_file.setf(kml_file.std::ofstream::fixed, kml_file.std::ofstream::floatfield); kml_file << std::setprecision(14); - tmp_file.setf(tmp_file.fixed, tmp_file.floatfield); + tmp_file.setf(tmp_file.std::ofstream::fixed, tmp_file.std::ofstream::floatfield); tmp_file << std::setprecision(14); - kml_file << "" << std::endl - << "" << std::endl + kml_file << R"()" << std::endl + << R"()" << std::endl << indent << "" << std::endl << indent << indent << "GNSS Track" << std::endl << indent << indent << "& position, positions_printed = true; - std::shared_ptr position_ = position; + const std::shared_ptr& position_ = position; double speed_over_ground = position_->get_speed_over_ground(); // expressed in m/s double course_over_ground = position_->get_course_over_ground(); // expressed in deg @@ -282,10 +279,7 @@ bool Kml_Printer::print_position(const std::shared_ptr& position, return true; } - else - { - return false; - } + return false; } @@ -319,10 +313,7 @@ bool Kml_Printer::close_file() return true; } - else - { - return false; - } + return false; } diff --git a/src/algorithms/PVT/libs/kml_printer.h b/src/algorithms/PVT/libs/kml_printer.h index 27225df7a..7909ad619 100644 --- a/src/algorithms/PVT/libs/kml_printer.h +++ b/src/algorithms/PVT/libs/kml_printer.h @@ -60,7 +60,7 @@ private: public: Kml_Printer(const std::string& base_path = std::string(".")); ~Kml_Printer(); - bool set_headers(std::string filename, bool time_tag_name = true); + bool set_headers(const std::string& filename, bool time_tag_name = true); bool print_position(const std::shared_ptr& position, bool print_average_values); bool close_file(); }; diff --git a/src/algorithms/PVT/libs/ls_pvt.cc b/src/algorithms/PVT/libs/ls_pvt.cc index 77e2c69a9..9077dcd68 100644 --- a/src/algorithms/PVT/libs/ls_pvt.cc +++ b/src/algorithms/PVT/libs/ls_pvt.cc @@ -44,6 +44,7 @@ Ls_Pvt::Ls_Pvt() : Pvt_Solution() { } + arma::vec Ls_Pvt::bancroftPos(const arma::mat& satpos, const arma::vec& obs) { // BANCROFT Calculation of preliminary coordinates for a GPS receiver based on pseudoranges @@ -233,9 +234,9 @@ arma::vec Ls_Pvt::leastSquarePos(const arma::mat& satpos, const arma::vec& obs, Rot_X = Ls_Pvt::rotateSatellite(traveltime, X.col(i)); //armadillo //--- Find DOA and range of satellites - double* azim = 0; - double* elev = 0; - double* dist = 0; + double* azim = nullptr; + double* elev = nullptr; + double* dist = nullptr; topocent(azim, elev, dist, pos.subvec(0, 2), Rot_X - pos.subvec(0, 2)); if (traveltime < 0.1 && nmbOfSatellites > 3) diff --git a/src/algorithms/PVT/libs/nmea_printer.cc b/src/algorithms/PVT/libs/nmea_printer.cc index 7253b9f79..2470b1819 100644 --- a/src/algorithms/PVT/libs/nmea_printer.cc +++ b/src/algorithms/PVT/libs/nmea_printer.cc @@ -1,5 +1,5 @@ /*! - * \file kml_printer.cc + * \file nmea_printer.cc * \brief Implementation of a NMEA 2.1 printer for GNSS-SDR * This class provides a implementation of a subset of the NMEA-0183 standard for interfacing * marine electronic devices as defined by the National Marine Electronics Association (NMEA). @@ -48,7 +48,7 @@ using google::LogMessage; -Nmea_Printer::Nmea_Printer(std::string filename, bool flag_nmea_output_file, bool flag_nmea_tty_port, std::string nmea_dump_devname, const std::string& base_path) +Nmea_Printer::Nmea_Printer(const std::string& filename, bool flag_nmea_output_file, bool flag_nmea_tty_port, std::string nmea_dump_devname, const std::string& base_path) { nmea_base_path = base_path; d_flag_nmea_output_file = flag_nmea_output_file; @@ -79,7 +79,7 @@ Nmea_Printer::Nmea_Printer(std::string filename, bool flag_nmea_output_file, boo nmea_base_path = p.string(); } - if ((nmea_base_path.compare(".") != 0) and (d_flag_nmea_output_file == true)) + if ((nmea_base_path != ".") and (d_flag_nmea_output_file == true)) { std::cout << "NMEA files will be stored at " << nmea_base_path << std::endl; } @@ -99,10 +99,10 @@ Nmea_Printer::Nmea_Printer(std::string filename, bool flag_nmea_output_file, boo } } - nmea_devname = nmea_dump_devname; + nmea_devname = std::move(nmea_dump_devname); if (flag_nmea_tty_port == true) { - nmea_dev_descriptor = init_serial(nmea_devname.c_str()); + nmea_dev_descriptor = init_serial(nmea_devname); if (nmea_dev_descriptor != -1) { DLOG(INFO) << "NMEA printer writing on " << nmea_devname.c_str(); @@ -126,20 +126,22 @@ Nmea_Printer::~Nmea_Printer() } -int Nmea_Printer::init_serial(std::string serial_device) +int Nmea_Printer::init_serial(const std::string& serial_device) { /*! * Opens the serial device and sets the default baud rate for a NMEA transmission (9600,8,N,1) */ int fd = 0; - struct termios options; + struct termios options + { + }; int64_t BAUD; int64_t DATABITS; int64_t STOPBITS; int64_t PARITYON; int64_t PARITY; - fd = open(serial_device.c_str(), O_RDWR | O_NOCTTY | O_NDELAY); + fd = open(serial_device.c_str(), O_RDWR | O_NOCTTY | O_NDELAY | O_CLOEXEC); if (fd == -1) return fd; // failed to open TTY port if (fcntl(fd, F_SETFL, 0) == -1) LOG(INFO) << "Error enabling direct I/O"; // clear all flags on descriptor, enable direct I/O @@ -246,9 +248,9 @@ char Nmea_Printer::checkSum(std::string sentence) { char check = 0; // iterate over the string, XOR each byte with the total sum: - for (unsigned int c = 0; c < sentence.length(); c++) + for (char c : sentence) { - check = char(check ^ sentence.at(c)); + check = char(check ^ c); } // return the result return check; diff --git a/src/algorithms/PVT/libs/nmea_printer.h b/src/algorithms/PVT/libs/nmea_printer.h index b2f961756..c73ef91ff 100644 --- a/src/algorithms/PVT/libs/nmea_printer.h +++ b/src/algorithms/PVT/libs/nmea_printer.h @@ -53,12 +53,12 @@ public: /*! * \brief Default constructor. */ - Nmea_Printer(std::string filename, bool flag_nmea_output_file, bool flag_nmea_tty_port, std::string nmea_dump_filename, const std::string& base_path = "."); + Nmea_Printer(const std::string& filename, bool flag_nmea_output_file, bool flag_nmea_tty_port, std::string nmea_dump_devname, const std::string& base_path = "."); /*! * \brief Print NMEA PVT and satellite info to the initialized device */ - bool Print_Nmea_Line(const std::shared_ptr& position, bool print_average_values); + bool Print_Nmea_Line(const std::shared_ptr& pvt_data, bool print_average_values); /*! * \brief Default destructor. @@ -72,7 +72,7 @@ private: std::string nmea_devname; int nmea_dev_descriptor; // NMEA serial device descriptor (i.e. COM port) std::shared_ptr d_PVT_data; - int init_serial(std::string serial_device); //serial port control + int init_serial(const std::string& serial_device); //serial port control void close_serial(); std::string get_GPGGA(); // fix data std::string get_GPGSV(); // satellite data diff --git a/src/algorithms/PVT/libs/pvt_conf.h b/src/algorithms/PVT/libs/pvt_conf.h index 1719863e1..f5e9af10e 100644 --- a/src/algorithms/PVT/libs/pvt_conf.h +++ b/src/algorithms/PVT/libs/pvt_conf.h @@ -33,8 +33,8 @@ #include #include -#include #include +#include class Pvt_Conf { diff --git a/src/algorithms/PVT/libs/pvt_solution.cc b/src/algorithms/PVT/libs/pvt_solution.cc index 6071f38b0..b1366a751 100644 --- a/src/algorithms/PVT/libs/pvt_solution.cc +++ b/src/algorithms/PVT/libs/pvt_solution.cc @@ -188,7 +188,7 @@ int Pvt_Solution::tropo(double *ddr_m, double sinel, double hsta_km, double p_mb double b; double rtop; - while (1) + while (true) { rtop = pow((a_e + htop), 2) - pow((a_e + hsta_km), 2) * (1 - pow(sinel, 2)); diff --git a/src/algorithms/PVT/libs/pvt_solution.h b/src/algorithms/PVT/libs/pvt_solution.h index bfdc217b7..116cd771e 100644 --- a/src/algorithms/PVT/libs/pvt_solution.h +++ b/src/algorithms/PVT/libs/pvt_solution.h @@ -33,9 +33,9 @@ #define GNSS_SDR_PVT_SOLUTION_H_ +#include #include #include -#include const unsigned int PVT_MAX_CHANNELS = 90; const unsigned int PVT_MAX_PRN = 127; // 126 is SBAS diff --git a/src/algorithms/PVT/libs/rinex_printer.cc b/src/algorithms/PVT/libs/rinex_printer.cc index 3011b1dfc..7f5d9a43a 100644 --- a/src/algorithms/PVT/libs/rinex_printer.cc +++ b/src/algorithms/PVT/libs/rinex_printer.cc @@ -29,21 +29,21 @@ */ #include "rinex_printer.h" -#include #include #include #include +#include #include // for create_directories, exists #include // for path, operator<< #include // for filesystem #include -#include // for getlogin_r() #include // for min and max #include // for floor #include // for getenv() #include #include #include +#include // for getlogin_r() #include #include @@ -78,7 +78,7 @@ Rinex_Printer::Rinex_Printer(int32_t conf_version, const std::string& base_path) { base_rinex_path = p.string(); } - if (base_rinex_path.compare(".") != 0) + if (base_rinex_path != ".") { std::cout << "RINEX files will be stored at " << base_rinex_path << std::endl; } @@ -265,7 +265,7 @@ void Rinex_Printer::lengthCheck(const std::string& line) } -std::string Rinex_Printer::createFilename(std::string type) +std::string Rinex_Printer::createFilename(const std::string& type) { const std::string stationName = "GSDR"; // 4-character station name designator boost::gregorian::date today = boost::gregorian::day_clock::local_day(); @@ -379,7 +379,7 @@ std::string Rinex_Printer::getLocalTime() if (version == 2) { int32_t day = pt_tm.tm_mday; - line += Rinex_Printer::rightJustify(boost::lexical_cast(day), 2); + line += Rinex_Printer::rightJustify(std::to_string(day), 2); line += std::string("-"); std::map months; @@ -398,7 +398,7 @@ std::string Rinex_Printer::getLocalTime() line += months[pt_tm.tm_mon]; line += std::string("-"); - line += boost::lexical_cast(pt_tm.tm_year - 100); + line += std::to_string(pt_tm.tm_year - 100); line += std::string(1, ' '); line += strmHour.str(); line += std::string(":"); @@ -481,8 +481,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Glonass_Gnav_Utc_M line += std::string(1, ' '); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_c, 16, 2), 17); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -494,8 +494,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Glonass_Gnav_Utc_M line += std::string(1, ' '); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_gps, 16, 2), 17); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -602,8 +602,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_Iono& gps_iono line += std::string(1, ' '); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_c, 16, 2), 17); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -615,8 +615,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_Iono& gps_iono line += std::string(1, ' '); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_gps, 16, 2), 17); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -627,8 +627,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_Iono& gps_iono line += std::string("GPUT"); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(gps_utc_model.d_A0, 16, 2), 18); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(gps_utc_model.d_A1, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_t_OT), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_WN_T + 1024), 5); // valid until 2019 + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_t_OT), 7); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_WN_T + 1024), 5); // valid until 2019 line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -637,10 +637,10 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_Iono& gps_iono // -------- Line 6 leap seconds // For leap second information, see http://www.endruntechnologies.com/leap.htm line.clear(); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_DeltaT_LS), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_DeltaT_LSF), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_WN_LSF), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_DN), 6); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_DeltaT_LS), 6); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_DeltaT_LSF), 6); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_WN_LSF), 6); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_DN), 6); line += std::string(36, ' '); line += Rinex_Printer::leftJustify("LEAP SECONDS", 20); Rinex_Printer::lengthCheck(line); @@ -726,8 +726,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_CNAV_Iono& gps line += std::string(1, ' '); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_c, 16, 2), 17); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -739,8 +739,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_CNAV_Iono& gps line += std::string(1, ' '); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_gps, 16, 2), 17); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -751,8 +751,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_CNAV_Iono& gps line += std::string("GPUT"); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(gps_utc_model.d_A0, 16, 2), 18); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(gps_utc_model.d_A1, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_t_OT), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_WN_T + 1024), 5); // valid until 2019 + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_t_OT), 7); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_WN_T + 1024), 5); // valid until 2019 line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -761,10 +761,10 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_CNAV_Iono& gps // -------- Line 6 leap seconds // For leap second information, see http://www.endruntechnologies.com/leap.htm line.clear(); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_DeltaT_LS), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_DeltaT_LSF), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_WN_LSF), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_DN), 6); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_DeltaT_LS), 6); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_DeltaT_LSF), 6); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_WN_LSF), 6); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_DN), 6); line += std::string(36, ' '); line += Rinex_Printer::leftJustify("LEAP SECONDS", 20); Rinex_Printer::lengthCheck(line); @@ -852,8 +852,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Galileo_Iono& gali line += std::string("GAUT"); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A0_6, 16, 2), 18); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A1_6, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.t0t_6), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.WNot_6), 5); + line += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.t0t_6), 7); + line += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.WNot_6), 5); line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -865,8 +865,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Galileo_Iono& gali line += std::string(1, ' '); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_c, 16, 2), 17); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -875,10 +875,10 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Galileo_Iono& gali // -------- Line 6 leap seconds // For leap second information, see http://www.endruntechnologies.com/leap.htm line.clear(); - line += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.Delta_tLS_6), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.Delta_tLSF_6), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.WN_LSF_6), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.DN_6), 6); + line += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.Delta_tLS_6), 6); + line += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.Delta_tLSF_6), 6); + line += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.WN_LSF_6), 6); + line += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.DN_6), 6); line += std::string(36, ' '); line += Rinex_Printer::leftJustify("LEAP SECONDS", 20); Rinex_Printer::lengthCheck(line); @@ -959,8 +959,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Galileo_Iono& iono line += std::string("GAUT"); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.A0_6, 16, 2), 18); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.A1_6, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.t0t_6), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.WNot_6), 5); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.t0t_6), 7); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.WNot_6), 5); line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -971,8 +971,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Galileo_Iono& iono line += std::string("GPGA"); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.A_0G_10, 16, 2), 18); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.A_1G_10, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.t_0G_10), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.WN_0G_10), 5); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.t_0G_10), 7); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.WN_0G_10), 5); line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -981,10 +981,10 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Galileo_Iono& iono // -------- Line 6 leap seconds // For leap second information, see http://www.endruntechnologies.com/leap.htm line.clear(); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.Delta_tLS_6), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.Delta_tLSF_6), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.WN_LSF_6), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.DN_6), 6); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.Delta_tLS_6), 6); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.Delta_tLSF_6), 6); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.WN_LSF_6), 6); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.DN_6), 6); line += std::string(36, ' '); line += Rinex_Printer::leftJustify("LEAP SECONDS", 20); Rinex_Printer::lengthCheck(line); @@ -1077,8 +1077,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_CNAV_Iono& ion line += std::string("GPUT"); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.d_A0, 16, 2), 18); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.d_A1, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_t_OT), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_T + 1024), 5); // valid until 2019 + line += Rinex_Printer::rightJustify(std::to_string(utc_model.d_t_OT), 7); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.i_WN_T + 1024), 5); // valid until 2019 /* if ( SBAS ) { line += string(1, ' '); @@ -1097,10 +1097,10 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_CNAV_Iono& ion // -------- Line 6 leap seconds // For leap second information, see http://www.endruntechnologies.com/leap.htm line.clear(); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LS), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LSF), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_LSF), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_DN), 6); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LS), 6); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LSF), 6); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.i_WN_LSF), 6); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.i_DN), 6); line += std::string(36, ' '); line += Rinex_Printer::leftJustify("LEAP SECONDS", 20); Rinex_Printer::lengthCheck(line); @@ -1207,8 +1207,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_CNAV_Iono& ion line += std::string("GAUT"); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A0_6, 16, 2), 18); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A1_6, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.t0t_6), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.WNot_6), 5); + line += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.t0t_6), 7); + line += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.WNot_6), 5); line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -1219,8 +1219,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_CNAV_Iono& ion line += std::string("GPUT"); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.d_A0, 16, 2), 18); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.d_A1, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_t_OT), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_T + 1024), 5); // valid until 2019 + line += Rinex_Printer::rightJustify(std::to_string(utc_model.d_t_OT), 7); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.i_WN_T + 1024), 5); // valid until 2019 line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -1229,10 +1229,10 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_CNAV_Iono& ion // -------- Line 6 leap seconds // For leap second information, see http://www.endruntechnologies.com/leap.htm line.clear(); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LS), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LSF), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_LSF), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_DN), 6); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LS), 6); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LSF), 6); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.i_WN_LSF), 6); + line += Rinex_Printer::rightJustify(std::to_string(utc_model.i_DN), 6); line += std::string(36, ' '); line += Rinex_Printer::leftJustify("LEAP SECONDS", 20); Rinex_Printer::lengthCheck(line); @@ -1503,8 +1503,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_Iono& gps_iono line += std::string("GAUT"); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A0_6, 16, 2), 18); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A1_6, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.t0t_6), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.WNot_6), 5); + line += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.t0t_6), 7); + line += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.WNot_6), 5); line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -1515,8 +1515,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_Iono& gps_iono line += std::string("GPGA"); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A_0G_10, 16, 2), 18); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A_1G_10, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.t_0G_10), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.WN_0G_10), 5); + line += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.t_0G_10), 7); + line += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.WN_0G_10), 5); line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -1527,8 +1527,8 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_Iono& gps_iono line += std::string("GPUT"); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(gps_utc_model.d_A0, 16, 2), 18); line += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(gps_utc_model.d_A1, 15, 2), 16); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_t_OT), 7); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_WN_T + 1024), 5); // valid until 2019 + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_t_OT), 7); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_WN_T + 1024), 5); // valid until 2019 line += std::string(10, ' '); line += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); Rinex_Printer::lengthCheck(line); @@ -1537,10 +1537,10 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Gps_Iono& gps_iono // -------- Line 6 leap seconds // For leap second information, see http://www.endruntechnologies.com/leap.htm line.clear(); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_DeltaT_LS), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_DeltaT_LSF), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_WN_LSF), 6); - line += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_DN), 6); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_DeltaT_LS), 6); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_DeltaT_LSF), 6); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_WN_LSF), 6); + line += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_DN), 6); line += std::string(36, ' '); line += Rinex_Printer::leftJustify("LEAP SECONDS", 20); Rinex_Printer::lengthCheck(line); @@ -1656,7 +1656,7 @@ void Rinex_Printer::rinex_nav_header(std::fstream& out, const Beidou_Dnav_Iono& line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LSF), 6); line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_LSF), 6); line += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_DN), 6); - line += std::string(36, ' '); + line += std::string(36, ' '); line += Rinex_Printer::leftJustify("LEAP SECONDS", 20); Rinex_Printer::lengthCheck(line); out << line << std::endl; @@ -1806,8 +1806,8 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Glonass_Gnav_Utc_ line_aux += std::string("GLUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_c, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); @@ -1817,8 +1817,8 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Glonass_Gnav_Utc_ line_aux += std::string("GLGP"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_gps, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); @@ -1891,8 +1891,8 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Galileo_Iono& gal line_aux += std::string("GAUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.A0_6, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.A1_6, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.t0t_6), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.WNot_6), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.t0t_6), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.WNot_6), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); @@ -1902,18 +1902,18 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Galileo_Iono& gal line_aux += std::string("GPGA"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.A_0G_10, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.A_1G_10, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.t_0G_10), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.WN_0G_10), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.t_0G_10), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.WN_0G_10), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); } else if (line_str.find("LEAP SECONDS", 59) != std::string::npos) { - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.Delta_tLS_6), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.Delta_tLSF_6), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.WN_LSF_6), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.DN_6), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.Delta_tLS_6), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.Delta_tLSF_6), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.WN_LSF_6), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.DN_6), 6); line_aux += std::string(36, ' '); line_aux += Rinex_Printer::leftJustify("LEAP SECONDS", 20); data.push_back(line_aux); @@ -1997,15 +1997,15 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_Utc_Model& ut line_aux += std::string(3, ' '); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.d_A0, 18, 2), 19); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.d_A1, 18, 2), 19); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_t_OT), 9); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_T + 1024), 9); // valid until 2019 + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_t_OT), 9); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_WN_T + 1024), 9); // valid until 2019 line_aux += std::string(1, ' '); line_aux += Rinex_Printer::leftJustify("DELTA-UTC: A0,A1,T,W", 20); data.push_back(line_aux); } else if (line_str.find("LEAP SECONDS", 59) != std::string::npos) { - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LS), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LS), 6); line_aux += std::string(54, ' '); line_aux += Rinex_Printer::leftJustify("LEAP SECONDS", 20); data.push_back(line_aux); @@ -2052,18 +2052,18 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_Utc_Model& ut line_aux += std::string("GPUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.d_A0, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.d_A1, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_t_OT), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_T + 1024), 5); // valid until 2019 + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_t_OT), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_WN_T + 1024), 5); // valid until 2019 line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); } else if (line_str.find("LEAP SECONDS", 59) != std::string::npos) { - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LS), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_DN), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LS), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_WN_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_DN), 6); line_aux += std::string(36, ' '); line_aux += Rinex_Printer::leftJustify("LEAP SECONDS", 20); data.push_back(line_aux); @@ -2148,18 +2148,18 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_CNAV_Utc_Mode line_aux += std::string("GPUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.d_A0, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.d_A1, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_t_OT), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_T + 1024), 5); // valid until 2019 + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_t_OT), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_WN_T + 1024), 5); // valid until 2019 line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); } else if (line_str.find("LEAP SECONDS", 59) != std::string::npos) { - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LS), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_DN), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LS), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_WN_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_DN), 6); line_aux += std::string(36, ' '); line_aux += Rinex_Printer::leftJustify("LEAP SECONDS", 20); data.push_back(line_aux); @@ -2256,8 +2256,8 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_CNAV_Utc_Mode line_aux += std::string("GAUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A0_6, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A1_6, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.t0t_6), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.WNot_6), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.t0t_6), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.WNot_6), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); @@ -2267,8 +2267,8 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_CNAV_Utc_Mode line_aux += std::string("GPGA"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A_0G_10, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A_1G_10, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.t_0G_10), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.WN_0G_10), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.t_0G_10), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.WN_0G_10), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); @@ -2278,18 +2278,18 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_CNAV_Utc_Mode line_aux += std::string("GPUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.d_A0, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(utc_model.d_A1, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_t_OT), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_T + 1024), 5); // valid until 2019 + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_t_OT), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_WN_T + 1024), 5); // valid until 2019 line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); } else if (line_str.find("LEAP SECONDS", 59) != std::string::npos) { - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LS), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_DN), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LS), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_WN_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_DN), 6); line_aux += std::string(36, ' '); line_aux += Rinex_Printer::leftJustify("LEAP SECONDS", 20); data.push_back(line_aux); @@ -2385,8 +2385,8 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_Iono& gps_ion line_aux += std::string("GPUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(gps_utc_model.d_A0, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(gps_utc_model.d_A1, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_t_OT), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_WN_T + 1024), 5); // valid until 2019 + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_t_OT), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_WN_T + 1024), 5); // valid until 2019 line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); @@ -2396,8 +2396,8 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_Iono& gps_ion line_aux += std::string("GAUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A0_6, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A1_6, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.t0t_6), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.WNot_6), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.t0t_6), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.WNot_6), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); @@ -2407,18 +2407,18 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_Iono& gps_ion line_aux += std::string("GPGA"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A_0G_10, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A_1G_10, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.t_0G_10), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.WN_0G_10), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.t_0G_10), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.WN_0G_10), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); } else if (line_str.find("LEAP SECONDS", 59) != std::string::npos) { - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_DeltaT_LS), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_DeltaT_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_WN_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_DN), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_DeltaT_LS), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_DeltaT_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_WN_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_DN), 6); line_aux += std::string(36, ' '); line_aux += Rinex_Printer::leftJustify("LEAP SECONDS", 20); data.push_back(line_aux); @@ -2493,8 +2493,8 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_Iono& gps_ion line_aux += std::string("GPUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(gps_utc_model.d_A0, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(gps_utc_model.d_A1, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_t_OT), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_WN_T + 1024), 5); // valid until 2019 + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_t_OT), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_WN_T + 1024), 5); // valid until 2019 line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); @@ -2504,8 +2504,8 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_Iono& gps_ion line_aux += std::string("GLUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_c, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); @@ -2515,18 +2515,18 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_Iono& gps_ion line_aux += std::string("GLGP"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_gps, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); } else if (line_str.find("LEAP SECONDS", 59) != std::string::npos) { - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_DeltaT_LS), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_DeltaT_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_WN_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_DN), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_DeltaT_LS), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_DeltaT_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_WN_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_DN), 6); line_aux += std::string(36, ' '); line_aux += Rinex_Printer::leftJustify("LEAP SECONDS", 20); data.push_back(line_aux); @@ -2601,8 +2601,8 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_CNAV_Iono& gp line_aux += std::string("GPUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(gps_utc_model.d_A0, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(gps_utc_model.d_A1, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_t_OT), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_WN_T + 1024), 5); // valid until 2019 + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_t_OT), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_WN_T + 1024), 5); // valid until 2019 line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); @@ -2612,8 +2612,8 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_CNAV_Iono& gp line_aux += std::string("GLUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_c, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); @@ -2623,18 +2623,18 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Gps_CNAV_Iono& gp line_aux += std::string("GLGP"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_gps, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); } else if (line_str.find("LEAP SECONDS", 59) != std::string::npos) { - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_DeltaT_LS), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.d_DeltaT_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_WN_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(gps_utc_model.i_DN), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_DeltaT_LS), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.d_DeltaT_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_WN_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(gps_utc_model.i_DN), 6); line_aux += std::string(36, ' '); line_aux += Rinex_Printer::leftJustify("LEAP SECONDS", 20); data.push_back(line_aux); @@ -2714,8 +2714,8 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Galileo_Iono& gal line_aux += std::string("GAUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A0_6, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(galileo_utc_model.A1_6, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.t0t_6), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.WNot_6), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.t0t_6), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.WNot_6), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); @@ -2725,18 +2725,18 @@ void Rinex_Printer::update_nav_header(std::fstream& out, const Galileo_Iono& gal line_aux += std::string("GLUT"); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(glonass_gnav_utc_model.d_tau_c, 16, 2), 18); line_aux += Rinex_Printer::rightJustify(Rinex_Printer::doub2for(0.0, 15, 2), 16); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 7); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(0.0), 5); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 7); + line_aux += Rinex_Printer::rightJustify(std::to_string(0.0), 5); line_aux += std::string(10, ' '); line_aux += Rinex_Printer::leftJustify("TIME SYSTEM CORR", 20); data.push_back(line_aux); } else if (line_str.find("LEAP SECONDS", 59) != std::string::npos) { - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.Delta_tLS_6), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.Delta_tLSF_6), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.WN_LSF_6), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.DN_6), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.Delta_tLS_6), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.Delta_tLSF_6), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.WN_LSF_6), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.DN_6), 6); line_aux += std::string(36, ' '); line_aux += Rinex_Printer::leftJustify("LEAP SECONDS", 20); data.push_back(line_aux); @@ -2885,7 +2885,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map(gps_ephemeris_iter->second.i_satellite_PRN), 2); + line += Rinex_Printer::rightJustify(std::to_string(gps_ephemeris_iter->second.i_satellite_PRN), 2); line += std::string(1, ' '); std::string year(timestring, 2, 2); line += year; @@ -2958,7 +2958,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::mapsecond.i_satellite_PRN < 10) line += std::string("0"); - line += boost::lexical_cast(gps_ephemeris_iter->second.i_satellite_PRN); + line += std::to_string(gps_ephemeris_iter->second.i_satellite_PRN); std::string year(timestring, 0, 4); line += std::string(1, ' '); line += year; @@ -3101,7 +3101,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map(gps_ephemeris_iter->second.i_code_on_L2), 18, 2); line += std::string(1, ' '); - double GPS_week_continuous_number = static_cast(gps_ephemeris_iter->second.i_GPS_week + 1024); // valid until April 7, 2019 (check http://www.colorado.edu/geography/gcraft/notes/gps/gpseow.htm) + auto GPS_week_continuous_number = static_cast(gps_ephemeris_iter->second.i_GPS_week + 1024); // valid until April 7, 2019 (check http://www.colorado.edu/geography/gcraft/notes/gps/gpseow.htm) line += Rinex_Printer::doub2for(GPS_week_continuous_number, 18, 2); line += std::string(1, ' '); line += Rinex_Printer::doub2for(static_cast(gps_ephemeris_iter->second.i_code_on_L2), 18, 2); @@ -3151,7 +3151,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::mapsecond.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN).compare("IIA")) + if (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN) == "IIA") { // Block II/IIA (Table 20-XI IS-GPS-200E ) if ((gps_ephemeris_iter->second.d_IODC > 239) && (gps_ephemeris_iter->second.d_IODC < 248)) curve_fit_interval = 8; @@ -3162,10 +3162,10 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::mapsecond.d_IODC == 757) curve_fit_interval = 98; } - if ((gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN).compare("IIR") == 0) || - (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN).compare("IIR-M") == 0) || - (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN).compare("IIF") == 0) || - (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN).compare("IIIA") == 0)) + if ((gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN) == "IIR") || + (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN) == "IIR-M") || + (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN) == "IIF") || + (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN) == "IIIA")) { // Block IIR/IIR-M/IIF/IIIA (Table 20-XII IS-GPS-200E ) if ((gps_ephemeris_iter->second.d_IODC > 239) && (gps_ephemeris_iter->second.d_IODC < 248)) curve_fit_interval = 8; @@ -3207,7 +3207,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::mapsecond.i_satellite_PRN < 10) line += std::string("0"); - line += boost::lexical_cast(gps_ephemeris_iter->second.i_satellite_PRN); + line += std::to_string(gps_ephemeris_iter->second.i_satellite_PRN); std::string year(timestring, 0, 4); line += std::string(1, ' '); line += year; @@ -3305,7 +3305,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map(gps_ephemeris_iter->second.i_GPS_week + 1024); // valid until April 7, 2019 (check http://www.colorado.edu/geography/gcraft/notes/gps/gpseow.htm) + auto GPS_week_continuous_number = static_cast(gps_ephemeris_iter->second.i_GPS_week + 1024); // valid until April 7, 2019 (check http://www.colorado.edu/geography/gcraft/notes/gps/gpseow.htm) line += Rinex_Printer::doub2for(GPS_week_continuous_number, 18, 2); line += std::string(1, ' '); line += Rinex_Printer::doub2for(my_zero, 18, 2); @@ -3364,7 +3364,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::mapsecond.i_satellite_PRN < 10) line += std::string("0"); - line += boost::lexical_cast(galileo_ephemeris_iter->second.i_satellite_PRN); + line += std::to_string(galileo_ephemeris_iter->second.i_satellite_PRN); std::string year(timestring, 0, 4); line += std::string(1, ' '); line += year; @@ -3450,7 +3450,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map(data_source_INAV), 18, 2); line += std::string(1, ' '); - double GST_week = static_cast(galileo_ephemeris_iter->second.WN_5); + auto GST_week = static_cast(galileo_ephemeris_iter->second.WN_5); double num_GST_rollovers = floor((GST_week + 1024.0) / 4096.0); double Galileo_week_continuous_number = GST_week + 1024.0 + num_GST_rollovers * 4096.0; line += Rinex_Printer::doub2for(Galileo_week_continuous_number, 18, 2); @@ -3482,11 +3482,11 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map(galileo_ephemeris_iter->second.E1B_DVS_5); + std::string E1B_DVS = std::to_string(galileo_ephemeris_iter->second.E1B_DVS_5); if (E1B_DVS == "1") LOG(WARNING) << "Navigation data without guarantee"; E1B_DVS = "0"; // *************** CHANGE THIS WHEN GALILEO SIGNAL IS VALID - std::string SVhealth_str = E5B_HS + boost::lexical_cast(galileo_ephemeris_iter->second.E5b_DVS_5) + "11" + "1" + E1B_DVS + E1B_HS + boost::lexical_cast(galileo_ephemeris_iter->second.E1B_DVS_5); + std::string SVhealth_str = E5B_HS + std::to_string(galileo_ephemeris_iter->second.E5b_DVS_5) + "11" + "1" + E1B_DVS + E1B_HS + std::to_string(galileo_ephemeris_iter->second.E1B_DVS_5); SVhealth_str = "000000000"; // *************** CHANGE THIS WHEN GALILEO SIGNAL IS VALID int32_t SVhealth = Rinex_Printer::toInt(SVhealth_str, 9); line += Rinex_Printer::doub2for(static_cast(SVhealth), 18, 2); @@ -3533,7 +3533,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map(glonass_gnav_ephemeris_iter->second.i_satellite_PRN), 2); + line += Rinex_Printer::rightJustify(std::to_string(glonass_gnav_ephemeris_iter->second.i_satellite_PRN), 2); line += std::string(1, ' '); std::string year(timestring, 2, 2); line += year; @@ -3606,7 +3606,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::mapsecond.i_satellite_PRN < 10) line += std::string("0"); - line += boost::lexical_cast(glonass_gnav_ephemeris_iter->second.i_satellite_PRN); + line += std::to_string(glonass_gnav_ephemeris_iter->second.i_satellite_PRN); std::string year(timestring, 0, 4); line += std::string(1, ' '); line += year; @@ -3892,7 +3892,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map(0), 3); // Number of satellites in list + line += Rinex_Printer::rightJustify(std::to_string(0), 3); // Number of satellites in list line += std::string(1, ' '); line += satelliteSystem["GLONASS"]; - line += Rinex_Printer::rightJustify(boost::lexical_cast(0), 2); // Slot Number + line += Rinex_Printer::rightJustify(std::to_string(0), 2); // Slot Number line += std::string(1, ' '); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0), 2); // Frequency Number + line += Rinex_Printer::rightJustify(std::to_string(0), 2); // Frequency Number line += std::string(1, ' '); line += std::string(60 - line.size(), ' '); line += Rinex_Printer::leftJustify("GLONASS SLOT / FRQ #", 20); @@ -4222,7 +4222,7 @@ void Rinex_Printer::rinex_obs_header(std::fstream& out, const Glonass_Gnav_Ephem } -void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps_eph, const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const double d_TOW_first_observation, const std::string glonass_bands) +void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps_eph, const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const double d_TOW_first_observation, const std::string& glonass_bands) { if (glonass_gnav_eph.d_m) { @@ -4525,12 +4525,12 @@ void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps // -------- GLONASS SLOT / FRQ # // TODO Need to provide system with list of all satellites and update this accordingly line.clear(); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0), 3); // Number of satellites in list + line += Rinex_Printer::rightJustify(std::to_string(0), 3); // Number of satellites in list line += std::string(1, ' '); line += satelliteSystem["GLONASS"]; - line += Rinex_Printer::rightJustify(boost::lexical_cast(0), 2); // Slot Number + line += Rinex_Printer::rightJustify(std::to_string(0), 2); // Slot Number line += std::string(1, ' '); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0), 2); // Frequency Number + line += Rinex_Printer::rightJustify(std::to_string(0), 2); // Frequency Number line += std::string(1, ' '); line += std::string(60 - line.size(), ' '); line += Rinex_Printer::leftJustify("GLONASS SLOT / FRQ #", 20); @@ -4575,7 +4575,7 @@ void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps } -void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris& gps_eph, const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const double d_TOW_first_observation, const std::string glonass_bands) +void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris& gps_eph, const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const double d_TOW_first_observation, const std::string& glonass_bands) { if (glonass_gnav_eph.d_m) { @@ -4843,12 +4843,12 @@ void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris // -------- GLONASS SLOT / FRQ # // TODO Need to provide system with list of all satellites and update this accordingly line.clear(); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0), 3); // Number of satellites in list + line += Rinex_Printer::rightJustify(std::to_string(0), 3); // Number of satellites in list line += std::string(1, ' '); line += satelliteSystem["GLONASS"]; - line += Rinex_Printer::rightJustify(boost::lexical_cast(0), 2); // Slot Number + line += Rinex_Printer::rightJustify(std::to_string(0), 2); // Slot Number line += std::string(1, ' '); - line += Rinex_Printer::rightJustify(boost::lexical_cast(0), 2); // Frequency Number + line += Rinex_Printer::rightJustify(std::to_string(0), 2); // Frequency Number line += std::string(1, ' '); line += std::string(60 - line.size(), ' '); line += Rinex_Printer::leftJustify("GLONASS SLOT / FRQ #", 20); @@ -4892,7 +4892,7 @@ void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris } -void Rinex_Printer::rinex_obs_header(std::fstream& out, const Galileo_Ephemeris& galileo_eph, const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const double d_TOW_first_observation, const std::string galileo_bands, const std::string glonass_bands) +void Rinex_Printer::rinex_obs_header(std::fstream& out, const Galileo_Ephemeris& galileo_eph, const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const double d_TOW_first_observation, const std::string& galileo_bands, const std::string& glonass_bands) { if (glonass_gnav_eph.d_m) { @@ -5470,7 +5470,7 @@ void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_Ephemeris& eph } -void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris& eph, const double d_TOW_first_observation, const std::string gps_bands) +void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris& eph, const double d_TOW_first_observation, const std::string& gps_bands) { std::string line; @@ -5715,7 +5715,7 @@ void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris } -void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_Ephemeris& eph, const Gps_CNAV_Ephemeris& eph_cnav, const double d_TOW_first_observation, const std::string gps_bands) +void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_Ephemeris& eph, const Gps_CNAV_Ephemeris& eph_cnav, const double d_TOW_first_observation, const std::string& gps_bands) { if (eph_cnav.d_i_0) { @@ -5987,7 +5987,7 @@ void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_Ephemeris& eph } -void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps_eph, const Gps_CNAV_Ephemeris& eph_cnav, const Galileo_Ephemeris& galileo_eph, const double d_TOW_first_observation, const std::string gps_bands, const std::string galileo_bands) +void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps_eph, const Gps_CNAV_Ephemeris& eph_cnav, const Galileo_Ephemeris& galileo_eph, const double d_TOW_first_observation, const std::string& gps_bands, const std::string& galileo_bands) { std::string line; version = 3; @@ -6335,7 +6335,7 @@ void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps } -void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris& eph_cnav, const Galileo_Ephemeris& galileo_eph, const double d_TOW_first_observation, const std::string gps_bands, const std::string galileo_bands) +void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris& eph_cnav, const Galileo_Ephemeris& galileo_eph, const double d_TOW_first_observation, const std::string& gps_bands, const std::string& galileo_bands) { std::string line; version = 3; @@ -6653,7 +6653,7 @@ void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris } -void Rinex_Printer::rinex_obs_header(std::fstream& out, const Galileo_Ephemeris& eph, const double d_TOW_first_observation, const std::string bands) +void Rinex_Printer::rinex_obs_header(std::fstream& out, const Galileo_Ephemeris& eph, const double d_TOW_first_observation, const std::string& bands) { std::string line; version = 3; @@ -6914,7 +6914,7 @@ void Rinex_Printer::rinex_obs_header(std::fstream& out, const Galileo_Ephemeris& } -void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps_eph, const Galileo_Ephemeris& galileo_eph, const double d_TOW_first_observation, const std::string galileo_bands) +void Rinex_Printer::rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps_eph, const Galileo_Ephemeris& galileo_eph, const double d_TOW_first_observation, const std::string& galileo_bands) { if (galileo_eph.e_1) { @@ -7466,7 +7466,7 @@ void Rinex_Printer::update_obs_header(std::fstream& out, const Gps_Utc_Model& ut if (line_str.find("TIME OF FIRST OBS", 59) != std::string::npos) // TIME OF FIRST OBS last header annotation might change in the future { data.push_back(line_str); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LS), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LS), 6); line_aux += std::string(54, ' '); line_aux += Rinex_Printer::leftJustify("LEAP SECONDS", 20); data.push_back(line_aux); @@ -7487,10 +7487,10 @@ void Rinex_Printer::update_obs_header(std::fstream& out, const Gps_Utc_Model& ut if (line_str.find("TIME OF FIRST OBS", 59) != std::string::npos) { data.push_back(line_str); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LS), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_DN), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LS), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_WN_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_DN), 6); line_aux += std::string(36, ' '); line_aux += Rinex_Printer::leftJustify("LEAP SECONDS", 20); data.push_back(line_aux); @@ -7546,10 +7546,10 @@ void Rinex_Printer::update_obs_header(std::fstream& out, const Gps_CNAV_Utc_Mode if (line_str.find("TIME OF FIRST OBS", 59) != std::string::npos) { data.push_back(line_str); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LS), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.d_DeltaT_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_WN_LSF), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(utc_model.i_DN), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LS), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.d_DeltaT_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_WN_LSF), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(utc_model.i_DN), 6); line_aux += std::string(36, ' '); line_aux += Rinex_Printer::leftJustify("LEAP SECONDS", 20); data.push_back(line_aux); @@ -7605,10 +7605,10 @@ void Rinex_Printer::update_obs_header(std::fstream& out, const Galileo_Utc_Model if (line_str.find("TIME OF FIRST OBS", 59) != std::string::npos) { data.push_back(line_str); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.Delta_tLS_6), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.Delta_tLSF_6), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.WN_LSF_6), 6); - line_aux += Rinex_Printer::rightJustify(boost::lexical_cast(galileo_utc_model.DN_6), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.Delta_tLS_6), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.Delta_tLSF_6), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.WN_LSF_6), 6); + line_aux += Rinex_Printer::rightJustify(std::to_string(galileo_utc_model.DN_6), 6); line_aux += std::string(36, ' '); line_aux += Rinex_Printer::leftJustify("LEAP SECONDS", 20); data.push_back(line_aux); @@ -7702,14 +7702,14 @@ void Rinex_Printer::update_obs_header(std::fstream& out, const Beidou_Dnav_Utc_M } -void Rinex_Printer::log_rinex_obs(std::fstream& out, const Glonass_Gnav_Ephemeris& eph, const double obs_time, const std::map& observables, const std::string glonass_band) +void Rinex_Printer::log_rinex_obs(std::fstream& out, const Glonass_Gnav_Ephemeris& eph, const double obs_time, const std::map& observables, const std::string& glonass_band) { // RINEX observations timestamps are GPS timestamps. std::string line; double int_sec = 0; // Avoid compiler warning - if (glonass_band.size()) + if (!glonass_band.empty()) { } @@ -7772,14 +7772,14 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Glonass_Gnav_Ephemeri { numSatellitesObserved++; } - line += Rinex_Printer::rightJustify(boost::lexical_cast(numSatellitesObserved), 3); + line += Rinex_Printer::rightJustify(std::to_string(numSatellitesObserved), 3); for (observables_iter = observables.cbegin(); observables_iter != observables.cend(); observables_iter++) { line += satelliteSystem["GLONASS"]; if (static_cast(observables_iter->second.PRN) < 10) line += std::string(1, '0'); - line += boost::lexical_cast(static_cast(observables_iter->second.PRN)); + line += std::to_string(static_cast(observables_iter->second.PRN)); } // Receiver clock offset (optional) //line += rightJustify(asString(clockOffset, 12), 15); @@ -7876,7 +7876,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Glonass_Gnav_Ephemeri { numSatellitesObserved++; } - line += Rinex_Printer::rightJustify(boost::lexical_cast(numSatellitesObserved), 3); + line += Rinex_Printer::rightJustify(std::to_string(numSatellitesObserved), 3); // Receiver clock offset (optional) //line += rightJustify(asString(clockOffset, 12), 15); @@ -7893,7 +7893,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Glonass_Gnav_Ephemeri lineObs.clear(); lineObs += satelliteSystem["GLONASS"]; if (static_cast(observables_iter->second.PRN) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(observables_iter->second.PRN)); + lineObs += std::to_string(static_cast(observables_iter->second.PRN)); //lineObs += std::string(2, ' '); lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Pseudorange_m, 3), 14); @@ -8048,15 +8048,15 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep { std::string system_(&observables_iter->second.System, 1); std::string sig_(observables_iter->second.Signal); - if ((system_.compare("R") == 0) && (sig_.compare("1G") == 0)) + if ((system_ == "R") && (sig_ == "1G")) { observablesR1C.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("R") == 0) && (sig_.compare("2G") == 0)) + if ((system_ == "R") && (sig_ == "2G")) { observablesR2C.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("G") == 0) && (sig_.compare("1C") == 0)) + if ((system_ == "G") && (sig_ == "1C")) { observablesG1C.insert(std::pair(observables_iter->first, observables_iter->second)); } @@ -8094,7 +8094,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep int32_t numGloSatellitesObserved = available_glo_prns.size(); int32_t numGpsSatellitesObserved = observablesG1C.size(); int32_t numSatellitesObserved = numGloSatellitesObserved + numGpsSatellitesObserved; - line += Rinex_Printer::rightJustify(boost::lexical_cast(numSatellitesObserved), 3); + line += Rinex_Printer::rightJustify(std::to_string(numSatellitesObserved), 3); if (version == 2) { // Add list of GPS satellites @@ -8104,7 +8104,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep { line += satelliteSystem["GPS"]; if (static_cast(observables_iter->second.PRN) < 10) line += std::string(1, '0'); - line += boost::lexical_cast(static_cast(observables_iter->second.PRN)); + line += std::to_string(static_cast(observables_iter->second.PRN)); } // Add list of GLONASS L1 satellites for (observables_iter = observablesR1C.cbegin(); @@ -8113,7 +8113,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep { line += satelliteSystem["GLONASS"]; if (static_cast(observables_iter->second.PRN) < 10) line += std::string(1, '0'); - line += boost::lexical_cast(static_cast(observables_iter->second.PRN)); + line += std::to_string(static_cast(observables_iter->second.PRN)); } // Add list of GLONASS L2 satellites for (observables_iter = observablesR2C.cbegin(); @@ -8122,7 +8122,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep { line += satelliteSystem["GLONASS"]; if (static_cast(observables_iter->second.PRN) < 10) line += std::string(1, '0'); - line += boost::lexical_cast(static_cast(observables_iter->second.PRN)); + line += std::to_string(static_cast(observables_iter->second.PRN)); } } line += std::string(80 - line.size(), ' '); @@ -8142,10 +8142,10 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep if (version == 3) { // Specify system only if in version 3 - if (s.compare("G") == 0) lineObs += satelliteSystem["GPS"]; - if (s.compare("R") == 0) lineObs += satelliteSystem["GLONASS"]; // should not happen + if (s == "G") lineObs += satelliteSystem["GPS"]; + if (s == "R") lineObs += satelliteSystem["GLONASS"]; // should not happen if (static_cast(observables_iter->second.PRN) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(observables_iter->second.PRN)); + lineObs += std::to_string(static_cast(observables_iter->second.PRN)); } // Pseudorange Measurements @@ -8207,10 +8207,10 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep { lineObs += satelliteSystem["GLONASS"]; if (static_cast(*it) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(*it)); + lineObs += std::to_string(static_cast(*it)); } ret = total_glo_map.equal_range(*it); - for (std::multimap::iterator iter = ret.first; iter != ret.second; ++iter) + for (auto iter = ret.first; iter != ret.second; ++iter) { /// \todo Need to account for pseudorange correction for glonass //double leap_seconds = Rinex_Printer::get_leap_second(glonass_gnav_eph, gps_obs_time); @@ -8322,15 +8322,15 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_CNAV_Ephemeris& g { std::string system_(&observables_iter->second.System, 1); std::string sig_(observables_iter->second.Signal); - if ((system_.compare("R") == 0) && (sig_.compare("1G") == 0)) + if ((system_ == "R") && (sig_ == "1G")) { observablesR1C.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("R") == 0) && (sig_.compare("2G") == 0)) + if ((system_ == "R") && (sig_ == "2G")) { observablesR2C.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("G") == 0) && (sig_.compare("2S") == 0)) + if ((system_ == "G") && (sig_ == "2S")) { observablesG2S.insert(std::pair(observables_iter->first, observables_iter->second)); } @@ -8368,7 +8368,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_CNAV_Ephemeris& g int32_t numGloSatellitesObserved = available_glo_prns.size(); int32_t numGpsSatellitesObserved = observablesG2S.size(); int32_t numSatellitesObserved = numGloSatellitesObserved + numGpsSatellitesObserved; - line += Rinex_Printer::rightJustify(boost::lexical_cast(numSatellitesObserved), 3); + line += Rinex_Printer::rightJustify(std::to_string(numSatellitesObserved), 3); line += std::string(80 - line.size(), ' '); Rinex_Printer::lengthCheck(line); @@ -8385,10 +8385,10 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_CNAV_Ephemeris& g s.assign(1, observables_iter->second.System); // Specify system only if in version 3 - if (s.compare("G") == 0) lineObs += satelliteSystem["GPS"]; - if (s.compare("R") == 0) lineObs += satelliteSystem["GLONASS"]; // should not happen + if (s == "G") lineObs += satelliteSystem["GPS"]; + if (s == "R") lineObs += satelliteSystem["GLONASS"]; // should not happen if (static_cast(observables_iter->second.PRN) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(observables_iter->second.PRN)); + lineObs += std::to_string(static_cast(observables_iter->second.PRN)); // Pseudorange Measurements lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Pseudorange_m, 3), 14); @@ -8447,10 +8447,10 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_CNAV_Ephemeris& g lineObs.clear(); lineObs += satelliteSystem["GLONASS"]; if (static_cast(*it) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(*it)); + lineObs += std::to_string(static_cast(*it)); ret = total_glo_map.equal_range(*it); - for (std::multimap::iterator iter = ret.first; iter != ret.second; ++iter) + for (auto iter = ret.first; iter != ret.second; ++iter) { /// \todo Need to account for pseudorange correction for glonass //double leap_seconds = Rinex_Printer::get_leap_second(glonass_gnav_eph, gps_obs_time); @@ -8562,15 +8562,15 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& ga { std::string system_(&observables_iter->second.System, 1); std::string sig_(observables_iter->second.Signal); - if ((system_.compare("R") == 0) && (sig_.compare("1G") == 0)) + if ((system_ == "R") && (sig_ == "1G")) { observablesR1C.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("R") == 0) && (sig_.compare("2G") == 0)) + if ((system_ == "R") && (sig_ == "2G")) { observablesR2C.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("E") == 0) && (sig_.compare("1B") == 0)) + if ((system_ == "E") && (sig_ == "1B")) { observablesE1B.insert(std::pair(observables_iter->first, observables_iter->second)); } @@ -8607,7 +8607,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& ga int32_t numGloSatellitesObserved = available_glo_prns.size(); int32_t numGalSatellitesObserved = observablesE1B.size(); int32_t numSatellitesObserved = numGalSatellitesObserved + numGloSatellitesObserved; - line += Rinex_Printer::rightJustify(boost::lexical_cast(numSatellitesObserved), 3); + line += Rinex_Printer::rightJustify(std::to_string(numSatellitesObserved), 3); // Receiver clock offset (optional) //line += rightJustify(asString(clockOffset, 12), 15); @@ -8625,10 +8625,10 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& ga lineObs.clear(); s.assign(1, observables_iter->second.System); - if (s.compare("E") == 0) lineObs += satelliteSystem["Galileo"]; - if (s.compare("R") == 0) lineObs += satelliteSystem["GLONASS"]; // should not happen + if (s == "E") lineObs += satelliteSystem["Galileo"]; + if (s == "R") lineObs += satelliteSystem["GLONASS"]; // should not happen if (static_cast(observables_iter->second.PRN) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(observables_iter->second.PRN)); + lineObs += std::to_string(static_cast(observables_iter->second.PRN)); lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Pseudorange_m, 3), 14); //Loss of lock indicator (LLI) @@ -8685,9 +8685,9 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& ga lineObs.clear(); lineObs += satelliteSystem["Galileo"]; if (static_cast(*it) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(*it)); + lineObs += std::to_string(static_cast(*it)); ret = total_glo_map.equal_range(*it); - for (std::multimap::iterator iter = ret.first; iter != ret.second; ++iter) + for (auto iter = ret.first; iter != ret.second; ++iter) { lineObs += Rinex_Printer::rightJustify(asString(iter->second.Pseudorange_m, 3), 14); @@ -8805,14 +8805,14 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c { numSatellitesObserved++; } - line += Rinex_Printer::rightJustify(boost::lexical_cast(numSatellitesObserved), 3); + line += Rinex_Printer::rightJustify(std::to_string(numSatellitesObserved), 3); for (observables_iter = observables.cbegin(); observables_iter != observables.cend(); observables_iter++) { line += satelliteSystem["GPS"]; if (static_cast(observables_iter->second.PRN) < 10) line += std::string(1, '0'); - line += boost::lexical_cast(static_cast(observables_iter->second.PRN)); + line += std::to_string(static_cast(observables_iter->second.PRN)); } // Receiver clock offset (optional) //line += rightJustify(asString(clockOffset, 12), 15); @@ -8910,7 +8910,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c { numSatellitesObserved++; } - line += Rinex_Printer::rightJustify(boost::lexical_cast(numSatellitesObserved), 3); + line += Rinex_Printer::rightJustify(std::to_string(numSatellitesObserved), 3); // Receiver clock offset (optional) //line += rightJustify(asString(clockOffset, 12), 15); @@ -8927,7 +8927,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c lineObs.clear(); lineObs += satelliteSystem["GPS"]; if (static_cast(observables_iter->second.PRN) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(observables_iter->second.PRN)); + lineObs += std::to_string(static_cast(observables_iter->second.PRN)); //lineObs += std::string(2, ' '); lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Pseudorange_m, 3), 14); @@ -9031,7 +9031,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_CNAV_Ephemeris& e { numSatellitesObserved++; } - line += Rinex_Printer::rightJustify(boost::lexical_cast(numSatellitesObserved), 3); + line += Rinex_Printer::rightJustify(std::to_string(numSatellitesObserved), 3); // Receiver clock offset (optional) //line += rightJustify(asString(clockOffset, 12), 15); @@ -9048,7 +9048,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_CNAV_Ephemeris& e lineObs.clear(); lineObs += satelliteSystem["GPS"]; if (static_cast(observables_iter->second.PRN) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(observables_iter->second.PRN)); + lineObs += std::to_string(static_cast(observables_iter->second.PRN)); //lineObs += std::string(2, ' '); //GPS L2 PSEUDORANGE lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Pseudorange_m, 3), 14); @@ -9162,12 +9162,12 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c { std::string system_(&observables_iter->second.System, 1); std::string sig_(observables_iter->second.Signal); - if ((system_.compare("G") == 0) && (sig_.compare("1C") == 0)) + if ((system_ == "G") && (sig_ == "1C")) { observablesL1.insert(std::pair(observables_iter->first, observables_iter->second)); total_mmap.insert(std::pair(observables_iter->second.PRN, observables_iter->second)); } - if ((system_.compare("G") == 0) && (sig_.compare("2S") == 0)) + if ((system_ == "G") && (sig_ == "2S")) { observablesL2.insert(std::pair(observables_iter->first, observables_iter->second)); mmap_iter = total_mmap.find(observables_iter->second.PRN); @@ -9179,7 +9179,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c total_mmap.insert(std::pair(observables_iter->second.PRN, observables_iter->second)); } - if ((system_.compare("G") == 0) && (sig_.compare("L5") == 0)) + if ((system_ == "G") && (sig_ == "L5")) { observablesL5.insert(std::pair(observables_iter->first, observables_iter->second)); mmap_iter = total_mmap.find(observables_iter->second.PRN); @@ -9250,7 +9250,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c } int32_t numSatellitesObserved = available_prns.size(); - line += Rinex_Printer::rightJustify(boost::lexical_cast(numSatellitesObserved), 3); + line += Rinex_Printer::rightJustify(std::to_string(numSatellitesObserved), 3); // Receiver clock offset (optional) //line += rightJustify(asString(clockOffset, 12), 15); line += std::string(80 - line.size(), ' '); @@ -9266,9 +9266,9 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c lineObs.clear(); lineObs += satelliteSystem["GPS"]; if (static_cast(*it) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(*it)); + lineObs += std::to_string(static_cast(*it)); ret = total_mmap.equal_range(*it); - for (std::multimap::iterator iter = ret.first; iter != ret.second; ++iter) + for (auto iter = ret.first; iter != ret.second; ++iter) { lineObs += Rinex_Printer::rightJustify(asString(iter->second.Pseudorange_m, 3), 14); @@ -9321,7 +9321,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c } -void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& eph, double obs_time, const std::map& observables, const std::string galileo_bands) +void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& eph, double obs_time, const std::map& observables, const std::string& galileo_bands) { // RINEX observations timestamps are Galileo timestamps. // See http://gage14.upc.es/gLAB/HTML/Observation_Rinex_v3.01.html @@ -9377,15 +9377,15 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& ep { std::string system_(&observables_iter->second.System, 1); std::string sig_(observables_iter->second.Signal); - if ((system_.compare("E") == 0) && (sig_.compare("1B") == 0)) + if ((system_ == "E") && (sig_ == "1B")) { observablesE1B.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("E") == 0) && (sig_.compare("5X") == 0)) + if ((system_ == "E") && (sig_ == "5X")) { observablesE5A.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("E") == 0) && (sig_.compare("7X") == 0)) + if ((system_ == "E") && (sig_ == "7X")) { observablesE5B.insert(std::pair(observables_iter->first, observables_iter->second)); } @@ -9490,7 +9490,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& ep } } int32_t numSatellitesObserved = available_prns.size(); - line += Rinex_Printer::rightJustify(boost::lexical_cast(numSatellitesObserved), 3); + line += Rinex_Printer::rightJustify(std::to_string(numSatellitesObserved), 3); // Receiver clock offset (optional) //line += rightJustify(asString(clockOffset, 12), 15); line += std::string(80 - line.size(), ' '); @@ -9506,9 +9506,9 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& ep lineObs.clear(); lineObs += satelliteSystem["Galileo"]; if (static_cast(*it) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(*it)); + lineObs += std::to_string(static_cast(*it)); ret = total_map.equal_range(*it); - for (std::multimap::iterator iter = ret.first; iter != ret.second; ++iter) + for (auto iter = ret.first; iter != ret.second; ++iter) { lineObs += Rinex_Printer::rightJustify(asString(iter->second.Pseudorange_m, 3), 14); @@ -9619,19 +9619,19 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep { std::string system_(&observables_iter->second.System, 1); std::string sig_(observables_iter->second.Signal); - if ((system_.compare("E") == 0) && (sig_.compare("1B") == 0)) + if ((system_ == "E") && (sig_ == "1B")) { observablesE1B.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("E") == 0) && (sig_.compare("5X") == 0)) + if ((system_ == "E") && (sig_ == "5X")) { observablesE5A.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("E") == 0) && (sig_.compare("7X") == 0)) + if ((system_ == "E") && (sig_ == "7X")) { observablesE5B.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("G") == 0) && (sig_.compare("1C") == 0)) + if ((system_ == "G") && (sig_ == "1C")) { observablesG1C.insert(std::pair(observables_iter->first, observables_iter->second)); } @@ -9682,7 +9682,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep int32_t numGalSatellitesObserved = available_gal_prns.size(); int32_t numGpsSatellitesObserved = observablesG1C.size(); int32_t numSatellitesObserved = numGalSatellitesObserved + numGpsSatellitesObserved; - line += Rinex_Printer::rightJustify(boost::lexical_cast(numSatellitesObserved), 3); + line += Rinex_Printer::rightJustify(std::to_string(numSatellitesObserved), 3); // Receiver clock offset (optional) //line += rightJustify(asString(clockOffset, 12), 15); @@ -9700,10 +9700,10 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep lineObs.clear(); s.assign(1, observables_iter->second.System); - if (s.compare("G") == 0) lineObs += satelliteSystem["GPS"]; - if (s.compare("E") == 0) lineObs += satelliteSystem["Galileo"]; // should not happen + if (s == "G") lineObs += satelliteSystem["GPS"]; + if (s == "E") lineObs += satelliteSystem["Galileo"]; // should not happen if (static_cast(observables_iter->second.PRN) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(observables_iter->second.PRN)); + lineObs += std::to_string(static_cast(observables_iter->second.PRN)); lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Pseudorange_m, 3), 14); //Loss of lock indicator (LLI) @@ -9760,9 +9760,9 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep lineObs.clear(); lineObs += satelliteSystem["Galileo"]; if (static_cast(*it) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(*it)); + lineObs += std::to_string(static_cast(*it)); ret = total_gal_map.equal_range(*it); - for (std::multimap::iterator iter = ret.first; iter != ret.second; ++iter) + for (auto iter = ret.first; iter != ret.second; ++iter) { lineObs += Rinex_Printer::rightJustify(asString(iter->second.Pseudorange_m, 3), 14); @@ -9874,23 +9874,23 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_CNAV_Ephemeris& e { std::string system_(&observables_iter->second.System, 1); std::string sig_(observables_iter->second.Signal); - if ((system_.compare("E") == 0) && (sig_.compare("1B") == 0)) + if ((system_ == "E") && (sig_ == "1B")) { observablesE1B.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("E") == 0) && (sig_.compare("5X") == 0)) + if ((system_ == "E") && (sig_ == "5X")) { observablesE5A.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("E") == 0) && (sig_.compare("7X") == 0)) + if ((system_ == "E") && (sig_ == "7X")) { observablesE5B.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("G") == 0) && (sig_.compare("2S") == 0)) + if ((system_ == "G") && (sig_ == "2S")) { observablesG2S.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("G") == 0) && (sig_.compare("L5") == 0)) + if ((system_ == "G") && (sig_ == "L5")) { observablesGL5.insert(std::pair(observables_iter->first, observables_iter->second)); } @@ -9969,7 +9969,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_CNAV_Ephemeris& e int32_t numGalSatellitesObserved = available_gal_prns.size(); int32_t numGpsSatellitesObserved = available_gps_prns.size(); int32_t numSatellitesObserved = numGalSatellitesObserved + numGpsSatellitesObserved; - line += Rinex_Printer::rightJustify(boost::lexical_cast(numSatellitesObserved), 3); + line += Rinex_Printer::rightJustify(std::to_string(numSatellitesObserved), 3); // Receiver clock offset (optional) //line += rightJustify(asString(clockOffset, 12), 15); @@ -9989,9 +9989,9 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_CNAV_Ephemeris& e lineObs.clear(); lineObs += satelliteSystem["GPS"]; if (static_cast(*it) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(*it)); + lineObs += std::to_string(static_cast(*it)); ret = total_gps_map.equal_range(*it); - for (std::multimap::iterator iter = ret.first; iter != ret.second; ++iter) + for (auto iter = ret.first; iter != ret.second; ++iter) { lineObs += Rinex_Printer::rightJustify(asString(iter->second.Pseudorange_m, 3), 14); @@ -10048,9 +10048,9 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_CNAV_Ephemeris& e lineObs.clear(); lineObs += satelliteSystem["Galileo"]; if (static_cast(*it) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(*it)); + lineObs += std::to_string(static_cast(*it)); ret = total_gal_map.equal_range(*it); - for (std::multimap::iterator iter = ret.first; iter != ret.second; ++iter) + for (auto iter = ret.first; iter != ret.second; ++iter) { lineObs += Rinex_Printer::rightJustify(asString(iter->second.Pseudorange_m, 3), 14); @@ -10166,27 +10166,27 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep { std::string system_(&observables_iter->second.System, 1); std::string sig_(observables_iter->second.Signal); - if ((system_.compare("E") == 0) && (sig_.compare("1B") == 0)) + if ((system_ == "E") && (sig_ == "1B")) { observablesE1B.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("E") == 0) && (sig_.compare("5X") == 0)) + if ((system_ == "E") && (sig_ == "5X")) { observablesE5A.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("E") == 0) && (sig_.compare("7X") == 0)) + if ((system_ == "E") && (sig_ == "7X")) { observablesE5B.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("G") == 0) && (sig_.compare("2S") == 0)) + if ((system_ == "G") && (sig_ == "2S")) { observablesG2S.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("G") == 0) && (sig_.compare("L5") == 0)) + if ((system_ == "G") && (sig_ == "L5")) { observablesGL5.insert(std::pair(observables_iter->first, observables_iter->second)); } - if ((system_.compare("G") == 0) && (sig_.compare("1C") == 0)) + if ((system_ == "G") && (sig_ == "1C")) { observablesG1C.insert(std::pair(observables_iter->first, observables_iter->second)); } @@ -10278,7 +10278,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep int32_t numGalSatellitesObserved = available_gal_prns.size(); int32_t numGpsSatellitesObserved = available_gps_prns.size(); int32_t numSatellitesObserved = numGalSatellitesObserved + numGpsSatellitesObserved; - line += Rinex_Printer::rightJustify(boost::lexical_cast(numSatellitesObserved), 3); + line += Rinex_Printer::rightJustify(std::to_string(numSatellitesObserved), 3); // Receiver clock offset (optional) //line += rightJustify(asString(clockOffset, 12), 15); @@ -10298,9 +10298,9 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep lineObs.clear(); lineObs += satelliteSystem["GPS"]; if (static_cast(*it) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(*it)); + lineObs += std::to_string(static_cast(*it)); ret = total_gps_map.equal_range(*it); - for (std::multimap::iterator iter = ret.first; iter != ret.second; ++iter) + for (auto iter = ret.first; iter != ret.second; ++iter) { lineObs += Rinex_Printer::rightJustify(asString(iter->second.Pseudorange_m, 3), 14); @@ -10357,9 +10357,9 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep lineObs.clear(); lineObs += satelliteSystem["Galileo"]; if (static_cast(*it) < 10) lineObs += std::string(1, '0'); - lineObs += boost::lexical_cast(static_cast(*it)); + lineObs += std::to_string(static_cast(*it)); ret = total_gal_map.equal_range(*it); - for (std::multimap::iterator iter = ret.first; iter != ret.second; ++iter) + for (auto iter = ret.first; iter != ret.second; ++iter) { lineObs += Rinex_Printer::rightJustify(asString(iter->second.Pseudorange_m, 3), 14); diff --git a/src/algorithms/PVT/libs/rinex_printer.h b/src/algorithms/PVT/libs/rinex_printer.h index 2c312b066..0485a06d3 100644 --- a/src/algorithms/PVT/libs/rinex_printer.h +++ b/src/algorithms/PVT/libs/rinex_printer.h @@ -68,6 +68,8 @@ #include // for stringstream #include // for setprecision #include +#include // for stringstream +#include class Sbas_Raw_Msg; @@ -151,52 +153,52 @@ public: /*! * \brief Generates the GPS L2 Observation data header */ - void rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris& eph, const double d_TOW_first_observation, const std::string gps_bands = "2S"); + void rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris& eph, const double d_TOW_first_observation, const std::string& gps_bands = "2S"); /*! * \brief Generates the dual frequency GPS L1 & L2/L5 Observation data header */ - void rinex_obs_header(std::fstream& out, const Gps_Ephemeris& eph, const Gps_CNAV_Ephemeris& eph_cnav, const double d_TOW_first_observation, const std::string gps_bands = "1C 2S"); + void rinex_obs_header(std::fstream& out, const Gps_Ephemeris& eph, const Gps_CNAV_Ephemeris& eph_cnav, const double d_TOW_first_observation, const std::string& gps_bands = "1C 2S"); /*! * \brief Generates the Galileo Observation data header. Example: bands("1B"), bands("1B 5X"), bands("5X"), ... Default: "1B". */ - void rinex_obs_header(std::fstream& out, const Galileo_Ephemeris& eph, const double d_TOW_first_observation, const std::string bands = "1B"); + void rinex_obs_header(std::fstream& out, const Galileo_Ephemeris& eph, const double d_TOW_first_observation, const std::string& bands = "1B"); /*! * \brief Generates the Mixed (GPS/Galileo) Observation data header. Example: galileo_bands("1B"), galileo_bands("1B 5X"), galileo_bands("5X"), ... Default: "1B". */ - void rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps_eph, const Galileo_Ephemeris& galileo_eph, const double d_TOW_first_observation, const std::string galileo_bands = "1B"); + void rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps_eph, const Galileo_Ephemeris& galileo_eph, const double d_TOW_first_observation, const std::string& galileo_bands = "1B"); /*! * \brief Generates the Mixed (GPS/Galileo) Observation data header. Example: galileo_bands("1B"), galileo_bands("1B 5X"), galileo_bands("5X"), ... Default: "1B". */ - void rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps_eph, const Gps_CNAV_Ephemeris& eph_cnav, const Galileo_Ephemeris& galileo_eph, const double d_TOW_first_observation, const std::string gps_bands = "1C 2S", const std::string galileo_bands = "1B"); + void rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps_eph, const Gps_CNAV_Ephemeris& eph_cnav, const Galileo_Ephemeris& galileo_eph, const double d_TOW_first_observation, const std::string& gps_bands = "1C 2S", const std::string& galileo_bands = "1B"); /*! * \brief Generates the Mixed (GPS/Galileo) Observation data header. Example: galileo_bands("1B"), galileo_bands("1B 5X"), galileo_bands("5X"), ... Default: "1B". */ - void rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris& eph_cnav, const Galileo_Ephemeris& galileo_eph, const double d_TOW_first_observation, const std::string gps_bands = "2S", const std::string galileo_bands = "1B"); + void rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris& eph_cnav, const Galileo_Ephemeris& galileo_eph, const double d_TOW_first_observation, const std::string& gps_bands = "2S", const std::string& galileo_bands = "1B"); /*! * \brief Generates the GLONASS GNAV Observation data header. Example: bands("1C"), bands("1C 2C"), bands("2C"), ... Default: "1C". */ - void rinex_obs_header(std::fstream& out, const Glonass_Gnav_Ephemeris& eph, const double d_TOW_first_observation, const std::string bands = "1G"); + void rinex_obs_header(std::fstream& out, const Glonass_Gnav_Ephemeris& eph, const double d_TOW_first_observation, const std::string& bands = "1G"); /*! * \brief Generates the Mixed (GPS L1 C/A /GLONASS) Observation data header. Example: galileo_bands("1C"), galileo_bands("1B 5X"), galileo_bands("5X"), ... Default: "1B". */ - void rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps_eph, const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const double d_TOW_first_observation, const std::string glo_bands = "1C"); + void rinex_obs_header(std::fstream& out, const Gps_Ephemeris& gps_eph, const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const double d_TOW_first_observation, const std::string& glo_bands = "1C"); /*! * \brief Generates the Mixed (Galileo/GLONASS) Observation data header. Example: galileo_bands("1C"), galileo_bands("1B 5X"), galileo_bands("5X"), ... Default: "1B". */ - void rinex_obs_header(std::fstream& out, const Galileo_Ephemeris& galileo_eph, const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const double d_TOW_first_observation, const std::string galileo_bands = "1B", const std::string glo_bands = "1C"); + void rinex_obs_header(std::fstream& out, const Galileo_Ephemeris& galileo_eph, const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const double d_TOW_first_observation, const std::string& galileo_bands = "1B", const std::string& glo_bands = "1C"); /*! * \brief Generates the Mixed (GPS L2C/GLONASS) Observation data header. Example: galileo_bands("1G")... Default: "1G". */ - void rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris& gps_cnav_eph, const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const double d_TOW_first_observation, const std::string glo_bands = "1G"); + void rinex_obs_header(std::fstream& out, const Gps_CNAV_Ephemeris& gps_cnav_eph, const Glonass_Gnav_Ephemeris& glonass_gnav_eph, const double d_TOW_first_observation, const std::string& glo_bands = "1G"); /*! * \brief Generates the a Beidou B1I Observation data header. Example: beidou_bands("B1") @@ -321,7 +323,7 @@ public: /*! * \brief Writes Galileo observables into the RINEX file. Example: galileo_bands("1B"), galileo_bands("1B 5X"), galileo_bands("5X"), ... Default: "1B". */ - void log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& eph, double obs_time, const std::map& observables, const std::string galileo_bands = "1B"); + void log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& eph, double obs_time, const std::map& observables, const std::string& galileo_bands = "1B"); /*! * \brief Writes Mixed GPS / Galileo observables into the RINEX file @@ -341,7 +343,7 @@ public: /*! * \brief Writes GLONASS GNAV observables into the RINEX file. Example: glonass_bands("1C"), galileo_bands("1B 5X"), galileo_bands("5X"), ... Default: "1B". */ - void log_rinex_obs(std::fstream& out, const Glonass_Gnav_Ephemeris& eph, double obs_time, const std::map& observables, const std::string glonass_bands = "1C"); + void log_rinex_obs(std::fstream& out, const Glonass_Gnav_Ephemeris& eph, double obs_time, const std::map& observables, const std::string& glonass_bands = "1C"); /*! * \brief Writes Mixed GPS L1 C/A - GLONASS observables into the RINEX file @@ -441,7 +443,7 @@ private: * "RINEX_FILE_TYPE_SBAS" - SBAS broadcast data file. * "RINEX_FILE_TYPE_CLK" - Clock file. */ - std::string createFilename(std::string type); + std::string createFilename(const std::string& type); /* * Generates the data for the PGM / RUN BY / DATE line @@ -582,7 +584,7 @@ private: */ inline double asDouble(const std::string& s) { - return strtod(s.c_str(), 0); + return strtod(s.c_str(), nullptr); } @@ -595,7 +597,7 @@ private: */ inline int64_t asInt(const std::string& s) { - return strtol(s.c_str(), 0, 10); + return strtol(s.c_str(), nullptr, 10); } @@ -831,7 +833,7 @@ inline std::string Rinex_Printer::asFixWidthString(const int x, const int width, inline int64_t asInt(const std::string& s) { - return strtol(s.c_str(), 0, 10); + return strtol(s.c_str(), nullptr, 10); } diff --git a/src/algorithms/PVT/libs/rtcm_printer.cc b/src/algorithms/PVT/libs/rtcm_printer.cc index 400132e0c..da32c0e9b 100644 --- a/src/algorithms/PVT/libs/rtcm_printer.cc +++ b/src/algorithms/PVT/libs/rtcm_printer.cc @@ -37,15 +37,17 @@ #include // for path, operator<< #include // for filesystem #include +#include +#include // for O_RDWR #include -#include // for O_RDWR #include // for tcgetattr +#include using google::LogMessage; -Rtcm_Printer::Rtcm_Printer(std::string filename, bool flag_rtcm_file_dump, bool flag_rtcm_server, bool flag_rtcm_tty_port, uint16_t rtcm_tcp_port, uint16_t rtcm_station_id, std::string rtcm_dump_devname, bool time_tag_name, const std::string& base_path) +Rtcm_Printer::Rtcm_Printer(const std::string& filename, bool flag_rtcm_file_dump, bool flag_rtcm_server, bool flag_rtcm_tty_port, uint16_t rtcm_tcp_port, uint16_t rtcm_station_id, const std::string& rtcm_dump_devname, bool time_tag_name, const std::string& base_path) { boost::posix_time::ptime pt = boost::posix_time::second_clock::local_time(); tm timeinfo = boost::posix_time::to_tm(pt); @@ -77,7 +79,7 @@ Rtcm_Printer::Rtcm_Printer(std::string filename, bool flag_rtcm_file_dump, bool { rtcm_base_path = p.string(); } - if (rtcm_base_path.compare(".") != 0) + if (rtcm_base_path != ".") { std::cout << "RTCM binary file will be stored at " << rtcm_base_path << std::endl; } @@ -141,7 +143,7 @@ Rtcm_Printer::Rtcm_Printer(std::string filename, bool flag_rtcm_file_dump, bool } } - rtcm_devname = rtcm_dump_devname; + rtcm_devname = std::move(rtcm_dump_devname); if (flag_rtcm_tty_port == true) { rtcm_dev_descriptor = init_serial(rtcm_devname.c_str()); @@ -186,7 +188,7 @@ Rtcm_Printer::~Rtcm_Printer() } if (rtcm_file_descriptor.is_open()) { - long pos; + int64_t pos; pos = rtcm_file_descriptor.tellp(); rtcm_file_descriptor.close(); if (pos == 0) @@ -337,20 +339,20 @@ bool Rtcm_Printer::Print_Rtcm_MSM(uint32_t msm_number, const Gps_Ephemeris& gps_ } -int Rtcm_Printer::init_serial(std::string serial_device) +int Rtcm_Printer::init_serial(const std::string& serial_device) { /* * Opens the serial device and sets the default baud rate for a RTCM transmission (9600,8,N,1) */ int32_t fd = 0; struct termios options; - long BAUD; - long DATABITS; - long STOPBITS; - long PARITYON; - long PARITY; + int64_t BAUD; + int64_t DATABITS; + int64_t STOPBITS; + int64_t PARITYON; + int64_t PARITY; - fd = open(serial_device.c_str(), O_RDWR | O_NOCTTY | O_NDELAY); + fd = open(serial_device.c_str(), O_RDWR | O_NOCTTY | O_NDELAY | O_CLOEXEC); if (fd == -1) return fd; // failed to open TTY port if (fcntl(fd, F_SETFL, 0) == -1) LOG(INFO) << "Error enabling direct I/O"; // clear all flags on descriptor, enable direct I/O diff --git a/src/algorithms/PVT/libs/rtcm_printer.h b/src/algorithms/PVT/libs/rtcm_printer.h index bb34f7ea6..aca7197bb 100644 --- a/src/algorithms/PVT/libs/rtcm_printer.h +++ b/src/algorithms/PVT/libs/rtcm_printer.h @@ -48,7 +48,7 @@ public: /*! * \brief Default constructor. */ - Rtcm_Printer(std::string filename, bool flag_rtcm_file_dump, bool flag_rtcm_server, bool flag_rtcm_tty_port, uint16_t rtcm_tcp_port, uint16_t rtcm_station_id, std::string rtcm_dump_filename, bool time_tag_name = true, const std::string& base_path = "."); + Rtcm_Printer(const std::string& filename, bool flag_rtcm_file_dump, bool flag_rtcm_server, bool flag_rtcm_tty_port, uint16_t rtcm_tcp_port, uint16_t rtcm_station_id, const std::string& rtcm_dump_filename, bool time_tag_name = true, const std::string& base_path = "."); /*! * \brief Default destructor. @@ -148,8 +148,8 @@ private: std::string rtcm_devname; uint16_t port; uint16_t station_id; - int32_t rtcm_dev_descriptor; // RTCM serial device descriptor (i.e. COM port) - int32_t init_serial(std::string serial_device); //serial port control + int32_t rtcm_dev_descriptor; // RTCM serial device descriptor (i.e. COM port) + int32_t init_serial(const std::string& serial_device); //serial port control void close_serial(); std::shared_ptr rtcm; bool Print_Message(const std::string& message); diff --git a/src/algorithms/PVT/libs/rtklib_solver.cc b/src/algorithms/PVT/libs/rtklib_solver.cc index 1e29d4cbf..32e8421a8 100644 --- a/src/algorithms/PVT/libs/rtklib_solver.cc +++ b/src/algorithms/PVT/libs/rtklib_solver.cc @@ -52,34 +52,35 @@ * -----------------------------------------------------------------------*/ #include "rtklib_solver.h" -#include "rtklib_conversions.h" -#include "rtklib_solution.h" +#include "GLONASS_L1_L2_CA.h" #include "GPS_L1_CA.h" #include "Galileo_E1.h" -#include "GLONASS_L1_L2_CA.h" -#include +#include "Beidou_B1I.h" +#include "rtklib_conversions.h" +#include "rtklib_solution.h" #include -#include "../../../core/system_parameters/Beidou_B1I.h" +#include +#include using google::LogMessage; -rtklib_solver::rtklib_solver(int nchannels, std::string dump_filename, bool flag_dump_to_file, bool flag_dump_to_mat, rtk_t &rtk) +rtklib_solver::rtklib_solver(int nchannels, std::string dump_filename, bool flag_dump_to_file, bool flag_dump_to_mat, const rtk_t &rtk) { // init empty ephemeris for all the available GNSS channels d_nchannels = nchannels; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_flag_dump_enabled = flag_dump_to_file; d_flag_dump_mat_enabled = flag_dump_to_mat; count_valid_position = 0; this->set_averaging_flag(false); rtk_ = rtk; - for (unsigned int i = 0; i < 4; i++) dop_[i] = 0.0; + for (double &i : dop_) i = 0.0; pvt_sol = {{0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, '0', '0', '0', 0, 0, 0}; ssat_t ssat0 = {0, 0, {0.0}, {0.0}, {0.0}, {'0'}, {'0'}, {'0'}, {'0'}, {'0'}, {}, {}, {}, {}, 0.0, 0.0, 0.0, 0.0, {{{0, 0}}, {{0, 0}}}, {{}, {}}}; - for (unsigned int i = 0; i < MAXSAT; i++) + for (auto &i : pvt_ssat) { - pvt_ssat[i] = ssat0; + i = ssat0; } // ############# ENABLE DATA FILE LOG ################# if (d_flag_dump_enabled == true) @@ -138,34 +139,34 @@ bool rtklib_solver::save_matfile() return false; } - uint32_t *TOW_at_current_symbol_ms = new uint32_t[num_epoch]; - uint32_t *week = new uint32_t[num_epoch]; - double *RX_time = new double[num_epoch]; - double *user_clk_offset = new double[num_epoch]; - double *pos_x = new double[num_epoch]; - double *pos_y = new double[num_epoch]; - double *pos_z = new double[num_epoch]; - double *vel_x = new double[num_epoch]; - double *vel_y = new double[num_epoch]; - double *vel_z = new double[num_epoch]; - double *cov_xx = new double[num_epoch]; - double *cov_yy = new double[num_epoch]; - double *cov_zz = new double[num_epoch]; - double *cov_xy = new double[num_epoch]; - double *cov_yz = new double[num_epoch]; - double *cov_zx = new double[num_epoch]; - double *latitude = new double[num_epoch]; - double *longitude = new double[num_epoch]; - double *height = new double[num_epoch]; - uint8_t *valid_sats = new uint8_t[num_epoch]; - uint8_t *solution_status = new uint8_t[num_epoch]; - uint8_t *solution_type = new uint8_t[num_epoch]; - float *AR_ratio_factor = new float[num_epoch]; - float *AR_ratio_threshold = new float[num_epoch]; - double *gdop = new double[num_epoch]; - double *pdop = new double[num_epoch]; - double *hdop = new double[num_epoch]; - double *vdop = new double[num_epoch]; + auto *TOW_at_current_symbol_ms = new uint32_t[num_epoch]; + auto *week = new uint32_t[num_epoch]; + auto *RX_time = new double[num_epoch]; + auto *user_clk_offset = new double[num_epoch]; + auto *pos_x = new double[num_epoch]; + auto *pos_y = new double[num_epoch]; + auto *pos_z = new double[num_epoch]; + auto *vel_x = new double[num_epoch]; + auto *vel_y = new double[num_epoch]; + auto *vel_z = new double[num_epoch]; + auto *cov_xx = new double[num_epoch]; + auto *cov_yy = new double[num_epoch]; + auto *cov_zz = new double[num_epoch]; + auto *cov_xy = new double[num_epoch]; + auto *cov_yz = new double[num_epoch]; + auto *cov_zx = new double[num_epoch]; + auto *latitude = new double[num_epoch]; + auto *longitude = new double[num_epoch]; + auto *height = new double[num_epoch]; + auto *valid_sats = new uint8_t[num_epoch]; + auto *solution_status = new uint8_t[num_epoch]; + auto *solution_type = new uint8_t[num_epoch]; + auto *AR_ratio_factor = new float[num_epoch]; + auto *AR_ratio_threshold = new float[num_epoch]; + auto *gdop = new double[num_epoch]; + auto *pdop = new double[num_epoch]; + auto *hdop = new double[num_epoch]; + auto *vdop = new double[num_epoch]; try { @@ -246,8 +247,8 @@ bool rtklib_solver::save_matfile() std::string filename = dump_filename; filename.erase(filename.length() - 4, 4); filename.append(".mat"); - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (reinterpret_cast(matfp) != NULL) + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (reinterpret_cast(matfp) != nullptr) { size_t dims[2] = {1, static_cast(num_epoch)}; matvar = Mat_VarCreate("TOW_at_current_symbol_ms", MAT_C_UINT32, MAT_T_UINT32, 2, dims, TOW_at_current_symbol_ms, 0); @@ -476,11 +477,11 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ case 'G': { std::string sig_(gnss_observables_iter->second.Signal); - if (sig_.compare("1C") == 0) + if (sig_ == "1C") { band1 = true; } - if (sig_.compare("2S") == 0) + if (sig_ == "2S") { band2 = true; } @@ -503,7 +504,7 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ { std::string sig_(gnss_observables_iter->second.Signal); // Galileo E1 - if (sig_.compare("1B") == 0) + if (sig_ == "1B") { // 1 Gal - find the ephemeris for the current GALILEO SV observation. The SV PRN ID is the map key galileo_ephemeris_iter = galileo_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -526,7 +527,7 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ } // Galileo E5 - if (sig_.compare("5X") == 0) + if (sig_ == "5X") { // 1 Gal - find the ephemeris for the current GALILEO SV observation. The SV PRN ID is the map key galileo_ephemeris_iter = galileo_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -551,7 +552,7 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ // convert ephemeris from GNSS-SDR class to RTKLIB structure eph_data[valid_obs] = eph_to_rtklib(galileo_ephemeris_iter->second); // convert observation from GNSS-SDR class to RTKLIB structure - unsigned char default_code_ = static_cast(CODE_NONE); + auto default_code_ = static_cast(CODE_NONE); obsd_t newobs = {{0, 0}, '0', '0', {}, {}, {default_code_, default_code_, default_code_}, {}, {0.0, 0.0, 0.0}, {}}; @@ -574,7 +575,7 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ // GPS L1 // 1 GPS - find the ephemeris for the current GPS SV observation. The SV PRN ID is the map key std::string sig_(gnss_observables_iter->second.Signal); - if (sig_.compare("1C") == 0) + if (sig_ == "1C") { gps_ephemeris_iter = gps_ephemeris_map.find(gnss_observables_iter->second.PRN); if (gps_ephemeris_iter != gps_ephemeris_map.cend()) @@ -595,7 +596,7 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ } } // GPS L2 (todo: solve NAV/CNAV clash) - if ((sig_.compare("2S") == 0) and (gps_dual_band == false)) + if ((sig_ == "2S") and (gps_dual_band == false)) { gps_cnav_ephemeris_iter = gps_cnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (gps_cnav_ephemeris_iter != gps_cnav_ephemeris_map.cend()) @@ -627,7 +628,7 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ // convert ephemeris from GNSS-SDR class to RTKLIB structure eph_data[valid_obs] = eph_to_rtklib(gps_cnav_ephemeris_iter->second); // convert observation from GNSS-SDR class to RTKLIB structure - unsigned char default_code_ = static_cast(CODE_NONE); + auto default_code_ = static_cast(CODE_NONE); obsd_t newobs = {{0, 0}, '0', '0', {}, {}, {default_code_, default_code_, default_code_}, {}, {0.0, 0.0, 0.0}, {}}; @@ -644,7 +645,7 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ } } // GPS L5 - if (sig_.compare("L5") == 0) + if (sig_ == "L5") { gps_cnav_ephemeris_iter = gps_cnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (gps_cnav_ephemeris_iter != gps_cnav_ephemeris_map.cend()) @@ -674,7 +675,7 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ // convert ephemeris from GNSS-SDR class to RTKLIB structure eph_data[valid_obs] = eph_to_rtklib(gps_cnav_ephemeris_iter->second); // convert observation from GNSS-SDR class to RTKLIB structure - unsigned char default_code_ = static_cast(CODE_NONE); + auto default_code_ = static_cast(CODE_NONE); obsd_t newobs = {{0, 0}, '0', '0', {}, {}, {default_code_, default_code_, default_code_}, {}, {0.0, 0.0, 0.0}, {}}; @@ -696,7 +697,7 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ { std::string sig_(gnss_observables_iter->second.Signal); // GLONASS GNAV L1 - if (sig_.compare("1G") == 0) + if (sig_ == "1G") { // 1 Glo - find the ephemeris for the current GLONASS SV observation. The SV Slot Number (PRN ID) is the map key glonass_gnav_ephemeris_iter = glonass_gnav_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -718,7 +719,7 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ } } // GLONASS GNAV L2 - if (sig_.compare("2G") == 0) + if (sig_ == "2G") { // 1 GLONASS - find the ephemeris for the current GLONASS SV observation. The SV PRN ID is the map key glonass_gnav_ephemeris_iter = glonass_gnav_ephemeris_map.find(gnss_observables_iter->second.PRN); @@ -763,7 +764,7 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ // BEIDOU B1I // - find the ephemeris for the current BEIDOU SV observation. The SV PRN ID is the map key std::string sig_(gnss_observables_iter->second.Signal); - if (sig_.compare("B1") == 0) + if (sig_ == "B1") { beidou_ephemeris_iter = beidou_dnav_ephemeris_map.find(gnss_observables_iter->second.PRN); if (beidou_ephemeris_iter != beidou_dnav_ephemeris_map.cend()) @@ -806,11 +807,11 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ nav_data.n = valid_obs; nav_data.ng = glo_valid_obs; - for (int i = 0; i < MAXSAT; i++) + for (auto &i : nav_data.lam) { - nav_data.lam[i][0] = SPEED_OF_LIGHT / FREQ1; // L1/E1 - nav_data.lam[i][1] = SPEED_OF_LIGHT / FREQ2; // L2 - nav_data.lam[i][2] = SPEED_OF_LIGHT / FREQ5; // L5/E5 + i[0] = SPEED_OF_LIGHT / FREQ1; // L1/E1 + i[1] = SPEED_OF_LIGHT / FREQ2; // L2 + i[2] = SPEED_OF_LIGHT / FREQ5; // L5/E5 } result = rtkpos(&rtk_, obs_data, valid_obs + glo_valid_obs, &nav_data); @@ -840,17 +841,17 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ std::vector azel; azel.reserve(used_sats * 2); unsigned int index_aux = 0; - for (unsigned int i = 0; i < MAXSAT; i++) + for (auto &i : rtk_.ssat) { - if (rtk_.ssat[i].vs == 1) + if (i.vs == 1) { - azel[2 * index_aux] = rtk_.ssat[i].azel[0]; - azel[2 * index_aux + 1] = rtk_.ssat[i].azel[1]; + azel[2 * index_aux] = i.azel[0]; + azel[2 * index_aux + 1] = i.azel[1]; index_aux++; } } - if (index_aux > 0) dops(index_aux, azel.data(), 0.0, dop_); + if (index_aux > 0) dops(index_aux, azel.data(), 0.0, dop_.data()); this->set_valid_position(true); arma::vec rx_position_and_time(4); rx_position_and_time(0) = pvt_sol.rr[0]; // [m] @@ -897,7 +898,7 @@ bool rtklib_solver::get_PVT(const std::map &gnss_observables_ gtime_t rtklib_time = gpst2time(adjgpsweek(nav_data.eph[0].week), gnss_observables_map.begin()->second.RX_time); gtime_t rtklib_utc_time = gpst2utc(rtklib_time); p_time = boost::posix_time::from_time_t(rtklib_utc_time.time); - p_time += boost::posix_time::microseconds(static_cast(round(rtklib_utc_time.sec * 1e6))); + p_time += boost::posix_time::microseconds(static_cast(round(rtklib_utc_time.sec * 1e6))); // NOLINT(google-runtime-int) this->set_position_UTC_time(p_time); cart2geo(static_cast(rx_position_and_time(0)), static_cast(rx_position_and_time(1)), static_cast(rx_position_and_time(2)), 4); diff --git a/src/algorithms/PVT/libs/rtklib_solver.h b/src/algorithms/PVT/libs/rtklib_solver.h index 08b49e8fd..935cb3dde 100644 --- a/src/algorithms/PVT/libs/rtklib_solver.h +++ b/src/algorithms/PVT/libs/rtklib_solver.h @@ -55,21 +55,21 @@ #define GNSS_SDR_RTKLIB_SOLVER_H_ -#include "rtklib_rtkpos.h" -#include "galileo_navigation_message.h" -#include "gps_navigation_message.h" -#include "gps_cnav_navigation_message.h" -#include "glonass_gnav_navigation_message.h" -#include "beidou_dnav_navigation_message.h" #include "galileo_almanac.h" +#include "galileo_navigation_message.h" +#include "glonass_gnav_navigation_message.h" #include "gnss_synchro.h" +#include "gps_cnav_navigation_message.h" +#include "gps_navigation_message.h" +#include "beidou_dnav_navigation_message.h" #include "pvt_solution.h" +#include "rtklib_rtkpos.h" +#include #include #include #include - /*! * \brief This class implements a simple PVT Least Squares solution */ @@ -84,12 +84,12 @@ private: bool d_flag_dump_enabled; bool d_flag_dump_mat_enabled; int d_nchannels; // Number of available channels for positioning - double dop_[4]; + std::array dop_; public: sol_t pvt_sol; ssat_t pvt_ssat[MAXSAT]; - rtklib_solver(int nchannels, std::string dump_filename, bool flag_dump_to_file, bool flag_dump_to_mat, rtk_t& rtk); + rtklib_solver(int nchannels, std::string dump_filename, bool flag_dump_to_file, bool flag_dump_to_mat, const rtk_t& rtk); ~rtklib_solver(); bool get_PVT(const std::map& gnss_observables_map, bool flag_averaging); @@ -101,7 +101,7 @@ public: std::map galileo_ephemeris_map; //!< Map storing new Galileo_Ephemeris std::map gps_ephemeris_map; //!< Map storing new GPS_Ephemeris std::map gps_cnav_ephemeris_map; //!< Map storing new GPS_CNAV_Ephemeris - std::map glonass_gnav_ephemeris_map; //!< Map storing new GLONASS GNAV Ephmeris + std::map glonass_gnav_ephemeris_map; //!< Map storing new GLONASS GNAV Ephemeris std::map beidou_dnav_ephemeris_map; //!< Map storing new GLONASS GNAV Ephmeris Galileo_Utc_Model galileo_utc_model; diff --git a/src/algorithms/acquisition/adapters/beidou_b1i_pcps_acquisition.cc b/src/algorithms/acquisition/adapters/beidou_b1i_pcps_acquisition.cc index 79c32ae3c..b355794ff 100644 --- a/src/algorithms/acquisition/adapters/beidou_b1i_pcps_acquisition.cc +++ b/src/algorithms/acquisition/adapters/beidou_b1i_pcps_acquisition.cc @@ -45,8 +45,12 @@ using google::LogMessage; BeidouB1iPcpsAcquisition::BeidouB1iPcpsAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + std::string role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { Acq_Conf acq_parameters = Acq_Conf(); configuration_ = configuration; @@ -332,3 +336,8 @@ gr::basic_block_sptr BeidouB1iPcpsAcquisition::get_right_block() { return acquisition_; } + +void BeidouB1iPcpsAcquisition::set_resampler_latency(uint32_t latency_samples) +{ + acquisition_->set_resampler_latency(latency_samples); +} diff --git a/src/algorithms/acquisition/adapters/beidou_b1i_pcps_acquisition.h b/src/algorithms/acquisition/adapters/beidou_b1i_pcps_acquisition.h index 7cd186ad2..e7a9c8430 100644 --- a/src/algorithms/acquisition/adapters/beidou_b1i_pcps_acquisition.h +++ b/src/algorithms/acquisition/adapters/beidou_b1i_pcps_acquisition.h @@ -34,6 +34,7 @@ #ifndef GNSS_SDR_BEIDOU_B1I_PCPS_ACQUISITION_H_ #define GNSS_SDR_BEIDOU_B1I_PCPS_ACQUISITION_H_ +#include "acq_conf.h" #include "acquisition_interface.h" #include "gnss_synchro.h" #include "pcps_acquisition.h" @@ -139,6 +140,12 @@ public: */ void stop_acquisition() override; + /*! + * \brief Sets the resampler latency to account it in the acquisition code delay estimation + */ + void set_resampler_latency(uint32_t latency_samples) override; + + private: ConfigurationInterface* configuration_; pcps_acquisition_sptr acquisition_; diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_8ms_ambiguous_acquisition.cc b/src/algorithms/acquisition/adapters/galileo_e1_pcps_8ms_ambiguous_acquisition.cc index 0c451be34..7af5d228f 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_8ms_ambiguous_acquisition.cc +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_8ms_ambiguous_acquisition.cc @@ -30,22 +30,23 @@ */ #include "galileo_e1_pcps_8ms_ambiguous_acquisition.h" -#include -#include -#include -#include "galileo_e1_signal_processing.h" #include "Galileo_E1.h" #include "configuration_interface.h" +#include "galileo_e1_signal_processing.h" #include "gnss_sdr_flags.h" +#include +#include using google::LogMessage; -void GalileoE1Pcps8msAmbiguousAcquisition::stop_acquisition() -{ -} + GalileoE1Pcps8msAmbiguousAcquisition::GalileoE1Pcps8msAmbiguousAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { configuration_ = configuration; std::string default_item_type = "gr_complex"; @@ -56,7 +57,7 @@ GalileoE1Pcps8msAmbiguousAcquisition::GalileoE1Pcps8msAmbiguousAcquisition( item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 4000000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 4000000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); dump_ = configuration_->property(role + ".dump", false); doppler_max_ = configuration_->property(role + ".doppler_max", 5000); @@ -86,7 +87,7 @@ GalileoE1Pcps8msAmbiguousAcquisition::GalileoE1Pcps8msAmbiguousAcquisition( code_ = new gr_complex[vector_length_]; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); acquisition_cc_ = galileo_pcps_8ms_make_acquisition_cc(sampled_ms_, max_dwells_, @@ -107,7 +108,7 @@ GalileoE1Pcps8msAmbiguousAcquisition::GalileoE1Pcps8msAmbiguousAcquisition( channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -125,10 +126,15 @@ GalileoE1Pcps8msAmbiguousAcquisition::~GalileoE1Pcps8msAmbiguousAcquisition() } +void GalileoE1Pcps8msAmbiguousAcquisition::stop_acquisition() +{ +} + + void GalileoE1Pcps8msAmbiguousAcquisition::set_channel(unsigned int channel) { channel_ = channel; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_channel(channel_); } @@ -137,7 +143,7 @@ void GalileoE1Pcps8msAmbiguousAcquisition::set_channel(unsigned int channel) void GalileoE1Pcps8msAmbiguousAcquisition::set_threshold(float threshold) { - float pfa = configuration_->property(role_ + boost::lexical_cast(channel_) + ".pfa", 0.0); + float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); if (pfa == 0.0) pfa = configuration_->property(role_ + ".pfa", 0.0); @@ -152,7 +158,7 @@ void GalileoE1Pcps8msAmbiguousAcquisition::set_threshold(float threshold) DLOG(INFO) << "Channel " << channel_ << " Threshold = " << threshold_; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_threshold(threshold_); } @@ -163,7 +169,7 @@ void GalileoE1Pcps8msAmbiguousAcquisition::set_doppler_max(unsigned int doppler_ { doppler_max_ = doppler_max; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_max(doppler_max_); } @@ -173,7 +179,7 @@ void GalileoE1Pcps8msAmbiguousAcquisition::set_doppler_max(unsigned int doppler_ void GalileoE1Pcps8msAmbiguousAcquisition::set_doppler_step(unsigned int doppler_step) { doppler_step_ = doppler_step; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_step(doppler_step_); } @@ -184,7 +190,7 @@ void GalileoE1Pcps8msAmbiguousAcquisition::set_gnss_synchro( Gnss_Synchro* gnss_synchro) { gnss_synchro_ = gnss_synchro; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_gnss_synchro(gnss_synchro_); } @@ -193,14 +199,11 @@ void GalileoE1Pcps8msAmbiguousAcquisition::set_gnss_synchro( signed int GalileoE1Pcps8msAmbiguousAcquisition::mag() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_cc_->mag(); } - else - { - return 0; - } + return 0; } @@ -213,12 +216,12 @@ void GalileoE1Pcps8msAmbiguousAcquisition::init() void GalileoE1Pcps8msAmbiguousAcquisition::set_local_code() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { bool cboc = configuration_->property( - "Acquisition" + boost::lexical_cast(channel_) + ".cboc", false); + "Acquisition" + std::to_string(channel_) + ".cboc", false); - std::complex* code = new std::complex[code_length_]; + auto* code = new std::complex[code_length_]; galileo_e1_code_gen_complex_sampled(code, gnss_synchro_->Signal, cboc, gnss_synchro_->PRN, fs_in_, 0, false); @@ -238,7 +241,7 @@ void GalileoE1Pcps8msAmbiguousAcquisition::set_local_code() void GalileoE1Pcps8msAmbiguousAcquisition::reset() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_active(true); } @@ -257,9 +260,9 @@ float GalileoE1Pcps8msAmbiguousAcquisition::calculate_threshold(float pfa) unsigned int ncells = vector_length_ * frequency_bins; double exponent = 1 / static_cast(ncells); double val = pow(1.0 - pfa, exponent); - double lambda = double(vector_length_); + auto lambda = double(vector_length_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } @@ -267,7 +270,7 @@ float GalileoE1Pcps8msAmbiguousAcquisition::calculate_threshold(float pfa) void GalileoE1Pcps8msAmbiguousAcquisition::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->connect(stream_to_vector_, 0, acquisition_cc_, 0); } @@ -276,7 +279,7 @@ void GalileoE1Pcps8msAmbiguousAcquisition::connect(gr::top_block_sptr top_block) void GalileoE1Pcps8msAmbiguousAcquisition::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->disconnect(stream_to_vector_, 0, acquisition_cc_, 0); } diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_8ms_ambiguous_acquisition.h b/src/algorithms/acquisition/adapters/galileo_e1_pcps_8ms_ambiguous_acquisition.h index d64c0f28b..ce9cd440b 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_8ms_ambiguous_acquisition.h +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_8ms_ambiguous_acquisition.h @@ -32,9 +32,9 @@ #ifndef GNSS_SDR_GALILEO_E1_PCPS_8MS_AMBIGUOUS_ACQUISITION_H_ #define GNSS_SDR_GALILEO_E1_PCPS_8MS_AMBIGUOUS_ACQUISITION_H_ -#include "gnss_synchro.h" #include "acquisition_interface.h" #include "galileo_pcps_8ms_acquisition_cc.h" +#include "gnss_synchro.h" #include #include @@ -48,7 +48,8 @@ class GalileoE1Pcps8msAmbiguousAcquisition : public AcquisitionInterface { public: GalileoE1Pcps8msAmbiguousAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GalileoE1Pcps8msAmbiguousAcquisition(); @@ -130,6 +131,9 @@ public: void set_state(int state __attribute__((unused))) override{}; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + + private: ConfigurationInterface* configuration_; galileo_pcps_8ms_acquisition_cc_sptr acquisition_cc_; @@ -144,7 +148,7 @@ private: unsigned int doppler_step_; unsigned int sampled_ms_; unsigned int max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; std::string dump_filename_; std::complex* code_; diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc index 7efab9681..79e25061c 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc @@ -30,27 +30,26 @@ */ #include "galileo_e1_pcps_ambiguous_acquisition.h" +#include "Galileo_E1.h" +#include "acq_conf.h" #include "configuration_interface.h" #include "galileo_e1_signal_processing.h" -#include "Galileo_E1.h" #include "gnss_sdr_flags.h" -#include "acq_conf.h" -#include #include #include using google::LogMessage; -void GalileoE1PcpsAmbiguousAcquisition::stop_acquisition() -{ -} GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { - Acq_Conf acq_parameters; configuration_ = configuration; std::string default_item_type = "gr_complex"; std::string default_dump_filename = "./acquisition.mat"; @@ -59,43 +58,69 @@ GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition( item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 4000000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 4000000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); - acq_parameters.fs_in = fs_in_; - acq_parameters.samples_per_chip = static_cast(ceil((1.0 / Galileo_E1_CODE_CHIP_RATE_HZ) * static_cast(acq_parameters.fs_in))); + acq_parameters_.fs_in = fs_in_; doppler_max_ = configuration_->property(role + ".doppler_max", 5000); if (FLAGS_doppler_max != 0) doppler_max_ = FLAGS_doppler_max; - acq_parameters.doppler_max = doppler_max_; - acq_parameters.ms_per_code = 4; - sampled_ms_ = configuration_->property(role + ".coherent_integration_time_ms", acq_parameters.ms_per_code); - acq_parameters.sampled_ms = sampled_ms_; - if ((acq_parameters.sampled_ms % acq_parameters.ms_per_code) != 0) + acq_parameters_.doppler_max = doppler_max_; + acq_parameters_.ms_per_code = 4; + sampled_ms_ = configuration_->property(role + ".coherent_integration_time_ms", acq_parameters_.ms_per_code); + acq_parameters_.sampled_ms = sampled_ms_; + if ((acq_parameters_.sampled_ms % acq_parameters_.ms_per_code) != 0) { LOG(WARNING) << "Parameter coherent_integration_time_ms should be a multiple of 4. Setting it to 4"; - acq_parameters.sampled_ms = acq_parameters.ms_per_code; + acq_parameters_.sampled_ms = acq_parameters_.ms_per_code; } bit_transition_flag_ = configuration_->property(role + ".bit_transition_flag", false); - acq_parameters.bit_transition_flag = bit_transition_flag_; + acq_parameters_.bit_transition_flag = bit_transition_flag_; use_CFAR_algorithm_flag_ = configuration_->property(role + ".use_CFAR_algorithm", true); //will be false in future versions - acq_parameters.use_CFAR_algorithm_flag = use_CFAR_algorithm_flag_; + acq_parameters_.use_CFAR_algorithm_flag = use_CFAR_algorithm_flag_; acquire_pilot_ = configuration_->property(role + ".acquire_pilot", false); //will be true in future versions max_dwells_ = configuration_->property(role + ".max_dwells", 1); - acq_parameters.max_dwells = max_dwells_; + acq_parameters_.max_dwells = max_dwells_; dump_ = configuration_->property(role + ".dump", false); - acq_parameters.dump = dump_; - acq_parameters.dump_channel = configuration_->property(role + ".dump_channel", 0); + acq_parameters_.dump = dump_; + acq_parameters_.dump_channel = configuration_->property(role + ".dump_channel", 0); blocking_ = configuration_->property(role + ".blocking", true); - acq_parameters.blocking = blocking_; + acq_parameters_.blocking = blocking_; dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); - acq_parameters.dump_filename = dump_filename_; - //--- Find number of samples per spreading code (4 ms) ----------------- - code_length_ = static_cast(std::floor(static_cast(fs_in_) / (Galileo_E1_CODE_CHIP_RATE_HZ / Galileo_E1_B_CODE_LENGTH_CHIPS))); + acq_parameters_.dump_filename = dump_filename_; - float samples_per_ms = static_cast(fs_in_) * 0.001; - acq_parameters.samples_per_ms = samples_per_ms; - acq_parameters.samples_per_code = acq_parameters.samples_per_ms * static_cast(Galileo_E1_CODE_PERIOD_MS); - vector_length_ = sampled_ms_ * samples_per_ms; + acq_parameters_.use_automatic_resampler = configuration_->property("GNSS-SDR.use_acquisition_resampler", false); + if (acq_parameters_.use_automatic_resampler == true and item_type_ != "gr_complex") + { + LOG(WARNING) << "Galileo E1 acqisition disabled the automatic resampler feature because its item_type is not set to gr_complex"; + acq_parameters_.use_automatic_resampler = false; + } + if (acq_parameters_.use_automatic_resampler) + { + if (acq_parameters_.fs_in > Galileo_E1_OPT_ACQ_FS_HZ) + { + acq_parameters_.resampler_ratio = floor(static_cast(acq_parameters_.fs_in) / Galileo_E1_OPT_ACQ_FS_HZ); + uint32_t decimation = acq_parameters_.fs_in / Galileo_E1_OPT_ACQ_FS_HZ; + while (acq_parameters_.fs_in % decimation > 0) + { + decimation--; + }; + acq_parameters_.resampler_ratio = decimation; + acq_parameters_.resampled_fs = acq_parameters_.fs_in / static_cast(acq_parameters_.resampler_ratio); + } + //--- Find number of samples per spreading code (4 ms) ----------------- + code_length_ = static_cast(std::floor(static_cast(acq_parameters_.resampled_fs) / (Galileo_E1_CODE_CHIP_RATE_HZ / Galileo_E1_B_CODE_LENGTH_CHIPS))); + acq_parameters_.samples_per_ms = static_cast(acq_parameters_.resampled_fs) * 0.001; + acq_parameters_.samples_per_chip = static_cast(ceil((1.0 / Galileo_E1_CODE_CHIP_RATE_HZ) * static_cast(acq_parameters_.resampled_fs))); + } + else + { + //--- Find number of samples per spreading code (4 ms) ----------------- + code_length_ = static_cast(std::floor(static_cast(fs_in_) / (Galileo_E1_CODE_CHIP_RATE_HZ / Galileo_E1_B_CODE_LENGTH_CHIPS))); + acq_parameters_.samples_per_ms = static_cast(fs_in_) * 0.001; + acq_parameters_.samples_per_chip = static_cast(ceil((1.0 / Galileo_E1_CODE_CHIP_RATE_HZ) * static_cast(acq_parameters_.fs_in))); + } + acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast(Galileo_E1_CODE_PERIOD_MS); + vector_length_ = sampled_ms_ * acq_parameters_.samples_per_ms; if (bit_transition_flag_) { vector_length_ *= 2; @@ -103,7 +128,7 @@ GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition( code_ = new gr_complex[vector_length_]; - if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { item_size_ = sizeof(lv_16sc_t); } @@ -111,15 +136,15 @@ GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition( { item_size_ = sizeof(gr_complex); } - acq_parameters.it_size = item_size_; - acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); - acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); - acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false); - acq_parameters.blocking_on_standby = configuration_->property(role + ".blocking_on_standby", false); - acquisition_ = pcps_make_acquisition(acq_parameters); + acq_parameters_.it_size = item_size_; + acq_parameters_.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); + acq_parameters_.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); + acq_parameters_.make_2_steps = configuration_->property(role + ".make_two_steps", false); + acq_parameters_.blocking_on_standby = configuration_->property(role + ".blocking_on_standby", false); + acquisition_ = pcps_make_acquisition(acq_parameters_); DLOG(INFO) << "acquisition(" << acquisition_->unique_id() << ")"; - if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { cbyte_to_float_x2_ = make_complex_byte_to_float_x2(); float_to_complex_ = gr::blocks::float_to_complex::make(); @@ -128,7 +153,7 @@ GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition( channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -146,6 +171,11 @@ GalileoE1PcpsAmbiguousAcquisition::~GalileoE1PcpsAmbiguousAcquisition() } +void GalileoE1PcpsAmbiguousAcquisition::stop_acquisition() +{ +} + + void GalileoE1PcpsAmbiguousAcquisition::set_channel(unsigned int channel) { channel_ = channel; @@ -155,7 +185,7 @@ void GalileoE1PcpsAmbiguousAcquisition::set_channel(unsigned int channel) void GalileoE1PcpsAmbiguousAcquisition::set_threshold(float threshold) { - float pfa = configuration_->property(role_ + boost::lexical_cast(channel_) + ".pfa", 0.0); + float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); if (pfa == 0.0) pfa = configuration_->property(role_ + ".pfa", 0.0); @@ -214,21 +244,37 @@ void GalileoE1PcpsAmbiguousAcquisition::init() void GalileoE1PcpsAmbiguousAcquisition::set_local_code() { bool cboc = configuration_->property( - "Acquisition" + boost::lexical_cast(channel_) + ".cboc", false); + "Acquisition" + std::to_string(channel_) + ".cboc", false); - std::complex* code = new std::complex[code_length_]; + auto* code = new std::complex[code_length_]; if (acquire_pilot_ == true) { //set local signal generator to Galileo E1 pilot component (1C) char pilot_signal[3] = "1C"; - galileo_e1_code_gen_complex_sampled(code, pilot_signal, - cboc, gnss_synchro_->PRN, fs_in_, 0, false); + if (acq_parameters_.use_automatic_resampler) + { + galileo_e1_code_gen_complex_sampled(code, pilot_signal, + cboc, gnss_synchro_->PRN, acq_parameters_.resampled_fs, 0, false); + } + else + { + galileo_e1_code_gen_complex_sampled(code, pilot_signal, + cboc, gnss_synchro_->PRN, fs_in_, 0, false); + } } else { - galileo_e1_code_gen_complex_sampled(code, gnss_synchro_->Signal, - cboc, gnss_synchro_->PRN, fs_in_, 0, false); + if (acq_parameters_.use_automatic_resampler) + { + galileo_e1_code_gen_complex_sampled(code, gnss_synchro_->Signal, + cboc, gnss_synchro_->PRN, acq_parameters_.resampled_fs, 0, false); + } + else + { + galileo_e1_code_gen_complex_sampled(code, gnss_synchro_->Signal, + cboc, gnss_synchro_->PRN, fs_in_, 0, false); + } } @@ -267,9 +313,9 @@ float GalileoE1PcpsAmbiguousAcquisition::calculate_threshold(float pfa) unsigned int ncells = vector_length_ * frequency_bins; double exponent = 1 / static_cast(ncells); double val = pow(1.0 - pfa, exponent); - double lambda = double(vector_length_); + auto lambda = double(vector_length_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } @@ -277,15 +323,15 @@ float GalileoE1PcpsAmbiguousAcquisition::calculate_threshold(float pfa) void GalileoE1PcpsAmbiguousAcquisition::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to connect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to connect } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { // Since a byte-based acq implementation is not available, // we just convert cshorts to gr_complex @@ -302,15 +348,15 @@ void GalileoE1PcpsAmbiguousAcquisition::connect(gr::top_block_sptr top_block) void GalileoE1PcpsAmbiguousAcquisition::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to disconnect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to disconnect } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { top_block->disconnect(cbyte_to_float_x2_, 0, float_to_complex_, 0); top_block->disconnect(cbyte_to_float_x2_, 1, float_to_complex_, 1); @@ -325,23 +371,21 @@ void GalileoE1PcpsAmbiguousAcquisition::disconnect(gr::top_block_sptr top_block) gr::basic_block_sptr GalileoE1PcpsAmbiguousAcquisition::get_left_block() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return acquisition_; } - else if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { return cbyte_to_float_x2_; } - else - { - LOG(WARNING) << item_type_ << " unknown acquisition item type"; - return nullptr; - } + + LOG(WARNING) << item_type_ << " unknown acquisition item type"; + return nullptr; } @@ -349,3 +393,8 @@ gr::basic_block_sptr GalileoE1PcpsAmbiguousAcquisition::get_right_block() { return acquisition_; } + +void GalileoE1PcpsAmbiguousAcquisition::set_resampler_latency(uint32_t latency_samples) +{ + acquisition_->set_resampler_latency(latency_samples); +} diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h index 657f03064..ee4538022 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h @@ -32,10 +32,11 @@ #ifndef GNSS_SDR_GALILEO_E1_PCPS_AMBIGUOUS_ACQUISITION_H_ #define GNSS_SDR_GALILEO_E1_PCPS_AMBIGUOUS_ACQUISITION_H_ +#include "acq_conf.h" #include "acquisition_interface.h" +#include "complex_byte_to_float_x2.h" #include "gnss_synchro.h" #include "pcps_acquisition.h" -#include "complex_byte_to_float_x2.h" #include #include #include @@ -51,7 +52,8 @@ class GalileoE1PcpsAmbiguousAcquisition : public AcquisitionInterface { public: GalileoE1PcpsAmbiguousAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GalileoE1PcpsAmbiguousAcquisition(); @@ -136,8 +138,16 @@ public: */ void stop_acquisition() override; + /*! + * \brief Sets the resampler latency to account it in the acquisition code delay estimation + */ + + void set_resampler_latency(uint32_t latency_samples) override; + + private: ConfigurationInterface* configuration_; + Acq_Conf acq_parameters_; pcps_acquisition_sptr acquisition_; gr::blocks::float_to_complex::sptr float_to_complex_; complex_byte_to_float_x2_sptr cbyte_to_float_x2_; @@ -154,7 +164,7 @@ private: unsigned int doppler_step_; unsigned int sampled_ms_; unsigned int max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; bool blocking_; std::string dump_filename_; diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.cc b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.cc index 041039147..6097ce61d 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.cc +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.cc @@ -30,9 +30,9 @@ */ #include "galileo_e1_pcps_ambiguous_acquisition_fpga.h" +#include "Galileo_E1.h" #include "configuration_interface.h" #include "galileo_e1_signal_processing.h" -#include "Galileo_E1.h" #include "gnss_sdr_flags.h" #include #include @@ -41,13 +41,14 @@ using google::LogMessage; -void GalileoE1PcpsAmbiguousAcquisitionFpga::stop_acquisition() -{ -} GalileoE1PcpsAmbiguousAcquisitionFpga::GalileoE1PcpsAmbiguousAcquisitionFpga( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { //printf("top acq constructor start\n"); pcpsconf_fpga_t acq_parameters; @@ -59,8 +60,8 @@ GalileoE1PcpsAmbiguousAcquisitionFpga::GalileoE1PcpsAmbiguousAcquisitionFpga( // item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 4000000); - long fs_in = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 4000000); + int64_t fs_in = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); acq_parameters.fs_in = fs_in; //if_ = configuration_->property(role + ".if", 0); //acq_parameters.freq = if_; @@ -88,7 +89,7 @@ GalileoE1PcpsAmbiguousAcquisitionFpga::GalileoE1PcpsAmbiguousAcquisitionFpga( // dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); // acq_parameters.dump_filename = dump_filename_; //--- Find number of samples per spreading code (4 ms) ----------------- - unsigned int code_length = static_cast(std::round(static_cast(fs_in) / (Galileo_E1_CODE_CHIP_RATE_HZ / Galileo_E1_B_CODE_LENGTH_CHIPS))); + auto code_length = static_cast(std::round(static_cast(fs_in) / (Galileo_E1_CODE_CHIP_RATE_HZ / Galileo_E1_B_CODE_LENGTH_CHIPS))); //acq_parameters.samples_per_code = code_length_; //int samples_per_ms = static_cast(std::round(static_cast(fs_in_) * 0.001)); //acq_parameters.samples_per_ms = samples_per_ms; @@ -119,9 +120,9 @@ GalileoE1PcpsAmbiguousAcquisitionFpga::GalileoE1PcpsAmbiguousAcquisitionFpga( // compute all the GALILEO E1 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time // a channel is assigned) - gr::fft::fft_complex* fft_if = new gr::fft::fft_complex(nsamples_total, true); // Direct FFT - std::complex* code = new std::complex[nsamples_total]; // buffer for the local code - gr_complex* fft_codes_padded = static_cast(volk_gnsssdr_malloc(nsamples_total * sizeof(gr_complex), volk_gnsssdr_get_alignment())); + auto* fft_if = new gr::fft::fft_complex(nsamples_total, true); // Direct FFT + auto* code = new std::complex[nsamples_total]; // buffer for the local code + auto* fft_codes_padded = static_cast(volk_gnsssdr_malloc(nsamples_total * sizeof(gr_complex), volk_gnsssdr_get_alignment())); d_all_fft_codes_ = new lv_16sc_t[nsamples_total * Galileo_E1_NUMBER_OF_CODES]; // memory containing all the possible fft codes for PRN 0 to 32 float max; // temporary maxima search @@ -173,7 +174,7 @@ GalileoE1PcpsAmbiguousAcquisitionFpga::GalileoE1PcpsAmbiguousAcquisitionFpga( // // fill in zero padding for (int s = code_length; s < nsamples_total; s++) { - code[s] = std::complex(static_cast(0, 0)); + code[s] = std::complex(0.0, 0.0); //code[s] = 0; } @@ -296,7 +297,7 @@ GalileoE1PcpsAmbiguousAcquisitionFpga::GalileoE1PcpsAmbiguousAcquisitionFpga( channel_ = 0; //threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; //printf("top acq constructor end\n"); } @@ -310,6 +311,11 @@ GalileoE1PcpsAmbiguousAcquisitionFpga::~GalileoE1PcpsAmbiguousAcquisitionFpga() } +void GalileoE1PcpsAmbiguousAcquisitionFpga::stop_acquisition() +{ +} + + void GalileoE1PcpsAmbiguousAcquisitionFpga::set_channel(unsigned int channel) { //printf("top acq set channel start\n"); diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.h b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.h index ebb326337..09391ddb8 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.h +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.h @@ -33,11 +33,11 @@ #define GNSS_SDR_GALILEO_E1_PCPS_AMBIGUOUS_ACQUISITION_FPGA_H_ #include "acquisition_interface.h" +#include "complex_byte_to_float_x2.h" #include "gnss_synchro.h" #include "pcps_acquisition_fpga.h" -#include "complex_byte_to_float_x2.h" -#include #include +#include #include #include @@ -52,7 +52,8 @@ class GalileoE1PcpsAmbiguousAcquisitionFpga : public AcquisitionInterface { public: GalileoE1PcpsAmbiguousAcquisitionFpga(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GalileoE1PcpsAmbiguousAcquisitionFpga(); @@ -141,6 +142,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: ConfigurationInterface* configuration_; //pcps_acquisition_sptr acquisition_; diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.cc b/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.cc index 46a3b1974..76869f266 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.cc +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.cc @@ -30,23 +30,23 @@ */ #include "galileo_e1_pcps_cccwsr_ambiguous_acquisition.h" -#include -#include -#include -#include "galileo_e1_signal_processing.h" #include "Galileo_E1.h" #include "configuration_interface.h" +#include "galileo_e1_signal_processing.h" #include "gnss_sdr_flags.h" +#include +#include using google::LogMessage; -void GalileoE1PcpsCccwsrAmbiguousAcquisition::stop_acquisition() -{ -} GalileoE1PcpsCccwsrAmbiguousAcquisition::GalileoE1PcpsCccwsrAmbiguousAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { configuration_ = configuration; std::string default_item_type = "gr_complex"; @@ -56,7 +56,7 @@ GalileoE1PcpsCccwsrAmbiguousAcquisition::GalileoE1PcpsCccwsrAmbiguousAcquisition item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 4000000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 4000000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); dump_ = configuration_->property(role + ".dump", false); doppler_max_ = configuration_->property(role + ".doppler_max", 5000); @@ -88,7 +88,7 @@ GalileoE1PcpsCccwsrAmbiguousAcquisition::GalileoE1PcpsCccwsrAmbiguousAcquisition code_data_ = new gr_complex[vector_length_]; code_pilot_ = new gr_complex[vector_length_]; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); acquisition_cc_ = pcps_cccwsr_make_acquisition_cc(sampled_ms_, max_dwells_, @@ -109,7 +109,7 @@ GalileoE1PcpsCccwsrAmbiguousAcquisition::GalileoE1PcpsCccwsrAmbiguousAcquisition channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -128,10 +128,15 @@ GalileoE1PcpsCccwsrAmbiguousAcquisition::~GalileoE1PcpsCccwsrAmbiguousAcquisitio } +void GalileoE1PcpsCccwsrAmbiguousAcquisition::stop_acquisition() +{ +} + + void GalileoE1PcpsCccwsrAmbiguousAcquisition::set_channel(unsigned int channel) { channel_ = channel; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_channel(channel_); } @@ -140,7 +145,7 @@ void GalileoE1PcpsCccwsrAmbiguousAcquisition::set_channel(unsigned int channel) void GalileoE1PcpsCccwsrAmbiguousAcquisition::set_threshold(float threshold) { - // float pfa = configuration_->property(role_+ boost::lexical_cast(channel_) + ".pfa", 0.0); + // float pfa = configuration_->property(role_+ std::to_string(channel_) + ".pfa", 0.0); // if(pfa==0.0) pfa = configuration_->property(role_+".pfa", 0.0); @@ -157,7 +162,7 @@ void GalileoE1PcpsCccwsrAmbiguousAcquisition::set_threshold(float threshold) DLOG(INFO) << "Channel " << channel_ << " Threshold = " << threshold_; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_threshold(threshold_); } @@ -168,7 +173,7 @@ void GalileoE1PcpsCccwsrAmbiguousAcquisition::set_doppler_max(unsigned int doppl { doppler_max_ = doppler_max; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_max(doppler_max_); } @@ -178,7 +183,7 @@ void GalileoE1PcpsCccwsrAmbiguousAcquisition::set_doppler_max(unsigned int doppl void GalileoE1PcpsCccwsrAmbiguousAcquisition::set_doppler_step(unsigned int doppler_step) { doppler_step_ = doppler_step; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_step(doppler_step_); } @@ -188,7 +193,7 @@ void GalileoE1PcpsCccwsrAmbiguousAcquisition::set_gnss_synchro( Gnss_Synchro* gnss_synchro) { gnss_synchro_ = gnss_synchro; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_gnss_synchro(gnss_synchro_); } @@ -197,14 +202,11 @@ void GalileoE1PcpsCccwsrAmbiguousAcquisition::set_gnss_synchro( signed int GalileoE1PcpsCccwsrAmbiguousAcquisition::mag() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_cc_->mag(); } - else - { - return 0; - } + return 0; } @@ -217,10 +219,10 @@ void GalileoE1PcpsCccwsrAmbiguousAcquisition::init() void GalileoE1PcpsCccwsrAmbiguousAcquisition::set_local_code() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { bool cboc = configuration_->property( - "Acquisition" + boost::lexical_cast(channel_) + ".cboc", false); + "Acquisition" + std::to_string(channel_) + ".cboc", false); char signal[3]; @@ -241,7 +243,7 @@ void GalileoE1PcpsCccwsrAmbiguousAcquisition::set_local_code() void GalileoE1PcpsCccwsrAmbiguousAcquisition::reset() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_active(true); } @@ -264,7 +266,7 @@ float GalileoE1PcpsCccwsrAmbiguousAcquisition::calculate_threshold(float pfa) void GalileoE1PcpsCccwsrAmbiguousAcquisition::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->connect(stream_to_vector_, 0, acquisition_cc_, 0); } @@ -273,7 +275,7 @@ void GalileoE1PcpsCccwsrAmbiguousAcquisition::connect(gr::top_block_sptr top_blo void GalileoE1PcpsCccwsrAmbiguousAcquisition::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->disconnect(stream_to_vector_, 0, acquisition_cc_, 0); } diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.h b/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.h index 47c19becb..4e472c112 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.h +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_cccwsr_ambiguous_acquisition.h @@ -32,8 +32,8 @@ #ifndef GNSS_SDR_GALILEO_E1_PCPS_CCCWSR_AMBIGUOUS_ACQUISITION_H_ #define GNSS_SDR_GALILEO_E1_PCPS_CCCWSR_AMBIGUOUS_ACQUISITION_H_ -#include "gnss_synchro.h" #include "acquisition_interface.h" +#include "gnss_synchro.h" #include "pcps_cccwsr_acquisition_cc.h" #include #include @@ -48,7 +48,8 @@ class GalileoE1PcpsCccwsrAmbiguousAcquisition : public AcquisitionInterface { public: GalileoE1PcpsCccwsrAmbiguousAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GalileoE1PcpsCccwsrAmbiguousAcquisition(); @@ -130,6 +131,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: ConfigurationInterface* configuration_; pcps_cccwsr_acquisition_cc_sptr acquisition_cc_; @@ -145,7 +148,7 @@ private: unsigned int doppler_step_; unsigned int sampled_ms_; unsigned int max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; std::string dump_filename_; std::complex* code_data_; diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.cc b/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.cc index 36ed925df..b409eee0b 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.cc +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.cc @@ -30,23 +30,23 @@ */ #include "galileo_e1_pcps_quicksync_ambiguous_acquisition.h" -#include -#include -#include -#include "galileo_e1_signal_processing.h" #include "Galileo_E1.h" #include "configuration_interface.h" +#include "galileo_e1_signal_processing.h" #include "gnss_sdr_flags.h" +#include +#include using google::LogMessage; -void GalileoE1PcpsQuickSyncAmbiguousAcquisition::stop_acquisition() -{ -} GalileoE1PcpsQuickSyncAmbiguousAcquisition::GalileoE1PcpsQuickSyncAmbiguousAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { configuration_ = configuration; std::string default_item_type = "gr_complex"; @@ -57,7 +57,7 @@ GalileoE1PcpsQuickSyncAmbiguousAcquisition::GalileoE1PcpsQuickSyncAmbiguousAcqui item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 4000000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 4000000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); dump_ = configuration_->property(role + ".dump", false); doppler_max_ = configuration_->property(role + ".doppler_max", 5000); @@ -119,7 +119,7 @@ GalileoE1PcpsQuickSyncAmbiguousAcquisition::GalileoE1PcpsQuickSyncAmbiguousAcqui << ", Folding factor: " << folding_factor_ << ", Sampled ms: " << sampled_ms_ << ", Code Length: " << code_length_; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); acquisition_cc_ = pcps_quicksync_make_acquisition_cc(folding_factor_, @@ -142,7 +142,7 @@ GalileoE1PcpsQuickSyncAmbiguousAcquisition::GalileoE1PcpsQuickSyncAmbiguousAcqui channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -160,10 +160,15 @@ GalileoE1PcpsQuickSyncAmbiguousAcquisition::~GalileoE1PcpsQuickSyncAmbiguousAcqu } +void GalileoE1PcpsQuickSyncAmbiguousAcquisition::stop_acquisition() +{ +} + + void GalileoE1PcpsQuickSyncAmbiguousAcquisition::set_channel(unsigned int channel) { channel_ = channel; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_channel(channel_); } @@ -172,7 +177,7 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisition::set_channel(unsigned int channe void GalileoE1PcpsQuickSyncAmbiguousAcquisition::set_threshold(float threshold) { - float pfa = configuration_->property(role_ + boost::lexical_cast(channel_) + ".pfa", 0.0); + float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); if (pfa == 0.0) pfa = configuration_->property(role_ + ".pfa", 0.0); @@ -187,7 +192,7 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisition::set_threshold(float threshold) DLOG(INFO) << "Channel " << channel_ << " Threshold = " << threshold_; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_threshold(threshold_); } @@ -198,7 +203,7 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisition::set_doppler_max(unsigned int do { doppler_max_ = doppler_max; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_max(doppler_max_); } @@ -208,7 +213,7 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisition::set_doppler_max(unsigned int do void GalileoE1PcpsQuickSyncAmbiguousAcquisition::set_doppler_step(unsigned int doppler_step) { doppler_step_ = doppler_step; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_step(doppler_step_); } @@ -218,7 +223,7 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisition::set_gnss_synchro( Gnss_Synchro* gnss_synchro) { gnss_synchro_ = gnss_synchro; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_gnss_synchro(gnss_synchro_); } @@ -228,14 +233,11 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisition::set_gnss_synchro( signed int GalileoE1PcpsQuickSyncAmbiguousAcquisition::mag() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_cc_->mag(); } - else - { - return 0; - } + return 0; } @@ -248,12 +250,12 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisition::init() void GalileoE1PcpsQuickSyncAmbiguousAcquisition::set_local_code() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { bool cboc = configuration_->property( - "Acquisition" + boost::lexical_cast(channel_) + ".cboc", false); + "Acquisition" + std::to_string(channel_) + ".cboc", false); - std::complex* code = new std::complex[code_length_]; + auto* code = new std::complex[code_length_]; galileo_e1_code_gen_complex_sampled(code, gnss_synchro_->Signal, cboc, gnss_synchro_->PRN, fs_in_, 0, false); @@ -269,14 +271,14 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisition::set_local_code() acquisition_cc_->set_local_code(code_); delete[] code; - code = NULL; + code = nullptr; } } void GalileoE1PcpsQuickSyncAmbiguousAcquisition::reset() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_active(true); } @@ -284,7 +286,7 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisition::reset() void GalileoE1PcpsQuickSyncAmbiguousAcquisition::set_state(int state) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_state(state); } @@ -306,7 +308,7 @@ float GalileoE1PcpsQuickSyncAmbiguousAcquisition::calculate_threshold(float pfa) double val = pow(1.0 - pfa, exponent); double lambda = static_cast(code_length_) / static_cast(folding_factor_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } @@ -314,7 +316,7 @@ float GalileoE1PcpsQuickSyncAmbiguousAcquisition::calculate_threshold(float pfa) void GalileoE1PcpsQuickSyncAmbiguousAcquisition::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->connect(stream_to_vector_, 0, acquisition_cc_, 0); } @@ -323,7 +325,7 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisition::connect(gr::top_block_sptr top_ void GalileoE1PcpsQuickSyncAmbiguousAcquisition::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->disconnect(stream_to_vector_, 0, acquisition_cc_, 0); } diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.h b/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.h index 1d7b25880..981cf46a6 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.h +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_quicksync_ambiguous_acquisition.h @@ -32,8 +32,8 @@ #ifndef GNSS_SDR_GALILEO_E1_PCPS_QUICKSYNC_AMBIGUOUS_ACQUISITION_H_ #define GNSS_SDR_GALILEO_E1_PCPS_QUICKSYNC_AMBIGUOUS_ACQUISITION_H_ -#include "gnss_synchro.h" #include "acquisition_interface.h" +#include "gnss_synchro.h" #include "pcps_quicksync_acquisition_cc.h" #include #include @@ -49,7 +49,8 @@ class GalileoE1PcpsQuickSyncAmbiguousAcquisition : public AcquisitionInterface { public: GalileoE1PcpsQuickSyncAmbiguousAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GalileoE1PcpsQuickSyncAmbiguousAcquisition(); @@ -134,6 +135,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: ConfigurationInterface* configuration_; pcps_quicksync_acquisition_cc_sptr acquisition_cc_; @@ -150,7 +153,7 @@ private: unsigned int sampled_ms_; unsigned int max_dwells_; unsigned int folding_factor_; - long fs_in_; + int64_t fs_in_; bool dump_; std::string dump_filename_; std::complex* code_; diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.cc b/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.cc index 4d7038364..20418f7ef 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.cc +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.cc @@ -30,23 +30,23 @@ */ #include "galileo_e1_pcps_tong_ambiguous_acquisition.h" -#include -#include -#include -#include "galileo_e1_signal_processing.h" #include "Galileo_E1.h" #include "configuration_interface.h" +#include "galileo_e1_signal_processing.h" #include "gnss_sdr_flags.h" +#include +#include using google::LogMessage; -void GalileoE1PcpsTongAmbiguousAcquisition::stop_acquisition() -{ -} GalileoE1PcpsTongAmbiguousAcquisition::GalileoE1PcpsTongAmbiguousAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { configuration_ = configuration; std::string default_item_type = "gr_complex"; @@ -57,7 +57,7 @@ GalileoE1PcpsTongAmbiguousAcquisition::GalileoE1PcpsTongAmbiguousAcquisition( item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 4000000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 4000000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); dump_ = configuration_->property(role + ".dump", false); doppler_max_ = configuration_->property(role + ".doppler_max", 5000); @@ -90,7 +90,7 @@ GalileoE1PcpsTongAmbiguousAcquisition::GalileoE1PcpsTongAmbiguousAcquisition( code_ = new gr_complex[vector_length_]; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); acquisition_cc_ = pcps_tong_make_acquisition_cc(sampled_ms_, doppler_max_, @@ -112,7 +112,7 @@ GalileoE1PcpsTongAmbiguousAcquisition::GalileoE1PcpsTongAmbiguousAcquisition( channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -130,10 +130,15 @@ GalileoE1PcpsTongAmbiguousAcquisition::~GalileoE1PcpsTongAmbiguousAcquisition() } +void GalileoE1PcpsTongAmbiguousAcquisition::stop_acquisition() +{ +} + + void GalileoE1PcpsTongAmbiguousAcquisition::set_channel(unsigned int channel) { channel_ = channel; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_channel(channel_); } @@ -142,7 +147,7 @@ void GalileoE1PcpsTongAmbiguousAcquisition::set_channel(unsigned int channel) void GalileoE1PcpsTongAmbiguousAcquisition::set_threshold(float threshold) { - float pfa = configuration_->property(role_ + boost::lexical_cast(channel_) + ".pfa", 0.0); + float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); if (pfa == 0.0) pfa = configuration_->property(role_ + ".pfa", 0.0); @@ -157,7 +162,7 @@ void GalileoE1PcpsTongAmbiguousAcquisition::set_threshold(float threshold) DLOG(INFO) << "Channel " << channel_ << " Threshold = " << threshold_; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_threshold(threshold_); } @@ -168,7 +173,7 @@ void GalileoE1PcpsTongAmbiguousAcquisition::set_doppler_max(unsigned int doppler { doppler_max_ = doppler_max; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_max(doppler_max_); } @@ -178,7 +183,7 @@ void GalileoE1PcpsTongAmbiguousAcquisition::set_doppler_max(unsigned int doppler void GalileoE1PcpsTongAmbiguousAcquisition::set_doppler_step(unsigned int doppler_step) { doppler_step_ = doppler_step; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_step(doppler_step_); } @@ -189,7 +194,7 @@ void GalileoE1PcpsTongAmbiguousAcquisition::set_gnss_synchro( Gnss_Synchro* gnss_synchro) { gnss_synchro_ = gnss_synchro; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_gnss_synchro(gnss_synchro_); } @@ -198,14 +203,11 @@ void GalileoE1PcpsTongAmbiguousAcquisition::set_gnss_synchro( signed int GalileoE1PcpsTongAmbiguousAcquisition::mag() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_cc_->mag(); } - else - { - return 0; - } + return 0; } @@ -218,12 +220,12 @@ void GalileoE1PcpsTongAmbiguousAcquisition::init() void GalileoE1PcpsTongAmbiguousAcquisition::set_local_code() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { bool cboc = configuration_->property( - "Acquisition" + boost::lexical_cast(channel_) + ".cboc", false); + "Acquisition" + std::to_string(channel_) + ".cboc", false); - std::complex* code = new std::complex[code_length_]; + auto* code = new std::complex[code_length_]; galileo_e1_code_gen_complex_sampled(code, gnss_synchro_->Signal, cboc, gnss_synchro_->PRN, fs_in_, 0, false); @@ -243,7 +245,7 @@ void GalileoE1PcpsTongAmbiguousAcquisition::set_local_code() void GalileoE1PcpsTongAmbiguousAcquisition::reset() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_active(true); } @@ -268,9 +270,9 @@ float GalileoE1PcpsTongAmbiguousAcquisition::calculate_threshold(float pfa) unsigned int ncells = vector_length_ * frequency_bins; double exponent = 1 / static_cast(ncells); double val = pow(1.0 - pfa, exponent); - double lambda = double(vector_length_); + auto lambda = double(vector_length_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } @@ -278,7 +280,7 @@ float GalileoE1PcpsTongAmbiguousAcquisition::calculate_threshold(float pfa) void GalileoE1PcpsTongAmbiguousAcquisition::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->connect(stream_to_vector_, 0, acquisition_cc_, 0); } @@ -287,7 +289,7 @@ void GalileoE1PcpsTongAmbiguousAcquisition::connect(gr::top_block_sptr top_block void GalileoE1PcpsTongAmbiguousAcquisition::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->disconnect(stream_to_vector_, 0, acquisition_cc_, 0); } diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.h b/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.h index 8524fc8d1..95fbaee0b 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.h +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_tong_ambiguous_acquisition.h @@ -32,8 +32,8 @@ #ifndef GNSS_SDR_GALILEO_E1_PCPS_TONG_AMBIGUOUS_ACQUISITION_H_ #define GNSS_SDR_GALILEO_E1_PCPS_TONG_AMBIGUOUS_ACQUISITION_H_ -#include "gnss_synchro.h" #include "acquisition_interface.h" +#include "gnss_synchro.h" #include "pcps_tong_acquisition_cc.h" #include #include @@ -48,7 +48,8 @@ class GalileoE1PcpsTongAmbiguousAcquisition : public AcquisitionInterface { public: GalileoE1PcpsTongAmbiguousAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GalileoE1PcpsTongAmbiguousAcquisition(); @@ -133,6 +134,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: ConfigurationInterface* configuration_; pcps_tong_acquisition_cc_sptr acquisition_cc_; @@ -149,7 +152,7 @@ private: unsigned int tong_init_val_; unsigned int tong_max_val_; unsigned int tong_max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; std::string dump_filename_; std::complex* code_; diff --git a/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.cc b/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.cc index e24970d63..c6c4f663d 100644 --- a/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.cc +++ b/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.cc @@ -36,23 +36,23 @@ */ #include "galileo_e5a_noncoherent_iq_acquisition_caf.h" -#include -#include -#include -#include "galileo_e5_signal_processing.h" #include "Galileo_E5a.h" #include "configuration_interface.h" +#include "galileo_e5_signal_processing.h" #include "gnss_sdr_flags.h" +#include +#include using google::LogMessage; -void GalileoE5aNoncoherentIQAcquisitionCaf::stop_acquisition() -{ -} GalileoE5aNoncoherentIQAcquisitionCaf::GalileoE5aNoncoherentIQAcquisitionCaf( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { configuration_ = configuration; std::string default_item_type = "gr_complex"; @@ -62,7 +62,7 @@ GalileoE5aNoncoherentIQAcquisitionCaf::GalileoE5aNoncoherentIQAcquisitionCaf( item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 32000000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 32000000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); dump_ = configuration_->property(role + ".dump", false); doppler_max_ = configuration_->property(role + ".doppler_max", 5000); @@ -101,7 +101,7 @@ GalileoE5aNoncoherentIQAcquisitionCaf::GalileoE5aNoncoherentIQAcquisitionCaf( { both_signal_components = true; } - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); acquisition_cc_ = galileo_e5a_noncoherentIQ_make_acquisition_caf_cc(sampled_ms_, max_dwells_, @@ -117,7 +117,7 @@ GalileoE5aNoncoherentIQAcquisitionCaf::GalileoE5aNoncoherentIQAcquisitionCaf( channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -136,10 +136,15 @@ GalileoE5aNoncoherentIQAcquisitionCaf::~GalileoE5aNoncoherentIQAcquisitionCaf() } +void GalileoE5aNoncoherentIQAcquisitionCaf::stop_acquisition() +{ +} + + void GalileoE5aNoncoherentIQAcquisitionCaf::set_channel(unsigned int channel) { channel_ = channel; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_channel(channel_); } @@ -148,7 +153,7 @@ void GalileoE5aNoncoherentIQAcquisitionCaf::set_channel(unsigned int channel) void GalileoE5aNoncoherentIQAcquisitionCaf::set_threshold(float threshold) { - float pfa = configuration_->property(role_ + boost::lexical_cast(channel_) + ".pfa", 0.0); + float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); if (pfa == 0.0) pfa = configuration_->property(role_ + ".pfa", 0.0); @@ -163,7 +168,7 @@ void GalileoE5aNoncoherentIQAcquisitionCaf::set_threshold(float threshold) DLOG(INFO) << "Channel " << channel_ << " Threshold = " << threshold_; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_threshold(threshold_); } @@ -174,7 +179,7 @@ void GalileoE5aNoncoherentIQAcquisitionCaf::set_doppler_max(unsigned int doppler { doppler_max_ = doppler_max; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_max(doppler_max_); } @@ -184,7 +189,7 @@ void GalileoE5aNoncoherentIQAcquisitionCaf::set_doppler_max(unsigned int doppler void GalileoE5aNoncoherentIQAcquisitionCaf::set_doppler_step(unsigned int doppler_step) { doppler_step_ = doppler_step; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_step(doppler_step_); } @@ -195,7 +200,7 @@ void GalileoE5aNoncoherentIQAcquisitionCaf::set_gnss_synchro( Gnss_Synchro* gnss_synchro) { gnss_synchro_ = gnss_synchro; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_gnss_synchro(gnss_synchro_); } @@ -204,14 +209,11 @@ void GalileoE5aNoncoherentIQAcquisitionCaf::set_gnss_synchro( signed int GalileoE5aNoncoherentIQAcquisitionCaf::mag() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_cc_->mag(); } - else - { - return 0; - } + return 0; } @@ -224,10 +226,10 @@ void GalileoE5aNoncoherentIQAcquisitionCaf::init() void GalileoE5aNoncoherentIQAcquisitionCaf::set_local_code() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { - std::complex* codeI = new std::complex[code_length_]; - std::complex* codeQ = new std::complex[code_length_]; + auto* codeI = new std::complex[code_length_]; + auto* codeQ = new std::complex[code_length_]; if (gnss_synchro_->Signal[0] == '5' && gnss_synchro_->Signal[1] == 'X') { @@ -281,7 +283,7 @@ void GalileoE5aNoncoherentIQAcquisitionCaf::set_local_code() void GalileoE5aNoncoherentIQAcquisitionCaf::reset() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_active(true); } @@ -300,9 +302,9 @@ float GalileoE5aNoncoherentIQAcquisitionCaf::calculate_threshold(float pfa) unsigned int ncells = vector_length_ * frequency_bins; double exponent = 1 / static_cast(ncells); double val = pow(1.0 - pfa, exponent); - double lambda = double(vector_length_); + auto lambda = double(vector_length_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } diff --git a/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.h b/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.h index 6beed3472..3e4d936aa 100644 --- a/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.h +++ b/src/algorithms/acquisition/adapters/galileo_e5a_noncoherent_iq_acquisition_caf.h @@ -38,9 +38,9 @@ #ifndef GALILEO_E5A_NONCOHERENT_IQ_ACQUISITION_CAF_H_ #define GALILEO_E5A_NONCOHERENT_IQ_ACQUISITION_CAF_H_ -#include "gnss_synchro.h" #include "acquisition_interface.h" #include "galileo_e5a_noncoherent_iq_acquisition_caf_cc.h" +#include "gnss_synchro.h" #include class ConfigurationInterface; @@ -49,7 +49,8 @@ class GalileoE5aNoncoherentIQAcquisitionCaf : public AcquisitionInterface { public: GalileoE5aNoncoherentIQAcquisitionCaf(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GalileoE5aNoncoherentIQAcquisitionCaf(); @@ -136,6 +137,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: ConfigurationInterface* configuration_; galileo_e5a_noncoherentIQ_acquisition_caf_cc_sptr acquisition_cc_; @@ -150,7 +153,7 @@ private: unsigned int doppler_step_; unsigned int sampled_ms_; unsigned int max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; std::string dump_filename_; int Zero_padding; diff --git a/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition.cc b/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition.cc index 2bd081e3e..4b7abfc8f 100644 --- a/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition.cc +++ b/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition.cc @@ -29,12 +29,11 @@ */ #include "galileo_e5a_pcps_acquisition.h" +#include "Galileo_E5a.h" +#include "acq_conf.h" #include "configuration_interface.h" #include "galileo_e5_signal_processing.h" -#include "Galileo_E5a.h" #include "gnss_sdr_flags.h" -#include "acq_conf.h" -#include #include #include #include @@ -42,14 +41,14 @@ using google::LogMessage; -void GalileoE5aPcpsAcquisition::stop_acquisition() -{ -} GalileoE5aPcpsAcquisition::GalileoE5aPcpsAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { - Acq_Conf acq_parameters = Acq_Conf(); configuration_ = configuration; std::string default_item_type = "gr_complex"; std::string default_dump_filename = "./acquisition.mat"; @@ -58,10 +57,9 @@ GalileoE5aPcpsAcquisition::GalileoE5aPcpsAcquisition(ConfigurationInterface* con item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 32000000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 32000000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); - acq_parameters.fs_in = fs_in_; - acq_parameters.samples_per_chip = static_cast(ceil((1.0 / Galileo_E5a_CODE_CHIP_RATE_HZ) * static_cast(acq_parameters.fs_in))); + acq_parameters_.fs_in = fs_in_; acq_pilot_ = configuration_->property(role + ".acquire_pilot", false); acq_iq_ = configuration_->property(role + ".acquire_iq", false); if (acq_iq_) @@ -69,33 +67,69 @@ GalileoE5aPcpsAcquisition::GalileoE5aPcpsAcquisition(ConfigurationInterface* con acq_pilot_ = false; } dump_ = configuration_->property(role + ".dump", false); - acq_parameters.dump = dump_; - acq_parameters.dump_channel = configuration_->property(role + ".dump_channel", 0); + acq_parameters_.dump = dump_; + acq_parameters_.dump_channel = configuration_->property(role + ".dump_channel", 0); doppler_max_ = configuration_->property(role + ".doppler_max", 5000); if (FLAGS_doppler_max != 0) doppler_max_ = FLAGS_doppler_max; - acq_parameters.doppler_max = doppler_max_; + acq_parameters_.doppler_max = doppler_max_; sampled_ms_ = 1; max_dwells_ = configuration_->property(role + ".max_dwells", 1); - acq_parameters.max_dwells = max_dwells_; + acq_parameters_.max_dwells = max_dwells_; dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); - acq_parameters.dump_filename = dump_filename_; + acq_parameters_.dump_filename = dump_filename_; bit_transition_flag_ = configuration_->property(role + ".bit_transition_flag", false); - acq_parameters.bit_transition_flag = bit_transition_flag_; + acq_parameters_.bit_transition_flag = bit_transition_flag_; use_CFAR_ = configuration_->property(role + ".use_CFAR_algorithm", false); - acq_parameters.use_CFAR_algorithm_flag = use_CFAR_; + acq_parameters_.use_CFAR_algorithm_flag = use_CFAR_; blocking_ = configuration_->property(role + ".blocking", true); - acq_parameters.blocking = blocking_; + acq_parameters_.blocking = blocking_; + + + acq_parameters_.use_automatic_resampler = configuration_->property("GNSS-SDR.use_acquisition_resampler", false); + if (acq_parameters_.use_automatic_resampler == true and item_type_ != "gr_complex") + { + LOG(WARNING) << "Galileo E5a acquisition disabled the automatic resampler feature because its item_type is not set to gr_complex"; + acq_parameters_.use_automatic_resampler = false; + } + if (acq_parameters_.use_automatic_resampler) + { + if (acq_parameters_.fs_in > Galileo_E5a_OPT_ACQ_FS_HZ) + { + acq_parameters_.resampler_ratio = floor(static_cast(acq_parameters_.fs_in) / Galileo_E5a_OPT_ACQ_FS_HZ); + uint32_t decimation = acq_parameters_.fs_in / Galileo_E5a_OPT_ACQ_FS_HZ; + while (acq_parameters_.fs_in % decimation > 0) + { + decimation--; + }; + acq_parameters_.resampler_ratio = decimation; + acq_parameters_.resampled_fs = acq_parameters_.fs_in / static_cast(acq_parameters_.resampler_ratio); + } + + //--- Find number of samples per spreading code ------------------------- + code_length_ = static_cast(std::floor(static_cast(acq_parameters_.resampled_fs) / (Galileo_E5a_CODE_CHIP_RATE_HZ / Galileo_E5a_CODE_LENGTH_CHIPS))); + acq_parameters_.samples_per_ms = static_cast(acq_parameters_.resampled_fs) * 0.001; + acq_parameters_.samples_per_chip = static_cast(ceil((1.0 / Galileo_E5a_CODE_CHIP_RATE_HZ) * static_cast(acq_parameters_.resampled_fs))); + } + else + { + acq_parameters_.resampled_fs = fs_in_; + //--- Find number of samples per spreading code ------------------------- + code_length_ = static_cast(std::floor(static_cast(fs_in_) / (Galileo_E5a_CODE_CHIP_RATE_HZ / Galileo_E5a_CODE_LENGTH_CHIPS))); + acq_parameters_.samples_per_ms = static_cast(fs_in_) * 0.001; + acq_parameters_.samples_per_chip = static_cast(ceil((1.0 / Galileo_E5a_CODE_CHIP_RATE_HZ) * static_cast(acq_parameters_.fs_in))); + } + //--- Find number of samples per spreading code (1ms)------------------------- code_length_ = static_cast(std::round(static_cast(fs_in_) / Galileo_E5a_CODE_CHIP_RATE_HZ * static_cast(Galileo_E5a_CODE_LENGTH_CHIPS))); vector_length_ = code_length_ * sampled_ms_; code_ = new gr_complex[vector_length_]; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { item_size_ = sizeof(lv_16sc_t); } @@ -104,21 +138,20 @@ GalileoE5aPcpsAcquisition::GalileoE5aPcpsAcquisition(ConfigurationInterface* con item_size_ = sizeof(gr_complex); LOG(WARNING) << item_type_ << " unknown acquisition item type"; } - acq_parameters.it_size = item_size_; - acq_parameters.samples_per_ms = static_cast(fs_in_) * 0.001; - acq_parameters.sampled_ms = sampled_ms_; - acq_parameters.ms_per_code = 1; - acq_parameters.samples_per_code = acq_parameters.samples_per_ms * static_cast(GALILEO_E5a_CODE_PERIOD_MS); - acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); - acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); - acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false); - acq_parameters.blocking_on_standby = configuration_->property(role + ".blocking_on_standby", false); - acquisition_ = pcps_make_acquisition(acq_parameters); + acq_parameters_.it_size = item_size_; + acq_parameters_.sampled_ms = sampled_ms_; + acq_parameters_.ms_per_code = 1; + acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast(GALILEO_E5a_CODE_PERIOD_MS); + acq_parameters_.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); + acq_parameters_.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); + acq_parameters_.make_2_steps = configuration_->property(role + ".make_two_steps", false); + acq_parameters_.blocking_on_standby = configuration_->property(role + ".blocking_on_standby", false); + acquisition_ = pcps_make_acquisition(acq_parameters_); channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -136,6 +169,11 @@ GalileoE5aPcpsAcquisition::~GalileoE5aPcpsAcquisition() } +void GalileoE5aPcpsAcquisition::stop_acquisition() +{ +} + + void GalileoE5aPcpsAcquisition::set_channel(unsigned int channel) { channel_ = channel; @@ -145,7 +183,7 @@ void GalileoE5aPcpsAcquisition::set_channel(unsigned int channel) void GalileoE5aPcpsAcquisition::set_threshold(float threshold) { - float pfa = configuration_->property(role_ + boost::lexical_cast(channel_) + ".pfa", 0.0); + float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); if (pfa == 0.0) { @@ -203,7 +241,7 @@ void GalileoE5aPcpsAcquisition::init() void GalileoE5aPcpsAcquisition::set_local_code() { - gr_complex* code = new gr_complex[code_length_]; + auto* code = new gr_complex[code_length_]; char signal_[3]; if (acq_iq_) @@ -219,7 +257,14 @@ void GalileoE5aPcpsAcquisition::set_local_code() strcpy(signal_, "5I"); } - galileo_e5_a_code_gen_complex_sampled(code, signal_, gnss_synchro_->PRN, fs_in_, 0); + if (acq_parameters_.use_automatic_resampler) + { + galileo_e5_a_code_gen_complex_sampled(code, signal_, gnss_synchro_->PRN, acq_parameters_.resampled_fs, 0); + } + else + { + galileo_e5_a_code_gen_complex_sampled(code, signal_, gnss_synchro_->PRN, fs_in_, 0); + } for (unsigned int i = 0; i < sampled_ms_; i++) { @@ -248,9 +293,9 @@ float GalileoE5aPcpsAcquisition::calculate_threshold(float pfa) unsigned int ncells = vector_length_ * frequency_bins; double exponent = 1 / static_cast(ncells); double val = pow(1.0 - pfa, exponent); - double lambda = double(vector_length_); + auto lambda = double(vector_length_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } @@ -264,11 +309,11 @@ void GalileoE5aPcpsAcquisition::set_state(int state) void GalileoE5aPcpsAcquisition::connect(gr::top_block_sptr top_block __attribute__((unused))) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to connect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to connect } @@ -281,11 +326,11 @@ void GalileoE5aPcpsAcquisition::connect(gr::top_block_sptr top_block __attribute void GalileoE5aPcpsAcquisition::disconnect(gr::top_block_sptr top_block __attribute__((unused))) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to disconnect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to disconnect } @@ -306,3 +351,8 @@ gr::basic_block_sptr GalileoE5aPcpsAcquisition::get_right_block() { return acquisition_; } + +void GalileoE5aPcpsAcquisition::set_resampler_latency(uint32_t latency_samples) +{ + acquisition_->set_resampler_latency(latency_samples); +} diff --git a/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition.h b/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition.h index 49099cd42..5a4d71fc1 100644 --- a/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition.h +++ b/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition.h @@ -43,7 +43,8 @@ class GalileoE5aPcpsAcquisition : public AcquisitionInterface { public: GalileoE5aPcpsAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GalileoE5aPcpsAcquisition(); @@ -127,13 +128,19 @@ public: */ void stop_acquisition() override; + /*! + * \brief Sets the resampler latency to account it in the acquisition code delay estimation + */ + + void set_resampler_latency(uint32_t latency_samples) override; + private: float calculate_threshold(float pfa); ConfigurationInterface* configuration_; pcps_acquisition_sptr acquisition_; - + Acq_Conf acq_parameters_; size_t item_size_; std::string item_type_; @@ -157,7 +164,7 @@ private: unsigned int in_streams_; unsigned int out_streams_; - long fs_in_; + int64_t fs_in_; float threshold_; diff --git a/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.cc b/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.cc index 30f2195b9..0559ddc7e 100644 --- a/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.cc +++ b/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.cc @@ -29,11 +29,10 @@ */ #include "galileo_e5a_pcps_acquisition_fpga.h" +#include "Galileo_E5a.h" #include "configuration_interface.h" #include "galileo_e5_signal_processing.h" -#include "Galileo_E5a.h" #include "gnss_sdr_flags.h" -#include #include #include #include @@ -41,12 +40,13 @@ using google::LogMessage; -void GalileoE5aPcpsAcquisitionFpga::stop_acquisition() -{ -} GalileoE5aPcpsAcquisitionFpga::GalileoE5aPcpsAcquisitionFpga(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { //printf("creating the E5A acquisition"); pcpsconf_fpga_t acq_parameters; @@ -58,8 +58,8 @@ GalileoE5aPcpsAcquisitionFpga::GalileoE5aPcpsAcquisitionFpga(ConfigurationInterf //item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 32000000); - long fs_in = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 32000000); + int64_t fs_in = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); acq_parameters.fs_in = fs_in; //acq_parameters.freq = 0; @@ -89,7 +89,7 @@ GalileoE5aPcpsAcquisitionFpga::GalileoE5aPcpsAcquisitionFpga(ConfigurationInterf acq_pilot_ = false; } - unsigned int code_length = static_cast(std::round(static_cast(fs_in) / Galileo_E5a_CODE_CHIP_RATE_HZ * static_cast(Galileo_E5a_CODE_LENGTH_CHIPS))); + auto code_length = static_cast(std::round(static_cast(fs_in) / Galileo_E5a_CODE_CHIP_RATE_HZ * static_cast(Galileo_E5a_CODE_LENGTH_CHIPS))); acq_parameters.code_length = code_length; // The FPGA can only use FFT lengths that are a power of two. float nbits = ceilf(log2f((float)code_length)); @@ -108,9 +108,9 @@ GalileoE5aPcpsAcquisitionFpga::GalileoE5aPcpsAcquisitionFpga(ConfigurationInterf // compute all the GALILEO E5 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time // a channel is assigned) - gr::fft::fft_complex* fft_if = new gr::fft::fft_complex(nsamples_total, true); // Direct FFT - std::complex* code = new std::complex[nsamples_total]; // buffer for the local code - gr_complex* fft_codes_padded = static_cast(volk_gnsssdr_malloc(nsamples_total * sizeof(gr_complex), volk_gnsssdr_get_alignment())); + auto* fft_if = new gr::fft::fft_complex(nsamples_total, true); // Direct FFT + auto* code = new std::complex[nsamples_total]; // buffer for the local code + auto* fft_codes_padded = static_cast(volk_gnsssdr_malloc(nsamples_total * sizeof(gr_complex), volk_gnsssdr_get_alignment())); d_all_fft_codes_ = new lv_16sc_t[nsamples_total * Galileo_E5a_NUMBER_OF_CODES]; // memory containing all the possible fft codes for PRN 0 to 32 float max; // temporary maxima search @@ -141,7 +141,7 @@ GalileoE5aPcpsAcquisitionFpga::GalileoE5aPcpsAcquisitionFpga(ConfigurationInterf // fill in zero padding for (int s = code_length; s < nsamples_total; s++) { - code[s] = std::complex(static_cast(0, 0)); + code[s] = std::complex(0.0, 0.0); //code[s] = 0; } @@ -209,7 +209,7 @@ GalileoE5aPcpsAcquisitionFpga::GalileoE5aPcpsAcquisitionFpga(ConfigurationInterf channel_ = 0; //threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; //printf("creating the E5A acquisition end"); } @@ -221,6 +221,11 @@ GalileoE5aPcpsAcquisitionFpga::~GalileoE5aPcpsAcquisitionFpga() } +void GalileoE5aPcpsAcquisitionFpga::stop_acquisition() +{ +} + + void GalileoE5aPcpsAcquisitionFpga::set_channel(unsigned int channel) { channel_ = channel; @@ -231,7 +236,7 @@ void GalileoE5aPcpsAcquisitionFpga::set_channel(unsigned int channel) void GalileoE5aPcpsAcquisitionFpga::set_threshold(float threshold) { - // float pfa = configuration_->property(role_ + boost::lexical_cast(channel_) + ".pfa", 0.0); + // float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); // // if (pfa == 0.0) // { diff --git a/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.h b/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.h index 94b768438..79f0d2836 100644 --- a/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.h +++ b/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.h @@ -45,7 +45,8 @@ class GalileoE5aPcpsAcquisitionFpga : public AcquisitionInterface { public: GalileoE5aPcpsAcquisitionFpga(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GalileoE5aPcpsAcquisitionFpga(); @@ -129,6 +130,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: //float calculate_threshold(float pfa); @@ -160,7 +163,7 @@ private: unsigned int in_streams_; unsigned int out_streams_; - long fs_in_; + int64_t fs_in_; float threshold_; diff --git a/src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.cc b/src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.cc index 5b3d1c531..050190ee7 100644 --- a/src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.cc +++ b/src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.cc @@ -32,24 +32,25 @@ */ #include "glonass_l1_ca_pcps_acquisition.h" +#include "GLONASS_L1_L2_CA.h" +#include "acq_conf.h" #include "configuration_interface.h" #include "glonass_l1_signal_processing.h" #include "gnss_sdr_flags.h" -#include "acq_conf.h" -#include "GLONASS_L1_L2_CA.h" #include #include using google::LogMessage; -void GlonassL1CaPcpsAcquisition::stop_acquisition() -{ -} GlonassL1CaPcpsAcquisition::GlonassL1CaPcpsAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { Acq_Conf acq_parameters = Acq_Conf(); configuration_ = configuration; @@ -60,7 +61,7 @@ GlonassL1CaPcpsAcquisition::GlonassL1CaPcpsAcquisition( item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); acq_parameters.fs_in = fs_in_; acq_parameters.samples_per_chip = static_cast(ceil(GLONASS_L1_CA_CHIP_PERIOD * static_cast(acq_parameters.fs_in))); @@ -94,7 +95,7 @@ GlonassL1CaPcpsAcquisition::GlonassL1CaPcpsAcquisition( code_ = new gr_complex[vector_length_]; - if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { item_size_ = sizeof(lv_16sc_t); } @@ -114,7 +115,7 @@ GlonassL1CaPcpsAcquisition::GlonassL1CaPcpsAcquisition( acquisition_ = pcps_make_acquisition(acq_parameters); DLOG(INFO) << "acquisition(" << acquisition_->unique_id() << ")"; - if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { cbyte_to_float_x2_ = make_complex_byte_to_float_x2(); float_to_complex_ = gr::blocks::float_to_complex::make(); @@ -123,7 +124,7 @@ GlonassL1CaPcpsAcquisition::GlonassL1CaPcpsAcquisition( channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -141,6 +142,11 @@ GlonassL1CaPcpsAcquisition::~GlonassL1CaPcpsAcquisition() } +void GlonassL1CaPcpsAcquisition::stop_acquisition() +{ +} + + void GlonassL1CaPcpsAcquisition::set_channel(unsigned int channel) { channel_ = channel; @@ -207,7 +213,7 @@ void GlonassL1CaPcpsAcquisition::init() void GlonassL1CaPcpsAcquisition::set_local_code() { - std::complex* code = new std::complex[code_length_]; + auto* code = new std::complex[code_length_]; glonass_l1_ca_code_gen_complex_sampled(code, /* gnss_synchro_->PRN,*/ fs_in_, 0); @@ -251,9 +257,9 @@ float GlonassL1CaPcpsAcquisition::calculate_threshold(float pfa) unsigned int ncells = vector_length_ * frequency_bins; double exponent = 1 / static_cast(ncells); double val = pow(1.0 - pfa, exponent); - double lambda = static_cast(vector_length_); + auto lambda = static_cast(vector_length_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } @@ -261,15 +267,15 @@ float GlonassL1CaPcpsAcquisition::calculate_threshold(float pfa) void GlonassL1CaPcpsAcquisition::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to connect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to connect } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { top_block->connect(cbyte_to_float_x2_, 0, float_to_complex_, 0); top_block->connect(cbyte_to_float_x2_, 1, float_to_complex_, 1); @@ -284,15 +290,15 @@ void GlonassL1CaPcpsAcquisition::connect(gr::top_block_sptr top_block) void GlonassL1CaPcpsAcquisition::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to disconnect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to disconnect } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { // Since a byte-based acq implementation is not available, // we just convert cshorts to gr_complex @@ -309,23 +315,21 @@ void GlonassL1CaPcpsAcquisition::disconnect(gr::top_block_sptr top_block) gr::basic_block_sptr GlonassL1CaPcpsAcquisition::get_left_block() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return acquisition_; } - else if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { return cbyte_to_float_x2_; } - else - { - LOG(WARNING) << item_type_ << " unknown acquisition item type"; - return nullptr; - } + + LOG(WARNING) << item_type_ << " unknown acquisition item type"; + return nullptr; } diff --git a/src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.h b/src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.h index 1b519f91e..17affc67c 100644 --- a/src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.h +++ b/src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.h @@ -35,9 +35,9 @@ #define GNSS_SDR_GLONASS_L1_CA_PCPS_ACQUISITION_H_ #include "acquisition_interface.h" +#include "complex_byte_to_float_x2.h" #include "gnss_synchro.h" #include "pcps_acquisition.h" -#include "complex_byte_to_float_x2.h" #include #include @@ -51,7 +51,8 @@ class GlonassL1CaPcpsAcquisition : public AcquisitionInterface { public: GlonassL1CaPcpsAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GlonassL1CaPcpsAcquisition(); @@ -136,6 +137,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: ConfigurationInterface* configuration_; pcps_acquisition_sptr acquisition_; @@ -153,7 +156,7 @@ private: unsigned int doppler_step_; unsigned int sampled_ms_; unsigned int max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; bool blocking_; std::string dump_filename_; diff --git a/src/algorithms/acquisition/adapters/glonass_l2_ca_pcps_acquisition.cc b/src/algorithms/acquisition/adapters/glonass_l2_ca_pcps_acquisition.cc index 06ef7aae6..93aa9736d 100644 --- a/src/algorithms/acquisition/adapters/glonass_l2_ca_pcps_acquisition.cc +++ b/src/algorithms/acquisition/adapters/glonass_l2_ca_pcps_acquisition.cc @@ -31,24 +31,25 @@ */ #include "glonass_l2_ca_pcps_acquisition.h" +#include "GLONASS_L1_L2_CA.h" +#include "acq_conf.h" #include "configuration_interface.h" #include "glonass_l2_signal_processing.h" -#include "GLONASS_L1_L2_CA.h" #include "gnss_sdr_flags.h" -#include "acq_conf.h" #include #include using google::LogMessage; -void GlonassL2CaPcpsAcquisition::stop_acquisition() -{ -} GlonassL2CaPcpsAcquisition::GlonassL2CaPcpsAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { Acq_Conf acq_parameters = Acq_Conf(); configuration_ = configuration; @@ -59,7 +60,7 @@ GlonassL2CaPcpsAcquisition::GlonassL2CaPcpsAcquisition( item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); acq_parameters.fs_in = fs_in_; acq_parameters.samples_per_chip = static_cast(ceil(GLONASS_L2_CA_CHIP_PERIOD * static_cast(acq_parameters.fs_in))); @@ -93,7 +94,7 @@ GlonassL2CaPcpsAcquisition::GlonassL2CaPcpsAcquisition( code_ = new gr_complex[vector_length_]; - if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { item_size_ = sizeof(lv_16sc_t); } @@ -113,7 +114,7 @@ GlonassL2CaPcpsAcquisition::GlonassL2CaPcpsAcquisition( acquisition_ = pcps_make_acquisition(acq_parameters); DLOG(INFO) << "acquisition(" << acquisition_->unique_id() << ")"; - if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { cbyte_to_float_x2_ = make_complex_byte_to_float_x2(); float_to_complex_ = gr::blocks::float_to_complex::make(); @@ -122,7 +123,7 @@ GlonassL2CaPcpsAcquisition::GlonassL2CaPcpsAcquisition( channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -140,6 +141,11 @@ GlonassL2CaPcpsAcquisition::~GlonassL2CaPcpsAcquisition() } +void GlonassL2CaPcpsAcquisition::stop_acquisition() +{ +} + + void GlonassL2CaPcpsAcquisition::set_channel(unsigned int channel) { channel_ = channel; @@ -206,7 +212,7 @@ void GlonassL2CaPcpsAcquisition::init() void GlonassL2CaPcpsAcquisition::set_local_code() { - std::complex* code = new std::complex[code_length_]; + auto* code = new std::complex[code_length_]; glonass_l2_ca_code_gen_complex_sampled(code, /* gnss_synchro_->PRN,*/ fs_in_, 0); @@ -250,9 +256,9 @@ float GlonassL2CaPcpsAcquisition::calculate_threshold(float pfa) unsigned int ncells = vector_length_ * frequency_bins; double exponent = 1 / static_cast(ncells); double val = pow(1.0 - pfa, exponent); - double lambda = static_cast(vector_length_); + auto lambda = static_cast(vector_length_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } @@ -260,15 +266,15 @@ float GlonassL2CaPcpsAcquisition::calculate_threshold(float pfa) void GlonassL2CaPcpsAcquisition::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to connect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to connect } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { // Since a byte-based acq implementation is not available, // we just convert cshorts to gr_complex @@ -285,15 +291,15 @@ void GlonassL2CaPcpsAcquisition::connect(gr::top_block_sptr top_block) void GlonassL2CaPcpsAcquisition::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to disconnect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to disconnect } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { top_block->disconnect(cbyte_to_float_x2_, 0, float_to_complex_, 0); top_block->disconnect(cbyte_to_float_x2_, 1, float_to_complex_, 1); @@ -308,23 +314,21 @@ void GlonassL2CaPcpsAcquisition::disconnect(gr::top_block_sptr top_block) gr::basic_block_sptr GlonassL2CaPcpsAcquisition::get_left_block() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return acquisition_; } - else if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { return cbyte_to_float_x2_; } - else - { - LOG(WARNING) << item_type_ << " unknown acquisition item type"; - return nullptr; - } + + LOG(WARNING) << item_type_ << " unknown acquisition item type"; + return nullptr; } diff --git a/src/algorithms/acquisition/adapters/glonass_l2_ca_pcps_acquisition.h b/src/algorithms/acquisition/adapters/glonass_l2_ca_pcps_acquisition.h index b679f4c26..ad99d9d5a 100644 --- a/src/algorithms/acquisition/adapters/glonass_l2_ca_pcps_acquisition.h +++ b/src/algorithms/acquisition/adapters/glonass_l2_ca_pcps_acquisition.h @@ -34,9 +34,9 @@ #define GNSS_SDR_GLONASS_L2_CA_PCPS_ACQUISITION_H_ #include "acquisition_interface.h" +#include "complex_byte_to_float_x2.h" #include "gnss_synchro.h" #include "pcps_acquisition.h" -#include "complex_byte_to_float_x2.h" #include #include @@ -50,7 +50,8 @@ class GlonassL2CaPcpsAcquisition : public AcquisitionInterface { public: GlonassL2CaPcpsAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GlonassL2CaPcpsAcquisition(); @@ -135,6 +136,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: ConfigurationInterface* configuration_; pcps_acquisition_sptr acquisition_; @@ -152,7 +155,7 @@ private: unsigned int doppler_step_; unsigned int sampled_ms_; unsigned int max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; bool blocking_; std::string dump_filename_; diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.cc b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.cc index 30d7aa42d..ce0ea4065 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.cc +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.cc @@ -34,26 +34,26 @@ */ #include "gps_l1_ca_pcps_acquisition.h" -#include "configuration_interface.h" -#include "gps_sdr_signal_processing.h" #include "GPS_L1_CA.h" -#include "gnss_sdr_flags.h" #include "acq_conf.h" +#include "configuration_interface.h" +#include "gnss_sdr_flags.h" +#include "gps_sdr_signal_processing.h" #include #include using google::LogMessage; -void GpsL1CaPcpsAcquisition::stop_acquisition() -{ -} GpsL1CaPcpsAcquisition::GpsL1CaPcpsAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { - Acq_Conf acq_parameters = Acq_Conf(); configuration_ = configuration; std::string default_item_type = "gr_complex"; std::string default_dump_filename = "./acquisition.mat"; @@ -61,41 +61,69 @@ GpsL1CaPcpsAcquisition::GpsL1CaPcpsAcquisition( DLOG(INFO) << "role " << role; item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); - acq_parameters.fs_in = fs_in_; - acq_parameters.samples_per_chip = static_cast(ceil(GPS_L1_CA_CHIP_PERIOD * static_cast(acq_parameters.fs_in))); + acq_parameters_.fs_in = fs_in_; dump_ = configuration_->property(role + ".dump", false); - acq_parameters.dump = dump_; - acq_parameters.dump_channel = configuration_->property(role + ".dump_channel", 0); + acq_parameters_.dump = dump_; + acq_parameters_.dump_channel = configuration_->property(role + ".dump_channel", 0); blocking_ = configuration_->property(role + ".blocking", true); - acq_parameters.blocking = blocking_; + acq_parameters_.blocking = blocking_; doppler_max_ = configuration_->property(role + ".doppler_max", 5000); if (FLAGS_doppler_max != 0) doppler_max_ = FLAGS_doppler_max; - acq_parameters.doppler_max = doppler_max_; + acq_parameters_.doppler_max = doppler_max_; sampled_ms_ = configuration_->property(role + ".coherent_integration_time_ms", 1); - acq_parameters.sampled_ms = sampled_ms_; - acq_parameters.ms_per_code = 1; + acq_parameters_.sampled_ms = sampled_ms_; + acq_parameters_.ms_per_code = 1; bit_transition_flag_ = configuration_->property(role + ".bit_transition_flag", false); - acq_parameters.bit_transition_flag = bit_transition_flag_; + acq_parameters_.bit_transition_flag = bit_transition_flag_; use_CFAR_algorithm_flag_ = configuration_->property(role + ".use_CFAR_algorithm", true); //will be false in future versions - acq_parameters.use_CFAR_algorithm_flag = use_CFAR_algorithm_flag_; + acq_parameters_.use_CFAR_algorithm_flag = use_CFAR_algorithm_flag_; max_dwells_ = configuration_->property(role + ".max_dwells", 1); - acq_parameters.max_dwells = max_dwells_; + acq_parameters_.max_dwells = max_dwells_; dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); - acq_parameters.dump_filename = dump_filename_; - acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); - acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); - acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false); - //--- Find number of samples per spreading code ------------------------- - code_length_ = static_cast(std::floor(static_cast(fs_in_) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); - acq_parameters.samples_per_ms = static_cast(fs_in_) * 0.001; - acq_parameters.samples_per_code = acq_parameters.samples_per_ms * static_cast(GPS_L1_CA_CODE_PERIOD * 1000.0); + acq_parameters_.dump_filename = dump_filename_; + acq_parameters_.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); + acq_parameters_.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); + acq_parameters_.make_2_steps = configuration_->property(role + ".make_two_steps", false); + acq_parameters_.use_automatic_resampler = configuration_->property("GNSS-SDR.use_acquisition_resampler", false); + if (acq_parameters_.use_automatic_resampler == true and item_type_ != "gr_complex") + { + LOG(WARNING) << "GPS L1 CA acquisition disabled the automatic resampler feature because its item_type is not set to gr_complex"; + acq_parameters_.use_automatic_resampler = false; + } + if (acq_parameters_.use_automatic_resampler) + { + if (acq_parameters_.fs_in > GPS_L1_CA_OPT_ACQ_FS_HZ) + { + acq_parameters_.resampler_ratio = floor(static_cast(acq_parameters_.fs_in) / GPS_L1_CA_OPT_ACQ_FS_HZ); + uint32_t decimation = acq_parameters_.fs_in / GPS_L1_CA_OPT_ACQ_FS_HZ; + while (acq_parameters_.fs_in % decimation > 0) + { + decimation--; + }; + acq_parameters_.resampler_ratio = decimation; + acq_parameters_.resampled_fs = acq_parameters_.fs_in / static_cast(acq_parameters_.resampler_ratio); + } + //--- Find number of samples per spreading code ------------------------- + code_length_ = static_cast(std::floor(static_cast(acq_parameters_.resampled_fs) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); + acq_parameters_.samples_per_ms = static_cast(acq_parameters_.resampled_fs) * 0.001; + acq_parameters_.samples_per_chip = static_cast(ceil(GPS_L1_CA_CHIP_PERIOD * static_cast(acq_parameters_.resampled_fs))); + } + else + { + acq_parameters_.resampled_fs = fs_in_; + //--- Find number of samples per spreading code ------------------------- + code_length_ = static_cast(std::floor(static_cast(fs_in_) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); + acq_parameters_.samples_per_ms = static_cast(fs_in_) * 0.001; + acq_parameters_.samples_per_chip = static_cast(ceil(GPS_L1_CA_CHIP_PERIOD * static_cast(acq_parameters_.fs_in))); + } - vector_length_ = std::floor(acq_parameters.sampled_ms * acq_parameters.samples_per_ms) * (acq_parameters.bit_transition_flag ? 2 : 1); + acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast(GPS_L1_CA_CODE_PERIOD * 1000.0); + vector_length_ = std::floor(acq_parameters_.sampled_ms * acq_parameters_.samples_per_ms) * (acq_parameters_.bit_transition_flag ? 2 : 1); code_ = new gr_complex[vector_length_]; - if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { item_size_ = sizeof(lv_16sc_t); } @@ -104,12 +132,12 @@ GpsL1CaPcpsAcquisition::GpsL1CaPcpsAcquisition( item_size_ = sizeof(gr_complex); } - acq_parameters.it_size = item_size_; - acq_parameters.blocking_on_standby = configuration_->property(role + ".blocking_on_standby", false); - acquisition_ = pcps_make_acquisition(acq_parameters); + acq_parameters_.it_size = item_size_; + acq_parameters_.blocking_on_standby = configuration_->property(role + ".blocking_on_standby", false); + acquisition_ = pcps_make_acquisition(acq_parameters_); DLOG(INFO) << "acquisition(" << acquisition_->unique_id() << ")"; - if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { cbyte_to_float_x2_ = make_complex_byte_to_float_x2(); float_to_complex_ = gr::blocks::float_to_complex::make(); @@ -118,7 +146,7 @@ GpsL1CaPcpsAcquisition::GpsL1CaPcpsAcquisition( channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -136,6 +164,11 @@ GpsL1CaPcpsAcquisition::~GpsL1CaPcpsAcquisition() } +void GpsL1CaPcpsAcquisition::stop_acquisition() +{ +} + + void GpsL1CaPcpsAcquisition::set_channel(unsigned int channel) { channel_ = channel; @@ -200,10 +233,16 @@ void GpsL1CaPcpsAcquisition::init() void GpsL1CaPcpsAcquisition::set_local_code() { - std::complex* code = new std::complex[code_length_]; - - gps_l1_ca_code_gen_complex_sampled(code, gnss_synchro_->PRN, fs_in_, 0); + auto* code = new std::complex[code_length_]; + if (acq_parameters_.use_automatic_resampler) + { + gps_l1_ca_code_gen_complex_sampled(code, gnss_synchro_->PRN, acq_parameters_.resampled_fs, 0); + } + else + { + gps_l1_ca_code_gen_complex_sampled(code, gnss_synchro_->PRN, fs_in_, 0); + } for (unsigned int i = 0; i < sampled_ms_; i++) { memcpy(&(code_[i * code_length_]), code, @@ -239,9 +278,9 @@ float GpsL1CaPcpsAcquisition::calculate_threshold(float pfa) unsigned int ncells = vector_length_ * frequency_bins; double exponent = 1 / static_cast(ncells); double val = pow(1.0 - pfa, exponent); - double lambda = double(vector_length_); + auto lambda = double(vector_length_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } @@ -249,15 +288,15 @@ float GpsL1CaPcpsAcquisition::calculate_threshold(float pfa) void GpsL1CaPcpsAcquisition::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to connect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to connect } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { // Since a byte-based acq implementation is not available, // we just convert cshorts to gr_complex @@ -274,15 +313,15 @@ void GpsL1CaPcpsAcquisition::connect(gr::top_block_sptr top_block) void GpsL1CaPcpsAcquisition::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to disconnect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to disconnect } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { top_block->disconnect(cbyte_to_float_x2_, 0, float_to_complex_, 0); top_block->disconnect(cbyte_to_float_x2_, 1, float_to_complex_, 1); @@ -297,23 +336,21 @@ void GpsL1CaPcpsAcquisition::disconnect(gr::top_block_sptr top_block) gr::basic_block_sptr GpsL1CaPcpsAcquisition::get_left_block() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return acquisition_; } - else if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { return cbyte_to_float_x2_; } - else - { - LOG(WARNING) << item_type_ << " unknown acquisition item type"; - return nullptr; - } + + LOG(WARNING) << item_type_ << " unknown acquisition item type"; + return nullptr; } @@ -321,3 +358,8 @@ gr::basic_block_sptr GpsL1CaPcpsAcquisition::get_right_block() { return acquisition_; } + +void GpsL1CaPcpsAcquisition::set_resampler_latency(uint32_t latency_samples) +{ + acquisition_->set_resampler_latency(latency_samples); +} diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.h b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.h index 011bb96bf..efca26bdd 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.h +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.h @@ -36,10 +36,11 @@ #ifndef GNSS_SDR_GPS_L1_CA_PCPS_ACQUISITION_H_ #define GNSS_SDR_GPS_L1_CA_PCPS_ACQUISITION_H_ +#include "acq_conf.h" #include "acquisition_interface.h" +#include "complex_byte_to_float_x2.h" #include "gnss_synchro.h" #include "pcps_acquisition.h" -#include "complex_byte_to_float_x2.h" #include #include #include @@ -55,7 +56,8 @@ class GpsL1CaPcpsAcquisition : public AcquisitionInterface { public: GpsL1CaPcpsAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GpsL1CaPcpsAcquisition(); @@ -140,9 +142,17 @@ public: */ void stop_acquisition() override; + /*! + * \brief Sets the resampler latency to account it in the acquisition code delay estimation + */ + + void set_resampler_latency(uint32_t latency_samples) override; + + private: ConfigurationInterface* configuration_; pcps_acquisition_sptr acquisition_; + Acq_Conf acq_parameters_; gr::blocks::float_to_complex::sptr float_to_complex_; complex_byte_to_float_x2_sptr cbyte_to_float_x2_; size_t item_size_; @@ -157,7 +167,7 @@ private: unsigned int doppler_step_; unsigned int sampled_ms_; unsigned int max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; bool blocking_; std::string dump_filename_; diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fine_doppler.cc b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fine_doppler.cc index dd69ed24f..4e16b54ec 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fine_doppler.cc +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fine_doppler.cc @@ -33,22 +33,23 @@ */ #include "gps_l1_ca_pcps_acquisition_fine_doppler.h" -#include "gps_sdr_signal_processing.h" #include "GPS_L1_CA.h" +#include "acq_conf.h" #include "configuration_interface.h" #include "gnss_sdr_flags.h" -#include "acq_conf.h" +#include "gps_sdr_signal_processing.h" #include using google::LogMessage; -void GpsL1CaPcpsAcquisitionFineDoppler::stop_acquisition() -{ -} GpsL1CaPcpsAcquisitionFineDoppler::GpsL1CaPcpsAcquisitionFineDoppler( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { std::string default_item_type = "gr_complex"; std::string default_dump_filename = "./acquisition.mat"; @@ -57,7 +58,7 @@ GpsL1CaPcpsAcquisitionFineDoppler::GpsL1CaPcpsAcquisitionFineDoppler( Acq_Conf acq_parameters = Acq_Conf(); item_type_ = configuration->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration->property("GNSS-SDR.internal_fs_hz", 2048000); + int64_t fs_in_deprecated = configuration->property("GNSS-SDR.internal_fs_hz", 2048000); fs_in_ = configuration->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); acq_parameters.fs_in = fs_in_; acq_parameters.samples_per_chip = static_cast(ceil(GPS_L1_CA_CHIP_PERIOD * static_cast(acq_parameters.fs_in))); @@ -80,7 +81,7 @@ GpsL1CaPcpsAcquisitionFineDoppler::GpsL1CaPcpsAcquisitionFineDoppler( acq_parameters.samples_per_ms = vector_length_; code_ = new gr_complex[vector_length_]; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); acquisition_cc_ = pcps_make_acquisition_fine_doppler_cc(acq_parameters); @@ -94,7 +95,7 @@ GpsL1CaPcpsAcquisitionFineDoppler::GpsL1CaPcpsAcquisitionFineDoppler( channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -112,6 +113,11 @@ GpsL1CaPcpsAcquisitionFineDoppler::~GpsL1CaPcpsAcquisitionFineDoppler() } +void GpsL1CaPcpsAcquisitionFineDoppler::stop_acquisition() +{ +} + + void GpsL1CaPcpsAcquisitionFineDoppler::set_channel(unsigned int channel) { channel_ = channel; diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fine_doppler.h b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fine_doppler.h index 338ea683a..b1b64d6eb 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fine_doppler.h +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fine_doppler.h @@ -34,8 +34,8 @@ #ifndef GNSS_SDR_GPS_L1_CA_PCPS_ACQUISITION_FINE_DOPPLER_H_ #define GNSS_SDR_GPS_L1_CA_PCPS_ACQUISITION_FINE_DOPPLER_H_ -#include "gnss_synchro.h" #include "acquisition_interface.h" +#include "gnss_synchro.h" #include "pcps_acquisition_fine_doppler_cc.h" #include @@ -49,7 +49,8 @@ class GpsL1CaPcpsAcquisitionFineDoppler : public AcquisitionInterface { public: GpsL1CaPcpsAcquisitionFineDoppler(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GpsL1CaPcpsAcquisitionFineDoppler(); @@ -131,6 +132,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: pcps_acquisition_fine_doppler_cc_sptr acquisition_cc_; size_t item_size_; @@ -142,7 +145,7 @@ private: unsigned int doppler_step_; unsigned int sampled_ms_; int max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; std::string dump_filename_; std::complex* code_; diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.cc b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.cc index f9778bfb8..6ddfa4616 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.cc +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.cc @@ -34,13 +34,13 @@ * ------------------------------------------------------------------------- */ +#include "gps_l1_ca_pcps_acquisition_fpga.h" +#include "GPS_L1_CA.h" #include "configuration_interface.h" #include "gnss_sdr_flags.h" -#include "gps_l1_ca_pcps_acquisition_fpga.h" #include "gps_sdr_signal_processing.h" -#include "GPS_L1_CA.h" -#include #include +#include #include @@ -48,13 +48,14 @@ using google::LogMessage; -void GpsL1CaPcpsAcquisitionFpga::stop_acquisition() -{ -} GpsL1CaPcpsAcquisitionFpga::GpsL1CaPcpsAcquisitionFpga( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { pcpsconf_fpga_t acq_parameters; configuration_ = configuration; @@ -62,8 +63,8 @@ GpsL1CaPcpsAcquisitionFpga::GpsL1CaPcpsAcquisitionFpga( DLOG(INFO) << "role " << role; - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); - long fs_in = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); + int64_t fs_in = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); //fs_in = fs_in/2.0; // downampling filter //printf("####### DEBUG Acq: fs_in = %d\n", fs_in); acq_parameters.fs_in = fs_in; @@ -73,7 +74,7 @@ GpsL1CaPcpsAcquisitionFpga::GpsL1CaPcpsAcquisitionFpga( acq_parameters.doppler_max = doppler_max_; unsigned int sampled_ms = configuration_->property(role + ".coherent_integration_time_ms", 1); acq_parameters.sampled_ms = sampled_ms; - unsigned int code_length = static_cast(std::round(static_cast(fs_in) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); + auto code_length = static_cast(std::round(static_cast(fs_in) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); acq_parameters.code_length = code_length; // The FPGA can only use FFT lengths that are a power of two. float nbits = ceilf(log2f((float)code_length)); @@ -89,10 +90,10 @@ GpsL1CaPcpsAcquisitionFpga::GpsL1CaPcpsAcquisitionFpga( // compute all the GPS L1 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time // a channel is assigned) - gr::fft::fft_complex* fft_if = new gr::fft::fft_complex(vector_length, true); // Direct FFT + auto* fft_if = new gr::fft::fft_complex(vector_length, true); // Direct FFT // allocate memory to compute all the PRNs and compute all the possible codes - std::complex* code = new std::complex[nsamples_total]; // buffer for the local code - gr_complex* fft_codes_padded = static_cast(volk_gnsssdr_malloc(nsamples_total * sizeof(gr_complex), volk_gnsssdr_get_alignment())); + auto* code = new std::complex[nsamples_total]; // buffer for the local code + auto* fft_codes_padded = static_cast(volk_gnsssdr_malloc(nsamples_total * sizeof(gr_complex), volk_gnsssdr_get_alignment())); d_all_fft_codes_ = new lv_16sc_t[nsamples_total * NUM_PRNs]; // memory containing all the possible fft codes for PRN 0 to 32 float max; // temporary maxima search for (unsigned int PRN = 1; PRN <= NUM_PRNs; PRN++) @@ -101,7 +102,7 @@ GpsL1CaPcpsAcquisitionFpga::GpsL1CaPcpsAcquisitionFpga( // fill in zero padding for (int s = code_length; s < nsamples_total; s++) { - code[s] = std::complex(static_cast(0, 0)); + code[s] = std::complex(0.0, 0.0); //code[s] = 0; } int offset = 0; @@ -173,7 +174,7 @@ GpsL1CaPcpsAcquisitionFpga::GpsL1CaPcpsAcquisitionFpga( channel_ = 0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; } @@ -183,6 +184,11 @@ GpsL1CaPcpsAcquisitionFpga::~GpsL1CaPcpsAcquisitionFpga() } +void GpsL1CaPcpsAcquisitionFpga::stop_acquisition() +{ +} + + void GpsL1CaPcpsAcquisitionFpga::set_channel(unsigned int channel) { channel_ = channel; diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.h b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.h index 8f6d1f3ff..015de1d39 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.h +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.h @@ -53,7 +53,8 @@ class GpsL1CaPcpsAcquisitionFpga : public AcquisitionInterface { public: GpsL1CaPcpsAcquisitionFpga(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GpsL1CaPcpsAcquisitionFpga(); @@ -139,6 +140,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: ConfigurationInterface* configuration_; pcps_acquisition_fpga_sptr acquisition_fpga_; diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_assisted_acquisition.cc b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_assisted_acquisition.cc index da1377ac2..fb7a140b7 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_assisted_acquisition.cc +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_assisted_acquisition.cc @@ -33,22 +33,23 @@ */ #include "gps_l1_ca_pcps_assisted_acquisition.h" -#include -#include "gps_sdr_signal_processing.h" #include "GPS_L1_CA.h" #include "configuration_interface.h" #include "gnss_sdr_flags.h" +#include "gps_sdr_signal_processing.h" +#include using google::LogMessage; -void GpsL1CaPcpsAssistedAcquisition::stop_acquisition() -{ -} GpsL1CaPcpsAssistedAcquisition::GpsL1CaPcpsAssistedAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { std::string default_item_type = "gr_complex"; std::string default_dump_filename = "./data/acquisition.dat"; @@ -56,7 +57,7 @@ GpsL1CaPcpsAssistedAcquisition::GpsL1CaPcpsAssistedAcquisition( DLOG(INFO) << "role " << role; item_type_ = configuration->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration->property("GNSS-SDR.internal_fs_hz", 2048000); + int64_t fs_in_deprecated = configuration->property("GNSS-SDR.internal_fs_hz", 2048000); fs_in_ = configuration->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); dump_ = configuration->property(role + ".dump", false); doppler_max_ = configuration->property(role + ".doppler_max", 5000); @@ -71,7 +72,7 @@ GpsL1CaPcpsAssistedAcquisition::GpsL1CaPcpsAssistedAcquisition( code_ = new gr_complex[vector_length_]; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); acquisition_cc_ = pcps_make_assisted_acquisition_cc(max_dwells_, sampled_ms_, @@ -87,7 +88,7 @@ GpsL1CaPcpsAssistedAcquisition::GpsL1CaPcpsAssistedAcquisition( channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -105,6 +106,11 @@ GpsL1CaPcpsAssistedAcquisition::~GpsL1CaPcpsAssistedAcquisition() } +void GpsL1CaPcpsAssistedAcquisition::stop_acquisition() +{ +} + + void GpsL1CaPcpsAssistedAcquisition::set_channel(unsigned int channel) { channel_ = channel; diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_assisted_acquisition.h b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_assisted_acquisition.h index ca650bc77..04b653440 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_assisted_acquisition.h +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_assisted_acquisition.h @@ -34,8 +34,8 @@ #ifndef GNSS_SDR_GPS_L1_CA_PCPS_ASSISTED_ACQUISITION_H_ #define GNSS_SDR_GPS_L1_CA_PCPS_ASSISTED_ACQUISITION_H_ -#include "gnss_synchro.h" #include "acquisition_interface.h" +#include "gnss_synchro.h" #include "pcps_assisted_acquisition_cc.h" #include @@ -49,7 +49,8 @@ class GpsL1CaPcpsAssistedAcquisition : public AcquisitionInterface { public: GpsL1CaPcpsAssistedAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GpsL1CaPcpsAssistedAcquisition(); @@ -127,6 +128,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: pcps_assisted_acquisition_cc_sptr acquisition_cc_; size_t item_size_; @@ -140,7 +143,7 @@ private: int doppler_min_; unsigned int sampled_ms_; int max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; std::string dump_filename_; std::complex* code_; diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_opencl_acquisition.cc b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_opencl_acquisition.cc index 1037a1778..1fd9b109f 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_opencl_acquisition.cc +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_opencl_acquisition.cc @@ -30,23 +30,24 @@ */ #include "gps_l1_ca_pcps_opencl_acquisition.h" -#include -#include -#include "gps_sdr_signal_processing.h" #include "GPS_L1_CA.h" #include "configuration_interface.h" #include "gnss_sdr_flags.h" +#include "gps_sdr_signal_processing.h" +#include +#include using google::LogMessage; -void GpsL1CaPcpsOpenClAcquisition::stop_acquisition() -{ -} GpsL1CaPcpsOpenClAcquisition::GpsL1CaPcpsOpenClAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { configuration_ = configuration; std::string default_item_type = "gr_complex"; @@ -57,7 +58,7 @@ GpsL1CaPcpsOpenClAcquisition::GpsL1CaPcpsOpenClAcquisition( item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); dump_ = configuration_->property(role + ".dump", false); doppler_max_ = configuration->property(role + ".doppler_max", 5000); @@ -85,7 +86,7 @@ GpsL1CaPcpsOpenClAcquisition::GpsL1CaPcpsOpenClAcquisition( code_ = new gr_complex[vector_length_]; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); acquisition_cc_ = pcps_make_opencl_acquisition_cc(sampled_ms_, max_dwells_, @@ -106,7 +107,7 @@ GpsL1CaPcpsOpenClAcquisition::GpsL1CaPcpsOpenClAcquisition( channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -124,10 +125,15 @@ GpsL1CaPcpsOpenClAcquisition::~GpsL1CaPcpsOpenClAcquisition() } +void GpsL1CaPcpsOpenClAcquisition::stop_acquisition() +{ +} + + void GpsL1CaPcpsOpenClAcquisition::set_channel(unsigned int channel) { channel_ = channel; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_channel(channel_); } @@ -136,7 +142,7 @@ void GpsL1CaPcpsOpenClAcquisition::set_channel(unsigned int channel) void GpsL1CaPcpsOpenClAcquisition::set_threshold(float threshold) { - float pfa = configuration_->property(role_ + boost::lexical_cast(channel_) + ".pfa", 0.0); + float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); if (pfa == 0.0) { @@ -153,7 +159,7 @@ void GpsL1CaPcpsOpenClAcquisition::set_threshold(float threshold) DLOG(INFO) << "Channel " << channel_ << " Threshold = " << threshold_; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_threshold(threshold_); } @@ -163,7 +169,7 @@ void GpsL1CaPcpsOpenClAcquisition::set_threshold(float threshold) void GpsL1CaPcpsOpenClAcquisition::set_doppler_max(unsigned int doppler_max) { doppler_max_ = doppler_max; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_max(doppler_max_); } @@ -173,7 +179,7 @@ void GpsL1CaPcpsOpenClAcquisition::set_doppler_max(unsigned int doppler_max) void GpsL1CaPcpsOpenClAcquisition::set_doppler_step(unsigned int doppler_step) { doppler_step_ = doppler_step; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_step(doppler_step_); } @@ -183,7 +189,7 @@ void GpsL1CaPcpsOpenClAcquisition::set_doppler_step(unsigned int doppler_step) void GpsL1CaPcpsOpenClAcquisition::set_gnss_synchro(Gnss_Synchro* gnss_synchro) { gnss_synchro_ = gnss_synchro; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_gnss_synchro(gnss_synchro_); } @@ -192,7 +198,7 @@ void GpsL1CaPcpsOpenClAcquisition::set_gnss_synchro(Gnss_Synchro* gnss_synchro) signed int GpsL1CaPcpsOpenClAcquisition::mag() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_cc_->mag(); } @@ -212,9 +218,9 @@ void GpsL1CaPcpsOpenClAcquisition::init() void GpsL1CaPcpsOpenClAcquisition::set_local_code() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { - std::complex* code = new std::complex[code_length_]; + auto* code = new std::complex[code_length_]; gps_l1_ca_code_gen_complex_sampled(code, gnss_synchro_->PRN, fs_in_, 0); @@ -233,7 +239,7 @@ void GpsL1CaPcpsOpenClAcquisition::set_local_code() void GpsL1CaPcpsOpenClAcquisition::reset() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_active(true); } @@ -255,9 +261,9 @@ float GpsL1CaPcpsOpenClAcquisition::calculate_threshold(float pfa) unsigned int ncells = vector_length_ * frequency_bins; double exponent = 1 / static_cast(ncells); double val = pow(1.0 - pfa, exponent); - double lambda = double(vector_length_); + auto lambda = double(vector_length_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } @@ -265,7 +271,7 @@ float GpsL1CaPcpsOpenClAcquisition::calculate_threshold(float pfa) void GpsL1CaPcpsOpenClAcquisition::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->connect(stream_to_vector_, 0, acquisition_cc_, 0); } @@ -274,7 +280,7 @@ void GpsL1CaPcpsOpenClAcquisition::connect(gr::top_block_sptr top_block) void GpsL1CaPcpsOpenClAcquisition::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->disconnect(stream_to_vector_, 0, acquisition_cc_, 0); } diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_opencl_acquisition.h b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_opencl_acquisition.h index 0c6c21f49..a7dbe1bc9 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_opencl_acquisition.h +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_opencl_acquisition.h @@ -32,8 +32,8 @@ #ifndef GNSS_SDR_GPS_L1_CA_PCPS_OPENCL_ACQUISITION_H_ #define GNSS_SDR_GPS_L1_CA_PCPS_OPENCL_ACQUISITION_H_ -#include "gnss_synchro.h" #include "acquisition_interface.h" +#include "gnss_synchro.h" #include "pcps_opencl_acquisition_cc.h" #include #include @@ -48,7 +48,8 @@ class GpsL1CaPcpsOpenClAcquisition : public AcquisitionInterface { public: GpsL1CaPcpsOpenClAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GpsL1CaPcpsOpenClAcquisition(); @@ -129,6 +130,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: ConfigurationInterface* configuration_; pcps_opencl_acquisition_cc_sptr acquisition_cc_; @@ -144,7 +147,7 @@ private: unsigned int doppler_step_; unsigned int sampled_ms_; unsigned int max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; std::string dump_filename_; std::complex* code_; diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.cc b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.cc index 888d44586..a3d896ccc 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.cc +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.cc @@ -31,23 +31,24 @@ */ #include "gps_l1_ca_pcps_quicksync_acquisition.h" -#include -#include -#include "gps_sdr_signal_processing.h" #include "GPS_L1_CA.h" #include "configuration_interface.h" #include "gnss_sdr_flags.h" +#include "gps_sdr_signal_processing.h" +#include +#include using google::LogMessage; -void GpsL1CaPcpsQuickSyncAcquisition::stop_acquisition() -{ -} GpsL1CaPcpsQuickSyncAcquisition::GpsL1CaPcpsQuickSyncAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { configuration_ = configuration; std::string default_item_type = "gr_complex"; @@ -56,7 +57,7 @@ GpsL1CaPcpsQuickSyncAcquisition::GpsL1CaPcpsQuickSyncAcquisition( DLOG(INFO) << "role " << role; item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); dump_ = configuration_->property(role + ".dump", false); doppler_max_ = configuration->property(role + ".doppler_max", 5000); @@ -67,7 +68,7 @@ GpsL1CaPcpsQuickSyncAcquisition::GpsL1CaPcpsQuickSyncAcquisition( code_length_ = round(fs_in_ / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); /*Calculate the folding factor value based on the calculations*/ - unsigned int temp = static_cast(ceil(sqrt(log2(code_length_)))); + auto temp = static_cast(ceil(sqrt(log2(code_length_)))); folding_factor_ = configuration_->property(role + ".folding_factor", temp); if (sampled_ms_ % folding_factor_ != 0) @@ -112,7 +113,7 @@ GpsL1CaPcpsQuickSyncAcquisition::GpsL1CaPcpsQuickSyncAcquisition( << ", Sampled ms: " << sampled_ms_ << ", Code Length: " << code_length_; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); acquisition_cc_ = pcps_quicksync_make_acquisition_cc(folding_factor_, @@ -135,7 +136,7 @@ GpsL1CaPcpsQuickSyncAcquisition::GpsL1CaPcpsQuickSyncAcquisition( channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -153,10 +154,15 @@ GpsL1CaPcpsQuickSyncAcquisition::~GpsL1CaPcpsQuickSyncAcquisition() } +void GpsL1CaPcpsQuickSyncAcquisition::stop_acquisition() +{ +} + + void GpsL1CaPcpsQuickSyncAcquisition::set_channel(unsigned int channel) { channel_ = channel; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_channel(channel_); } @@ -165,9 +171,7 @@ void GpsL1CaPcpsQuickSyncAcquisition::set_channel(unsigned int channel) void GpsL1CaPcpsQuickSyncAcquisition::set_threshold(float threshold) { - float pfa = configuration_->property(role_ + - boost::lexical_cast(channel_) + ".pfa", - 0.0); + float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); if (pfa == 0.0) { @@ -184,7 +188,7 @@ void GpsL1CaPcpsQuickSyncAcquisition::set_threshold(float threshold) DLOG(INFO) << "Channel " << channel_ << " Threshold = " << threshold_; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_threshold(threshold_); } @@ -194,7 +198,7 @@ void GpsL1CaPcpsQuickSyncAcquisition::set_threshold(float threshold) void GpsL1CaPcpsQuickSyncAcquisition::set_doppler_max(unsigned int doppler_max) { doppler_max_ = doppler_max; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_max(doppler_max_); } @@ -204,7 +208,7 @@ void GpsL1CaPcpsQuickSyncAcquisition::set_doppler_max(unsigned int doppler_max) void GpsL1CaPcpsQuickSyncAcquisition::set_doppler_step(unsigned int doppler_step) { doppler_step_ = doppler_step; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_step(doppler_step_); } @@ -214,7 +218,7 @@ void GpsL1CaPcpsQuickSyncAcquisition::set_doppler_step(unsigned int doppler_step void GpsL1CaPcpsQuickSyncAcquisition::set_gnss_synchro(Gnss_Synchro* gnss_synchro) { gnss_synchro_ = gnss_synchro; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_gnss_synchro(gnss_synchro_); } @@ -223,14 +227,11 @@ void GpsL1CaPcpsQuickSyncAcquisition::set_gnss_synchro(Gnss_Synchro* gnss_synchr signed int GpsL1CaPcpsQuickSyncAcquisition::mag() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_cc_->mag(); } - else - { - return 0; - } + return 0; } @@ -243,13 +244,12 @@ void GpsL1CaPcpsQuickSyncAcquisition::init() void GpsL1CaPcpsQuickSyncAcquisition::set_local_code() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { - std::complex* code = new std::complex[code_length_](); + auto* code = new std::complex[code_length_](); gps_l1_ca_code_gen_complex_sampled(code, gnss_synchro_->PRN, fs_in_, 0); - for (unsigned int i = 0; i < (sampled_ms_ / folding_factor_); i++) { memcpy(&(code_[i * code_length_]), code, @@ -266,7 +266,7 @@ void GpsL1CaPcpsQuickSyncAcquisition::set_local_code() void GpsL1CaPcpsQuickSyncAcquisition::reset() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_active(true); } @@ -275,7 +275,7 @@ void GpsL1CaPcpsQuickSyncAcquisition::reset() void GpsL1CaPcpsQuickSyncAcquisition::set_state(int state) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_state(state); } @@ -296,7 +296,7 @@ float GpsL1CaPcpsQuickSyncAcquisition::calculate_threshold(float pfa) double val = pow(1.0 - pfa, exponent); double lambda = static_cast(code_length_) / static_cast(folding_factor_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } @@ -304,7 +304,7 @@ float GpsL1CaPcpsQuickSyncAcquisition::calculate_threshold(float pfa) void GpsL1CaPcpsQuickSyncAcquisition::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->connect(stream_to_vector_, 0, acquisition_cc_, 0); } @@ -313,7 +313,7 @@ void GpsL1CaPcpsQuickSyncAcquisition::connect(gr::top_block_sptr top_block) void GpsL1CaPcpsQuickSyncAcquisition::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->disconnect(stream_to_vector_, 0, acquisition_cc_, 0); } diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.h b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.h index c35f97370..482db0f44 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.h +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_quicksync_acquisition.h @@ -33,10 +33,10 @@ #ifndef GNSS_SDR_GPS_L1_CA_PCPS_QUICKSYNC_ACQUISITION_H_ #define GNSS_SDR_GPS_L1_CA_PCPS_QUICKSYNC_ACQUISITION_H_ -#include "gnss_synchro.h" #include "acquisition_interface.h" -#include "pcps_quicksync_acquisition_cc.h" #include "configuration_interface.h" +#include "gnss_synchro.h" +#include "pcps_quicksync_acquisition_cc.h" #include #include @@ -50,7 +50,8 @@ class GpsL1CaPcpsQuickSyncAcquisition : public AcquisitionInterface { public: GpsL1CaPcpsQuickSyncAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GpsL1CaPcpsQuickSyncAcquisition(); @@ -135,6 +136,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: ConfigurationInterface* configuration_; pcps_quicksync_acquisition_cc_sptr acquisition_cc_; @@ -151,7 +154,7 @@ private: unsigned int sampled_ms_; unsigned int max_dwells_; unsigned int folding_factor_; - long fs_in_; + int64_t fs_in_; bool dump_; std::string dump_filename_; std::complex* code_; diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.cc b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.cc index 5c55d802a..0b3a627ba 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.cc +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.cc @@ -30,23 +30,24 @@ */ #include "gps_l1_ca_pcps_tong_acquisition.h" -#include -#include -#include "gps_sdr_signal_processing.h" #include "GPS_L1_CA.h" #include "configuration_interface.h" #include "gnss_sdr_flags.h" +#include "gps_sdr_signal_processing.h" +#include +#include using google::LogMessage; -void GpsL1CaPcpsTongAcquisition::stop_acquisition() -{ -} GpsL1CaPcpsTongAcquisition::GpsL1CaPcpsTongAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { configuration_ = configuration; std::string default_item_type = "gr_complex"; @@ -56,7 +57,7 @@ GpsL1CaPcpsTongAcquisition::GpsL1CaPcpsTongAcquisition( item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); dump_ = configuration_->property(role + ".dump", false); doppler_max_ = configuration->property(role + ".doppler_max", 5000); @@ -76,7 +77,7 @@ GpsL1CaPcpsTongAcquisition::GpsL1CaPcpsTongAcquisition( code_ = new gr_complex[vector_length_]; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); acquisition_cc_ = pcps_tong_make_acquisition_cc(sampled_ms_, doppler_max_, fs_in_, @@ -97,7 +98,7 @@ GpsL1CaPcpsTongAcquisition::GpsL1CaPcpsTongAcquisition( channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -115,10 +116,15 @@ GpsL1CaPcpsTongAcquisition::~GpsL1CaPcpsTongAcquisition() } +void GpsL1CaPcpsTongAcquisition::stop_acquisition() +{ +} + + void GpsL1CaPcpsTongAcquisition::set_channel(unsigned int channel) { channel_ = channel; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_channel(channel_); } @@ -127,7 +133,7 @@ void GpsL1CaPcpsTongAcquisition::set_channel(unsigned int channel) void GpsL1CaPcpsTongAcquisition::set_threshold(float threshold) { - float pfa = configuration_->property(role_ + boost::lexical_cast(channel_) + ".pfa", 0.0); + float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); if (pfa == 0.0) { @@ -144,7 +150,7 @@ void GpsL1CaPcpsTongAcquisition::set_threshold(float threshold) DLOG(INFO) << "Channel " << channel_ << " Threshold = " << threshold_; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_threshold(threshold_); } @@ -154,7 +160,7 @@ void GpsL1CaPcpsTongAcquisition::set_threshold(float threshold) void GpsL1CaPcpsTongAcquisition::set_doppler_max(unsigned int doppler_max) { doppler_max_ = doppler_max; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_max(doppler_max_); } @@ -164,7 +170,7 @@ void GpsL1CaPcpsTongAcquisition::set_doppler_max(unsigned int doppler_max) void GpsL1CaPcpsTongAcquisition::set_doppler_step(unsigned int doppler_step) { doppler_step_ = doppler_step; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_doppler_step(doppler_step_); } @@ -174,7 +180,7 @@ void GpsL1CaPcpsTongAcquisition::set_doppler_step(unsigned int doppler_step) void GpsL1CaPcpsTongAcquisition::set_gnss_synchro(Gnss_Synchro* gnss_synchro) { gnss_synchro_ = gnss_synchro; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_gnss_synchro(gnss_synchro_); } @@ -183,14 +189,11 @@ void GpsL1CaPcpsTongAcquisition::set_gnss_synchro(Gnss_Synchro* gnss_synchro) signed int GpsL1CaPcpsTongAcquisition::mag() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_cc_->mag(); } - else - { - return 0; - } + return 0; } @@ -202,9 +205,9 @@ void GpsL1CaPcpsTongAcquisition::init() void GpsL1CaPcpsTongAcquisition::set_local_code() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { - std::complex* code = new std::complex[code_length_]; + auto* code = new std::complex[code_length_]; gps_l1_ca_code_gen_complex_sampled(code, gnss_synchro_->PRN, fs_in_, 0); @@ -223,7 +226,7 @@ void GpsL1CaPcpsTongAcquisition::set_local_code() void GpsL1CaPcpsTongAcquisition::reset() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_active(true); } @@ -232,7 +235,7 @@ void GpsL1CaPcpsTongAcquisition::reset() void GpsL1CaPcpsTongAcquisition::set_state(int state) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { acquisition_cc_->set_state(state); } @@ -253,9 +256,9 @@ float GpsL1CaPcpsTongAcquisition::calculate_threshold(float pfa) unsigned int ncells = vector_length_ * frequency_bins; double exponent = 1 / static_cast(ncells); double val = pow(1.0 - pfa, exponent); - double lambda = double(vector_length_); + auto lambda = double(vector_length_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } @@ -263,7 +266,7 @@ float GpsL1CaPcpsTongAcquisition::calculate_threshold(float pfa) void GpsL1CaPcpsTongAcquisition::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->connect(stream_to_vector_, 0, acquisition_cc_, 0); } @@ -272,7 +275,7 @@ void GpsL1CaPcpsTongAcquisition::connect(gr::top_block_sptr top_block) void GpsL1CaPcpsTongAcquisition::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->disconnect(stream_to_vector_, 0, acquisition_cc_, 0); } diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.h b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.h index 562d63e39..63e89b8a5 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.h +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_tong_acquisition.h @@ -32,10 +32,10 @@ #ifndef GNSS_SDR_GPS_L1_CA_TONG_ACQUISITION_H_ #define GNSS_SDR_GPS_L1_CA_TONG_ACQUISITION_H_ -#include "gnss_synchro.h" #include "acquisition_interface.h" -#include "pcps_tong_acquisition_cc.h" #include "configuration_interface.h" +#include "gnss_synchro.h" +#include "pcps_tong_acquisition_cc.h" #include #include @@ -49,7 +49,8 @@ class GpsL1CaPcpsTongAcquisition : public AcquisitionInterface { public: GpsL1CaPcpsTongAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GpsL1CaPcpsTongAcquisition(); @@ -134,6 +135,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: ConfigurationInterface* configuration_; pcps_tong_acquisition_cc_sptr acquisition_cc_; @@ -150,7 +153,7 @@ private: unsigned int tong_init_val_; unsigned int tong_max_val_; unsigned int tong_max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; std::string dump_filename_; std::complex* code_; diff --git a/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition.cc b/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition.cc index 32b426777..dcf663121 100644 --- a/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition.cc +++ b/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition.cc @@ -32,26 +32,26 @@ */ #include "gps_l2_m_pcps_acquisition.h" -#include "configuration_interface.h" -#include "gps_l2c_signal.h" #include "GPS_L2C.h" -#include "gnss_sdr_flags.h" #include "acq_conf.h" +#include "configuration_interface.h" +#include "gnss_sdr_flags.h" +#include "gps_l2c_signal.h" #include #include using google::LogMessage; -void GpsL2MPcpsAcquisition::stop_acquisition() -{ -} GpsL2MPcpsAcquisition::GpsL2MPcpsAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { - Acq_Conf acq_parameters = Acq_Conf(); configuration_ = configuration; std::string default_item_type = "gr_complex"; std::string default_dump_filename = "./acquisition.mat"; @@ -59,45 +59,76 @@ GpsL2MPcpsAcquisition::GpsL2MPcpsAcquisition( LOG(INFO) << "role " << role; item_type_ = configuration_->property(role + ".item_type", default_item_type); - //float pfa = configuration_->property(role + ".pfa", 0.0); - - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); - acq_parameters.fs_in = fs_in_; - acq_parameters.samples_per_chip = static_cast(ceil((1.0 / GPS_L2_M_CODE_RATE_HZ) * static_cast(acq_parameters.fs_in))); + acq_parameters_.fs_in = fs_in_; dump_ = configuration_->property(role + ".dump", false); - acq_parameters.dump = dump_; - acq_parameters.dump_channel = configuration_->property(role + ".dump_channel", 0); + acq_parameters_.dump = dump_; + acq_parameters_.dump_channel = configuration_->property(role + ".dump_channel", 0); blocking_ = configuration_->property(role + ".blocking", true); - acq_parameters.blocking = blocking_; + acq_parameters_.blocking = blocking_; doppler_max_ = configuration->property(role + ".doppler_max", 5000); if (FLAGS_doppler_max != 0) doppler_max_ = FLAGS_doppler_max; - acq_parameters.doppler_max = doppler_max_; + acq_parameters_.doppler_max = doppler_max_; bit_transition_flag_ = configuration_->property(role + ".bit_transition_flag", false); - acq_parameters.bit_transition_flag = bit_transition_flag_; + acq_parameters_.bit_transition_flag = bit_transition_flag_; use_CFAR_algorithm_flag_ = configuration_->property(role + ".use_CFAR_algorithm", true); //will be false in future versions - acq_parameters.use_CFAR_algorithm_flag = use_CFAR_algorithm_flag_; + acq_parameters_.use_CFAR_algorithm_flag = use_CFAR_algorithm_flag_; max_dwells_ = configuration_->property(role + ".max_dwells", 1); - acq_parameters.max_dwells = max_dwells_; + acq_parameters_.max_dwells = max_dwells_; dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); - acq_parameters.dump_filename = dump_filename_; - //--- Find number of samples per spreading code ------------------------- - acq_parameters.samples_per_ms = static_cast(fs_in_) * 0.001; - acq_parameters.ms_per_code = 20; - acq_parameters.sampled_ms = configuration_->property(role + ".coherent_integration_time_ms", acq_parameters.ms_per_code); - if ((acq_parameters.sampled_ms % acq_parameters.ms_per_code) != 0) + acq_parameters_.dump_filename = dump_filename_; + acq_parameters_.ms_per_code = 20; + acq_parameters_.sampled_ms = configuration_->property(role + ".coherent_integration_time_ms", acq_parameters_.ms_per_code); + if ((acq_parameters_.sampled_ms % acq_parameters_.ms_per_code) != 0) { LOG(WARNING) << "Parameter coherent_integration_time_ms should be a multiple of 20. Setting it to 20"; - acq_parameters.sampled_ms = acq_parameters.ms_per_code; + acq_parameters_.sampled_ms = acq_parameters_.ms_per_code; } - code_length_ = acq_parameters.ms_per_code * acq_parameters.samples_per_ms; + acq_parameters_.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); + acq_parameters_.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); + acq_parameters_.make_2_steps = configuration_->property(role + ".make_two_steps", false); + acq_parameters_.blocking_on_standby = configuration_->property(role + ".blocking_on_standby", false); + acq_parameters_.use_automatic_resampler = configuration_->property("GNSS-SDR.use_acquisition_resampler", false); + if (acq_parameters_.use_automatic_resampler == true and item_type_ != "gr_complex") + { + LOG(WARNING) << "GPS L2CM acquisition disabled the automatic resampler feature because its item_type is not set to gr_complex"; + acq_parameters_.use_automatic_resampler = false; + } + if (acq_parameters_.use_automatic_resampler) + { + if (acq_parameters_.fs_in > GPS_L2C_OPT_ACQ_FS_HZ) + { + acq_parameters_.resampler_ratio = floor(static_cast(acq_parameters_.fs_in) / GPS_L2C_OPT_ACQ_FS_HZ); + uint32_t decimation = acq_parameters_.fs_in / GPS_L2C_OPT_ACQ_FS_HZ; + while (acq_parameters_.fs_in % decimation > 0) + { + decimation--; + }; + acq_parameters_.resampler_ratio = decimation; + acq_parameters_.resampled_fs = acq_parameters_.fs_in / static_cast(acq_parameters_.resampler_ratio); + } - vector_length_ = acq_parameters.sampled_ms * acq_parameters.samples_per_ms * (acq_parameters.bit_transition_flag ? 2 : 1); + //--- Find number of samples per spreading code ------------------------- + code_length_ = static_cast(std::floor(static_cast(acq_parameters_.resampled_fs) / (GPS_L2_M_CODE_RATE_HZ / GPS_L2_M_CODE_LENGTH_CHIPS))); + acq_parameters_.samples_per_ms = static_cast(acq_parameters_.resampled_fs) * 0.001; + acq_parameters_.samples_per_chip = static_cast(ceil((1.0 / GPS_L2_M_CODE_RATE_HZ) * static_cast(acq_parameters_.resampled_fs))); + } + else + { + acq_parameters_.resampled_fs = fs_in_; + //--- Find number of samples per spreading code ------------------------- + code_length_ = static_cast(std::floor(static_cast(fs_in_) / (GPS_L2_M_CODE_RATE_HZ / GPS_L2_M_CODE_LENGTH_CHIPS))); + acq_parameters_.samples_per_ms = static_cast(fs_in_) * 0.001; + acq_parameters_.samples_per_chip = static_cast(ceil((1.0 / GPS_L2_M_CODE_RATE_HZ) * static_cast(acq_parameters_.fs_in))); + } + acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast(GPS_L2_M_PERIOD * 1000.0); + vector_length_ = acq_parameters_.sampled_ms * acq_parameters_.samples_per_ms * (acq_parameters_.bit_transition_flag ? 2 : 1); code_ = new gr_complex[vector_length_]; - if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { item_size_ = sizeof(lv_16sc_t); } @@ -106,17 +137,11 @@ GpsL2MPcpsAcquisition::GpsL2MPcpsAcquisition( item_size_ = sizeof(gr_complex); } - acq_parameters.samples_per_code = acq_parameters.samples_per_ms * static_cast(GPS_L2_M_PERIOD * 1000.0); - acq_parameters.it_size = item_size_; - - acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); - acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); - acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false); - acq_parameters.blocking_on_standby = configuration_->property(role + ".blocking_on_standby", false); - acquisition_ = pcps_make_acquisition(acq_parameters); + acq_parameters_.it_size = item_size_; + acquisition_ = pcps_make_acquisition(acq_parameters_); DLOG(INFO) << "acquisition(" << acquisition_->unique_id() << ")"; - if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { cbyte_to_float_x2_ = make_complex_byte_to_float_x2(); float_to_complex_ = gr::blocks::float_to_complex::make(); @@ -125,8 +150,8 @@ GpsL2MPcpsAcquisition::GpsL2MPcpsAcquisition( channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; - num_codes_ = acq_parameters.sampled_ms / acq_parameters.ms_per_code; + gnss_synchro_ = nullptr; + num_codes_ = acq_parameters_.sampled_ms / acq_parameters_.ms_per_code; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -144,6 +169,11 @@ GpsL2MPcpsAcquisition::~GpsL2MPcpsAcquisition() } +void GpsL2MPcpsAcquisition::stop_acquisition() +{ +} + + void GpsL2MPcpsAcquisition::set_channel(unsigned int channel) { channel_ = channel; @@ -153,7 +183,7 @@ void GpsL2MPcpsAcquisition::set_channel(unsigned int channel) void GpsL2MPcpsAcquisition::set_threshold(float threshold) { - float pfa = configuration_->property(role_ + boost::lexical_cast(channel_) + ".pfa", 0.0); + float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); if (pfa == 0.0) { @@ -215,9 +245,18 @@ void GpsL2MPcpsAcquisition::init() void GpsL2MPcpsAcquisition::set_local_code() { - std::complex* code = new std::complex[code_length_]; + auto* code = new std::complex[code_length_]; + + + if (acq_parameters_.use_automatic_resampler) + { + gps_l2c_m_code_gen_complex_sampled(code, gnss_synchro_->PRN, acq_parameters_.resampled_fs); + } + else + { + gps_l2c_m_code_gen_complex_sampled(code, gnss_synchro_->PRN, fs_in_); + } - gps_l2c_m_code_gen_complex_sampled(code, gnss_synchro_->PRN, fs_in_); for (unsigned int i = 0; i < num_codes_; i++) { @@ -253,9 +292,9 @@ float GpsL2MPcpsAcquisition::calculate_threshold(float pfa) unsigned int ncells = vector_length_ * frequency_bins; double exponent = 1.0 / static_cast(ncells); double val = pow(1.0 - pfa, exponent); - double lambda = double(vector_length_); + auto lambda = double(vector_length_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } @@ -263,15 +302,15 @@ float GpsL2MPcpsAcquisition::calculate_threshold(float pfa) void GpsL2MPcpsAcquisition::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to connect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to connect } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { // Since a byte-based acq implementation is not available, // we just convert cshorts to gr_complex @@ -288,15 +327,15 @@ void GpsL2MPcpsAcquisition::connect(gr::top_block_sptr top_block) void GpsL2MPcpsAcquisition::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to disconnect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to disconnect } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { top_block->disconnect(cbyte_to_float_x2_, 0, float_to_complex_, 0); top_block->disconnect(cbyte_to_float_x2_, 1, float_to_complex_, 1); @@ -311,23 +350,21 @@ void GpsL2MPcpsAcquisition::disconnect(gr::top_block_sptr top_block) gr::basic_block_sptr GpsL2MPcpsAcquisition::get_left_block() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return acquisition_; } - else if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { return cbyte_to_float_x2_; } - else - { - LOG(WARNING) << item_type_ << " unknown acquisition item type"; - return nullptr; - } + + LOG(WARNING) << item_type_ << " unknown acquisition item type"; + return nullptr; } @@ -335,3 +372,7 @@ gr::basic_block_sptr GpsL2MPcpsAcquisition::get_right_block() { return acquisition_; } +void GpsL2MPcpsAcquisition::set_resampler_latency(uint32_t latency_samples) +{ + acquisition_->set_resampler_latency(latency_samples); +} diff --git a/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition.h b/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition.h index 27c463cf3..da1c7ef6e 100644 --- a/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition.h +++ b/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition.h @@ -35,9 +35,9 @@ #define GNSS_SDR_GPS_L2_M_PCPS_ACQUISITION_H_ #include "acquisition_interface.h" +#include "complex_byte_to_float_x2.h" #include "gnss_synchro.h" #include "pcps_acquisition.h" -#include "complex_byte_to_float_x2.h" #include #include #include @@ -53,7 +53,8 @@ class GpsL2MPcpsAcquisition : public AcquisitionInterface { public: GpsL2MPcpsAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GpsL2MPcpsAcquisition(); @@ -138,9 +139,17 @@ public: */ void stop_acquisition() override; + /*! + * \brief Sets the resampler latency to account it in the acquisition code delay estimation + */ + + void set_resampler_latency(uint32_t latency_samples) override; + + private: ConfigurationInterface* configuration_; pcps_acquisition_sptr acquisition_; + Acq_Conf acq_parameters_; gr::blocks::float_to_complex::sptr float_to_complex_; complex_byte_to_float_x2_sptr cbyte_to_float_x2_; size_t item_size_; @@ -154,7 +163,7 @@ private: unsigned int doppler_max_; unsigned int doppler_step_; unsigned int max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; bool blocking_; std::string dump_filename_; diff --git a/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.cc b/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.cc index db53d3815..c3cd96275 100644 --- a/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.cc +++ b/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.cc @@ -32,10 +32,10 @@ */ #include "gps_l2_m_pcps_acquisition_fpga.h" -#include "configuration_interface.h" -#include "gps_l2c_signal.h" #include "GPS_L2C.h" +#include "configuration_interface.h" #include "gnss_sdr_flags.h" +#include "gps_l2c_signal.h" #include #include @@ -43,13 +43,14 @@ using google::LogMessage; -void GpsL2MPcpsAcquisitionFpga::stop_acquisition() -{ -} GpsL2MPcpsAcquisitionFpga::GpsL2MPcpsAcquisitionFpga( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { //pcpsconf_t acq_parameters; pcpsconf_fpga_t acq_parameters; @@ -62,7 +63,7 @@ GpsL2MPcpsAcquisitionFpga::GpsL2MPcpsAcquisitionFpga( item_type_ = configuration_->property(role + ".item_type", default_item_type); //float pfa = configuration_->property(role + ".pfa", 0.0); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); acq_parameters.fs_in = fs_in_; //if_ = configuration_->property(role + ".if", 0); @@ -103,10 +104,10 @@ GpsL2MPcpsAcquisitionFpga::GpsL2MPcpsAcquisitionFpga( // compute all the GPS L1 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time // a channel is assigned) - gr::fft::fft_complex* fft_if = new gr::fft::fft_complex(vector_length, true); // Direct FFT + auto* fft_if = new gr::fft::fft_complex(vector_length, true); // Direct FFT // allocate memory to compute all the PRNs and compute all the possible codes - std::complex* code = new std::complex[nsamples_total]; // buffer for the local code - gr_complex* fft_codes_padded = static_cast(volk_gnsssdr_malloc(nsamples_total * sizeof(gr_complex), volk_gnsssdr_get_alignment())); + auto* code = new std::complex[nsamples_total]; // buffer for the local code + auto* fft_codes_padded = static_cast(volk_gnsssdr_malloc(nsamples_total * sizeof(gr_complex), volk_gnsssdr_get_alignment())); d_all_fft_codes_ = new lv_16sc_t[nsamples_total * NUM_PRNs]; // memory containing all the possible fft codes for PRN 0 to 32 float max; // temporary maxima search for (unsigned int PRN = 1; PRN <= NUM_PRNs; PRN++) @@ -115,7 +116,7 @@ GpsL2MPcpsAcquisitionFpga::GpsL2MPcpsAcquisitionFpga( // fill in zero padding for (int s = code_length; s < nsamples_total; s++) { - code[s] = std::complex(static_cast(0, 0)); + code[s] = std::complex(0.0, 0.0); //code[s] = 0; } memcpy(fft_if->get_inbuf(), code, sizeof(gr_complex) * nsamples_total); // copy to FFT buffer @@ -153,7 +154,7 @@ GpsL2MPcpsAcquisitionFpga::GpsL2MPcpsAcquisitionFpga( channel_ = 0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; // vector_length_ = code_length_; @@ -206,6 +207,11 @@ GpsL2MPcpsAcquisitionFpga::~GpsL2MPcpsAcquisitionFpga() } +void GpsL2MPcpsAcquisitionFpga::stop_acquisition() +{ +} + + void GpsL2MPcpsAcquisitionFpga::set_channel(unsigned int channel) { channel_ = channel; @@ -215,7 +221,7 @@ void GpsL2MPcpsAcquisitionFpga::set_channel(unsigned int channel) void GpsL2MPcpsAcquisitionFpga::set_threshold(float threshold) { - // float pfa = configuration_->property(role_ + boost::lexical_cast(channel_) + ".pfa", 0.0); + // float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); // // if (pfa == 0.0) // { diff --git a/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.h b/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.h index b9aba8787..102911d3d 100644 --- a/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.h +++ b/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.h @@ -35,11 +35,11 @@ #define GNSS_SDR_GPS_L2_M_PCPS_ACQUISITION_FPGA_H_ #include "acquisition_interface.h" +#include "complex_byte_to_float_x2.h" #include "gnss_synchro.h" #include "pcps_acquisition_fpga.h" -#include "complex_byte_to_float_x2.h" -#include #include +#include #include #include @@ -54,7 +54,8 @@ class GpsL2MPcpsAcquisitionFpga : public AcquisitionInterface { public: GpsL2MPcpsAcquisitionFpga(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GpsL2MPcpsAcquisitionFpga(); @@ -139,6 +140,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: ConfigurationInterface* configuration_; //pcps_acquisition_sptr acquisition_; @@ -157,7 +160,7 @@ private: unsigned int doppler_max_; unsigned int doppler_step_; unsigned int max_dwells_; - long fs_in_; + int64_t fs_in_; //long if_; bool dump_; bool blocking_; diff --git a/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition.cc b/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition.cc index 36d6e4f7a..f436da1d4 100644 --- a/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition.cc +++ b/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition.cc @@ -32,26 +32,26 @@ */ #include "gps_l5i_pcps_acquisition.h" -#include "configuration_interface.h" -#include "gps_l5_signal.h" #include "GPS_L5.h" -#include "gnss_sdr_flags.h" #include "acq_conf.h" +#include "configuration_interface.h" +#include "gnss_sdr_flags.h" +#include "gps_l5_signal.h" #include #include using google::LogMessage; -void GpsL5iPcpsAcquisition::stop_acquisition() -{ -} GpsL5iPcpsAcquisition::GpsL5iPcpsAcquisition( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { - Acq_Conf acq_parameters = Acq_Conf(); configuration_ = configuration; std::string default_item_type = "gr_complex"; std::string default_dump_filename = "./acquisition.mat"; @@ -60,36 +60,28 @@ GpsL5iPcpsAcquisition::GpsL5iPcpsAcquisition( item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); - acq_parameters.fs_in = fs_in_; - acq_parameters.samples_per_chip = static_cast(ceil((1.0 / GPS_L5i_CODE_RATE_HZ) * static_cast(acq_parameters.fs_in))); + acq_parameters_.fs_in = fs_in_; dump_ = configuration_->property(role + ".dump", false); - acq_parameters.dump = dump_; - acq_parameters.dump_channel = configuration_->property(role + ".dump_channel", 0); + acq_parameters_.dump = dump_; + acq_parameters_.dump_channel = configuration_->property(role + ".dump_channel", 0); blocking_ = configuration_->property(role + ".blocking", true); - acq_parameters.blocking = blocking_; + acq_parameters_.blocking = blocking_; doppler_max_ = configuration->property(role + ".doppler_max", 5000); if (FLAGS_doppler_max != 0) doppler_max_ = FLAGS_doppler_max; - acq_parameters.doppler_max = doppler_max_; + acq_parameters_.doppler_max = doppler_max_; bit_transition_flag_ = configuration_->property(role + ".bit_transition_flag", false); - acq_parameters.bit_transition_flag = bit_transition_flag_; + acq_parameters_.bit_transition_flag = bit_transition_flag_; use_CFAR_algorithm_flag_ = configuration_->property(role + ".use_CFAR_algorithm", true); //will be false in future versions - acq_parameters.use_CFAR_algorithm_flag = use_CFAR_algorithm_flag_; + acq_parameters_.use_CFAR_algorithm_flag = use_CFAR_algorithm_flag_; max_dwells_ = configuration_->property(role + ".max_dwells", 1); - acq_parameters.max_dwells = max_dwells_; + acq_parameters_.max_dwells = max_dwells_; dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); - acq_parameters.dump_filename = dump_filename_; - acq_parameters.sampled_ms = configuration_->property(role + ".coherent_integration_time_ms", 1); - //--- Find number of samples per spreading code ------------------------- - code_length_ = static_cast(std::floor(static_cast(fs_in_) / (GPS_L5i_CODE_RATE_HZ / GPS_L5i_CODE_LENGTH_CHIPS))); - acq_parameters.samples_per_ms = static_cast(fs_in_) * 0.001; - acq_parameters.samples_per_code = acq_parameters.samples_per_ms * static_cast(GPS_L5i_PERIOD * 1000.0); + acq_parameters_.dump_filename = dump_filename_; + acq_parameters_.sampled_ms = configuration_->property(role + ".coherent_integration_time_ms", 1); - vector_length_ = std::floor(acq_parameters.sampled_ms * acq_parameters.samples_per_ms) * (acq_parameters.bit_transition_flag ? 2 : 1); - code_ = new gr_complex[vector_length_]; - - if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { item_size_ = sizeof(lv_16sc_t); } @@ -98,25 +90,63 @@ GpsL5iPcpsAcquisition::GpsL5iPcpsAcquisition( item_size_ = sizeof(gr_complex); } - acq_parameters.ms_per_code = 1; - acq_parameters.it_size = item_size_; - num_codes_ = acq_parameters.sampled_ms; - acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); - acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); - acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false); - acq_parameters.blocking_on_standby = configuration_->property(role + ".blocking_on_standby", false); - acquisition_ = pcps_make_acquisition(acq_parameters); + acq_parameters_.ms_per_code = 1; + acq_parameters_.it_size = item_size_; + num_codes_ = acq_parameters_.sampled_ms; + acq_parameters_.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); + acq_parameters_.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); + acq_parameters_.make_2_steps = configuration_->property(role + ".make_two_steps", false); + acq_parameters_.blocking_on_standby = configuration_->property(role + ".blocking_on_standby", false); + acq_parameters_.use_automatic_resampler = configuration_->property("GNSS-SDR.use_acquisition_resampler", false); + if (acq_parameters_.use_automatic_resampler == true and item_type_ != "gr_complex") + { + LOG(WARNING) << "GPS L5 acquisition disabled the automatic resampler feature because its item_type is not set to gr_complex"; + acq_parameters_.use_automatic_resampler = false; + } + if (acq_parameters_.use_automatic_resampler) + { + if (acq_parameters_.fs_in > GPS_L5_OPT_ACQ_FS_HZ) + { + acq_parameters_.resampler_ratio = floor(static_cast(acq_parameters_.fs_in) / GPS_L5_OPT_ACQ_FS_HZ); + uint32_t decimation = acq_parameters_.fs_in / GPS_L5_OPT_ACQ_FS_HZ; + while (acq_parameters_.fs_in % decimation > 0) + { + decimation--; + }; + acq_parameters_.resampler_ratio = decimation; + acq_parameters_.resampled_fs = acq_parameters_.fs_in / static_cast(acq_parameters_.resampler_ratio); + } + + //--- Find number of samples per spreading code ------------------------- + code_length_ = static_cast(std::floor(static_cast(acq_parameters_.resampled_fs) / (GPS_L5i_CODE_RATE_HZ / GPS_L5i_CODE_LENGTH_CHIPS))); + acq_parameters_.samples_per_ms = static_cast(acq_parameters_.resampled_fs) * 0.001; + acq_parameters_.samples_per_chip = static_cast(ceil((1.0 / GPS_L5i_CODE_RATE_HZ) * static_cast(acq_parameters_.resampled_fs))); + } + else + { + acq_parameters_.resampled_fs = fs_in_; + //--- Find number of samples per spreading code ------------------------- + code_length_ = static_cast(std::floor(static_cast(fs_in_) / (GPS_L5i_CODE_RATE_HZ / GPS_L5i_CODE_LENGTH_CHIPS))); + acq_parameters_.samples_per_ms = static_cast(fs_in_) * 0.001; + acq_parameters_.samples_per_chip = static_cast(ceil((1.0 / GPS_L5i_CODE_RATE_HZ) * static_cast(acq_parameters_.fs_in))); + } + + acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast(GPS_L5i_PERIOD * 1000.0); + vector_length_ = std::floor(acq_parameters_.sampled_ms * acq_parameters_.samples_per_ms) * (acq_parameters_.bit_transition_flag ? 2 : 1); + code_ = new gr_complex[vector_length_]; + acquisition_ = pcps_make_acquisition(acq_parameters_); DLOG(INFO) << "acquisition(" << acquisition_->unique_id() << ")"; - if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { cbyte_to_float_x2_ = make_complex_byte_to_float_x2(); float_to_complex_ = gr::blocks::float_to_complex::make(); } + channel_ = 0; threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; if (in_streams_ > 1) { LOG(ERROR) << "This implementation only supports one input stream"; @@ -134,6 +164,11 @@ GpsL5iPcpsAcquisition::~GpsL5iPcpsAcquisition() } +void GpsL5iPcpsAcquisition::stop_acquisition() +{ +} + + void GpsL5iPcpsAcquisition::set_channel(unsigned int channel) { channel_ = channel; @@ -143,7 +178,7 @@ void GpsL5iPcpsAcquisition::set_channel(unsigned int channel) void GpsL5iPcpsAcquisition::set_threshold(float threshold) { - float pfa = configuration_->property(role_ + boost::lexical_cast(channel_) + ".pfa", 0.0); + float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); if (pfa == 0.0) { @@ -203,9 +238,17 @@ void GpsL5iPcpsAcquisition::init() void GpsL5iPcpsAcquisition::set_local_code() { - std::complex* code = new std::complex[code_length_]; + auto* code = new std::complex[code_length_]; - gps_l5i_code_gen_complex_sampled(code, gnss_synchro_->PRN, fs_in_); + + if (acq_parameters_.use_automatic_resampler) + { + gps_l5i_code_gen_complex_sampled(code, gnss_synchro_->PRN, acq_parameters_.resampled_fs); + } + else + { + gps_l5i_code_gen_complex_sampled(code, gnss_synchro_->PRN, fs_in_); + } for (unsigned int i = 0; i < num_codes_; i++) { @@ -241,9 +284,9 @@ float GpsL5iPcpsAcquisition::calculate_threshold(float pfa) unsigned int ncells = vector_length_ * frequency_bins; double exponent = 1.0 / static_cast(ncells); double val = pow(1.0 - pfa, exponent); - double lambda = double(vector_length_); + auto lambda = double(vector_length_); boost::math::exponential_distribution mydist(lambda); - float threshold = static_cast(quantile(mydist, val)); + auto threshold = static_cast(quantile(mydist, val)); return threshold; } @@ -251,15 +294,15 @@ float GpsL5iPcpsAcquisition::calculate_threshold(float pfa) void GpsL5iPcpsAcquisition::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to connect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to connect } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { // Since a byte-based acq implementation is not available, // we just convert cshorts to gr_complex @@ -276,15 +319,15 @@ void GpsL5iPcpsAcquisition::connect(gr::top_block_sptr top_block) void GpsL5iPcpsAcquisition::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { // nothing to disconnect } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { // nothing to disconnect } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { top_block->disconnect(cbyte_to_float_x2_, 0, float_to_complex_, 0); top_block->disconnect(cbyte_to_float_x2_, 1, float_to_complex_, 1); @@ -299,23 +342,21 @@ void GpsL5iPcpsAcquisition::disconnect(gr::top_block_sptr top_block) gr::basic_block_sptr GpsL5iPcpsAcquisition::get_left_block() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return acquisition_; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return acquisition_; } - else if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { return cbyte_to_float_x2_; } - else - { - LOG(WARNING) << item_type_ << " unknown acquisition item type"; - return nullptr; - } + + LOG(WARNING) << item_type_ << " unknown acquisition item type"; + return nullptr; } @@ -323,3 +364,8 @@ gr::basic_block_sptr GpsL5iPcpsAcquisition::get_right_block() { return acquisition_; } + +void GpsL5iPcpsAcquisition::set_resampler_latency(uint32_t latency_samples) +{ + acquisition_->set_resampler_latency(latency_samples); +} diff --git a/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition.h b/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition.h index 3c4d2ad46..af8cabb81 100644 --- a/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition.h +++ b/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition.h @@ -35,9 +35,9 @@ #define GNSS_SDR_GPS_L5i_PCPS_ACQUISITION_H_ #include "acquisition_interface.h" +#include "complex_byte_to_float_x2.h" #include "gnss_synchro.h" #include "pcps_acquisition.h" -#include "complex_byte_to_float_x2.h" #include #include #include @@ -53,7 +53,8 @@ class GpsL5iPcpsAcquisition : public AcquisitionInterface { public: GpsL5iPcpsAcquisition(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GpsL5iPcpsAcquisition(); @@ -138,9 +139,16 @@ public: */ void stop_acquisition() override; + /*! + * \brief Sets the resampler latency to account it in the acquisition code delay estimation + */ + + void set_resampler_latency(uint32_t latency_samples) override; + private: ConfigurationInterface* configuration_; pcps_acquisition_sptr acquisition_; + Acq_Conf acq_parameters_; gr::blocks::float_to_complex::sptr float_to_complex_; complex_byte_to_float_x2_sptr cbyte_to_float_x2_; size_t item_size_; @@ -154,7 +162,7 @@ private: unsigned int doppler_max_; unsigned int doppler_step_; unsigned int max_dwells_; - long fs_in_; + int64_t fs_in_; bool dump_; bool blocking_; std::string dump_filename_; diff --git a/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.cc b/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.cc index 124999dc9..f90c77040 100644 --- a/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.cc +++ b/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.cc @@ -32,10 +32,10 @@ */ #include "gps_l5i_pcps_acquisition_fpga.h" -#include "configuration_interface.h" -#include "gps_l5_signal.h" #include "GPS_L5.h" +#include "configuration_interface.h" #include "gnss_sdr_flags.h" +#include "gps_l5_signal.h" #include #include @@ -43,13 +43,14 @@ using google::LogMessage; -void GpsL5iPcpsAcquisitionFpga::stop_acquisition() -{ -} GpsL5iPcpsAcquisitionFpga::GpsL5iPcpsAcquisitionFpga( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams) { //printf("L5 ACQ CLASS CREATED\n"); pcpsconf_fpga_t acq_parameters; @@ -61,8 +62,8 @@ GpsL5iPcpsAcquisitionFpga::GpsL5iPcpsAcquisitionFpga( //item_type_ = configuration_->property(role + ".item_type", default_item_type); - long fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); - long fs_in = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); + int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); + int64_t fs_in = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); acq_parameters.fs_in = fs_in; //if_ = configuration_->property(role + ".if", 0); //acq_parameters.freq = if_; @@ -88,7 +89,7 @@ GpsL5iPcpsAcquisitionFpga::GpsL5iPcpsAcquisitionFpga( //dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); //acq_parameters.dump_filename = dump_filename_; //--- Find number of samples per spreading code ------------------------- - unsigned int code_length = static_cast(std::round(static_cast(fs_in) / (GPS_L5i_CODE_RATE_HZ / static_cast(GPS_L5i_CODE_LENGTH_CHIPS)))); + auto code_length = static_cast(std::round(static_cast(fs_in) / (GPS_L5i_CODE_RATE_HZ / static_cast(GPS_L5i_CODE_LENGTH_CHIPS)))); acq_parameters.code_length = code_length; // The FPGA can only use FFT lengths that are a power of two. float nbits = ceilf(log2f((float)code_length)); @@ -104,11 +105,11 @@ GpsL5iPcpsAcquisitionFpga::GpsL5iPcpsAcquisitionFpga( //printf("L5 ACQ CLASS MID 01\n"); // compute all the GPS L5 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time // a channel is assigned) - gr::fft::fft_complex* fft_if = new gr::fft::fft_complex(vector_length, true); // Direct FFT + auto* fft_if = new gr::fft::fft_complex(vector_length, true); // Direct FFT //printf("L5 ACQ CLASS MID 02\n"); - std::complex* code = new gr_complex[vector_length]; + auto* code = new gr_complex[vector_length]; //printf("L5 ACQ CLASS MID 03\n"); - gr_complex* fft_codes_padded = static_cast(volk_gnsssdr_malloc(nsamples_total * sizeof(gr_complex), volk_gnsssdr_get_alignment())); + auto* fft_codes_padded = static_cast(volk_gnsssdr_malloc(nsamples_total * sizeof(gr_complex), volk_gnsssdr_get_alignment())); //printf("L5 ACQ CLASS MID 04\n"); d_all_fft_codes_ = new lv_16sc_t[nsamples_total * NUM_PRNs]; // memory containing all the possible fft codes for PRN 0 to 32 @@ -123,7 +124,7 @@ GpsL5iPcpsAcquisitionFpga::GpsL5iPcpsAcquisitionFpga( // fill in zero padding for (int s = code_length; s < nsamples_total; s++) { - code[s] = std::complex(static_cast(0, 0)); + code[s] = std::complex(0.0, 0.0); //code[s] = 0; } memcpy(fft_if->get_inbuf(), code, sizeof(gr_complex) * nsamples_total); // copy to FFT buffer @@ -207,7 +208,7 @@ GpsL5iPcpsAcquisitionFpga::GpsL5iPcpsAcquisitionFpga( channel_ = 0; // threshold_ = 0.0; doppler_step_ = 0; - gnss_synchro_ = 0; + gnss_synchro_ = nullptr; //printf("L5 ACQ CLASS FINISHED\n"); } @@ -219,6 +220,11 @@ GpsL5iPcpsAcquisitionFpga::~GpsL5iPcpsAcquisitionFpga() } +void GpsL5iPcpsAcquisitionFpga::stop_acquisition() +{ +} + + void GpsL5iPcpsAcquisitionFpga::set_channel(unsigned int channel) { channel_ = channel; @@ -228,7 +234,7 @@ void GpsL5iPcpsAcquisitionFpga::set_channel(unsigned int channel) void GpsL5iPcpsAcquisitionFpga::set_threshold(float threshold) { - // float pfa = configuration_->property(role_ + boost::lexical_cast(channel_) + ".pfa", 0.0); + // float pfa = configuration_->property(role_ + std::to_string(channel_) + ".pfa", 0.0); // // if (pfa == 0.0) // { diff --git a/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.h b/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.h index af916d3d5..bc0a04c4c 100644 --- a/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.h +++ b/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.h @@ -35,11 +35,11 @@ #define GNSS_SDR_GPS_L5i_PCPS_ACQUISITION_FPGA_H_ #include "acquisition_interface.h" +#include "complex_byte_to_float_x2.h" #include "gnss_synchro.h" #include "pcps_acquisition_fpga.h" -#include "complex_byte_to_float_x2.h" -#include #include +#include #include #include @@ -54,7 +54,8 @@ class GpsL5iPcpsAcquisitionFpga : public AcquisitionInterface { public: GpsL5iPcpsAcquisitionFpga(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, + unsigned int in_streams, unsigned int out_streams); virtual ~GpsL5iPcpsAcquisitionFpga(); @@ -139,6 +140,8 @@ public: */ void stop_acquisition() override; + void set_resampler_latency(uint32_t latency_samples __attribute__((unused))) override{}; + private: ConfigurationInterface* configuration_; //pcps_acquisition_sptr acquisition_; @@ -157,7 +160,7 @@ private: unsigned int doppler_max_; unsigned int doppler_step_; unsigned int max_dwells_; - long fs_in_; + int64_t fs_in_; //long if_; bool dump_; bool blocking_; diff --git a/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc index fe7b70878..c884bcf34 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc @@ -42,6 +42,7 @@ #include #include #include +#include using google::LogMessage; @@ -59,7 +60,7 @@ galileo_e5a_noncoherentIQ_acquisition_caf_cc_sptr galileo_e5a_noncoherentIQ_make { return galileo_e5a_noncoherentIQ_acquisition_caf_cc_sptr( new galileo_e5a_noncoherentIQ_acquisition_caf_cc(sampled_ms, max_dwells, doppler_max, fs_in, samples_per_ms, - samples_per_code, bit_transition_flag, dump, dump_filename, both_signal_components_, CAF_window_hz_, Zero_padding_)); + samples_per_code, bit_transition_flag, dump, std::move(dump_filename), both_signal_components_, CAF_window_hz_, Zero_padding_)); } @@ -117,8 +118,8 @@ galileo_e5a_noncoherentIQ_acquisition_caf_cc::galileo_e5a_noncoherentIQ_acquisit } else { - d_fft_code_Q_A = 0; - d_magnitudeQA = 0; + d_fft_code_Q_A = nullptr; + d_magnitudeQA = nullptr; } // IF COHERENT INTEGRATION TIME > 1 if (d_sampled_ms > 1) @@ -132,16 +133,16 @@ galileo_e5a_noncoherentIQ_acquisition_caf_cc::galileo_e5a_noncoherentIQ_acquisit } else { - d_fft_code_Q_B = 0; - d_magnitudeQB = 0; + d_fft_code_Q_B = nullptr; + d_magnitudeQB = nullptr; } } else { - d_fft_code_I_B = 0; - d_magnitudeIB = 0; - d_fft_code_Q_B = 0; - d_magnitudeQB = 0; + d_fft_code_I_B = nullptr; + d_magnitudeIB = nullptr; + d_fft_code_Q_B = nullptr; + d_magnitudeQB = nullptr; } // Direct FFT @@ -152,19 +153,19 @@ galileo_e5a_noncoherentIQ_acquisition_caf_cc::galileo_e5a_noncoherentIQ_acquisit // For dumping samples into a file d_dump = dump; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_doppler_resolution = 0; d_threshold = 0; d_doppler_step = 250; - d_grid_doppler_wipeoffs = 0; - d_gnss_synchro = 0; + d_grid_doppler_wipeoffs = nullptr; + d_gnss_synchro = nullptr; d_code_phase = 0; d_doppler_freq = 0; d_test_statistics = 0; - d_CAF_vector = 0; - d_CAF_vector_I = 0; - d_CAF_vector_Q = 0; + d_CAF_vector = nullptr; + d_CAF_vector_I = nullptr; + d_CAF_vector_Q = nullptr; d_channel = 0; d_gr_stream_buffer = 0; } @@ -393,7 +394,7 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items } case 1: { - const gr_complex *in = reinterpret_cast(input_items[0]); //Get the input samples pointer + const auto *in = reinterpret_cast(input_items[0]); //Get the input samples pointer unsigned int buff_increment; if ((ninput_items[0] + d_buffer_count) <= d_fft_size) { @@ -417,7 +418,7 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items case 2: { // Fill last part of the buffer and reset counter - const gr_complex *in = reinterpret_cast(input_items[0]); //Get the input samples pointer + const auto *in = reinterpret_cast(input_items[0]); //Get the input samples pointer if (d_buffer_count < d_fft_size) { memcpy(&d_inbuffer[d_buffer_count], in, sizeof(gr_complex) * (d_fft_size - d_buffer_count)); @@ -674,7 +675,7 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items if (d_CAF_window_hz > 0) { int CAF_bins_half; - float *accum = static_cast(volk_gnsssdr_malloc(sizeof(float), volk_gnsssdr_get_alignment())); + auto *accum = static_cast(volk_gnsssdr_malloc(sizeof(float), volk_gnsssdr_get_alignment())); CAF_bins_half = d_CAF_window_hz / (2 * d_doppler_step); float weighting_factor; weighting_factor = 0.5 / static_cast(CAF_bins_half); diff --git a/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.h b/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.h index 2ebe9a8e5..352dc938c 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.h +++ b/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.h @@ -38,12 +38,12 @@ #ifndef GALILEO_E5A_NONCOHERENT_IQ_ACQUISITION_CAF_CC_H_ #define GALILEO_E5A_NONCOHERENT_IQ_ACQUISITION_CAF_CC_H_ +#include "gnss_synchro.h" +#include +#include +#include #include #include -#include -#include -#include -#include "gnss_synchro.h" class galileo_e5a_noncoherentIQ_acquisition_caf_cc; diff --git a/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc index 318f6ad46..275b8aad0 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc @@ -30,30 +30,37 @@ */ #include "galileo_pcps_8ms_acquisition_cc.h" -#include +#include "control_message_factory.h" #include #include #include #include -#include "control_message_factory.h" +#include +#include using google::LogMessage; galileo_pcps_8ms_acquisition_cc_sptr galileo_pcps_8ms_make_acquisition_cc( - unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, + uint32_t sampled_ms, + uint32_t max_dwells, + uint32_t doppler_max, + int64_t fs_in, + int32_t samples_per_ms, + int32_t samples_per_code, bool dump, std::string dump_filename) { return galileo_pcps_8ms_acquisition_cc_sptr( new galileo_pcps_8ms_acquisition_cc(sampled_ms, max_dwells, doppler_max, fs_in, samples_per_ms, - samples_per_code, dump, dump_filename)); + samples_per_code, dump, std::move(dump_filename))); } galileo_pcps_8ms_acquisition_cc::galileo_pcps_8ms_acquisition_cc( - unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, + uint32_t sampled_ms, + uint32_t max_dwells, + uint32_t doppler_max, + int64_t fs_in, + int32_t samples_per_ms, + int32_t samples_per_code, bool dump, std::string dump_filename) : gr::block("galileo_pcps_8ms_acquisition_cc", gr::io_signature::make(1, 1, sizeof(gr_complex) * sampled_ms * samples_per_ms), @@ -87,24 +94,25 @@ galileo_pcps_8ms_acquisition_cc::galileo_pcps_8ms_acquisition_cc( // For dumping samples into a file d_dump = dump; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_doppler_resolution = 0; d_threshold = 0; d_doppler_step = 0; - d_grid_doppler_wipeoffs = 0; - d_gnss_synchro = 0; + d_grid_doppler_wipeoffs = nullptr; + d_gnss_synchro = nullptr; d_code_phase = 0; d_doppler_freq = 0; d_test_statistics = 0; d_channel = 0; } + galileo_pcps_8ms_acquisition_cc::~galileo_pcps_8ms_acquisition_cc() { if (d_num_doppler_bins > 0) { - for (unsigned int i = 0; i < d_num_doppler_bins; i++) + for (uint32_t i = 0; i < d_num_doppler_bins; i++) { volk_gnsssdr_free(d_grid_doppler_wipeoffs[i]); } @@ -124,6 +132,7 @@ galileo_pcps_8ms_acquisition_cc::~galileo_pcps_8ms_acquisition_cc() } } + void galileo_pcps_8ms_acquisition_cc::set_local_code(std::complex *code) { // code A: two replicas of a primary code @@ -145,6 +154,7 @@ void galileo_pcps_8ms_acquisition_cc::set_local_code(std::complex *code) volk_32fc_conjugate_32fc(d_fft_code_B, d_fft_if->get_outbuf(), d_fft_size); } + void galileo_pcps_8ms_acquisition_cc::init() { d_gnss_synchro->Flag_valid_acquisition = false; @@ -160,8 +170,8 @@ void galileo_pcps_8ms_acquisition_cc::init() const double GALILEO_TWO_PI = 6.283185307179600; // Count the number of bins d_num_doppler_bins = 0; - for (int doppler = static_cast(-d_doppler_max); - doppler <= static_cast(d_doppler_max); + for (auto doppler = static_cast(-d_doppler_max); + doppler <= static_cast(d_doppler_max); doppler += d_doppler_step) { d_num_doppler_bins++; @@ -169,10 +179,10 @@ void galileo_pcps_8ms_acquisition_cc::init() // Create the carrier Doppler wipeoff signals d_grid_doppler_wipeoffs = new gr_complex *[d_num_doppler_bins]; - for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) + for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { d_grid_doppler_wipeoffs[doppler_index] = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(gr_complex), volk_gnsssdr_get_alignment())); - int doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; + int32_t doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; float phase_step_rad = static_cast(GALILEO_TWO_PI) * doppler / static_cast(d_fs_in); float _phase[1]; _phase[0] = 0; @@ -181,7 +191,7 @@ void galileo_pcps_8ms_acquisition_cc::init() } -void galileo_pcps_8ms_acquisition_cc::set_state(int state) +void galileo_pcps_8ms_acquisition_cc::set_state(int32_t state) { d_state = state; if (d_state == 1) @@ -209,7 +219,7 @@ int galileo_pcps_8ms_acquisition_cc::general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items __attribute__((unused))) { - int acquisition_message = -1; //0=STOP_CHANNEL 1=ACQ_SUCCEES 2=ACQ_FAIL + int32_t acquisition_message = -1; //0=STOP_CHANNEL 1=ACQ_SUCCEES 2=ACQ_FAIL switch (d_state) { @@ -239,14 +249,14 @@ int galileo_pcps_8ms_acquisition_cc::general_work(int noutput_items, case 1: { // initialize acquisition algorithm - int doppler; + int32_t doppler; uint32_t indext = 0; uint32_t indext_A = 0; uint32_t indext_B = 0; float magt = 0.0; float magt_A = 0.0; float magt_B = 0.0; - const gr_complex *in = reinterpret_cast(input_items[0]); //Get the input samples pointer + const auto *in = reinterpret_cast(input_items[0]); //Get the input samples pointer float fft_normalization_factor = static_cast(d_fft_size) * static_cast(d_fft_size); d_input_power = 0.0; d_mag = 0.0; @@ -267,10 +277,10 @@ int galileo_pcps_8ms_acquisition_cc::general_work(int noutput_items, d_input_power /= static_cast(d_fft_size); // 2- Doppler frequency search loop - for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) + for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { // doppler search steps - doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; + doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; volk_32fc_x2_multiply_32fc(d_fft_if->get_inbuf(), in, d_grid_doppler_wipeoffs[doppler_index], d_fft_size); diff --git a/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.h index dc00681a3..d9f794d1e 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.h +++ b/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.h @@ -32,22 +32,26 @@ #ifndef GNSS_SDR_PCPS_8MS_ACQUISITION_CC_H_ #define GNSS_SDR_PCPS_8MS_ACQUISITION_CC_H_ +#include "gnss_synchro.h" +#include +#include +#include #include #include -#include -#include -#include -#include "gnss_synchro.h" class galileo_pcps_8ms_acquisition_cc; typedef boost::shared_ptr galileo_pcps_8ms_acquisition_cc_sptr; galileo_pcps_8ms_acquisition_cc_sptr -galileo_pcps_8ms_make_acquisition_cc(unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, - bool dump, std::string dump_filename); +galileo_pcps_8ms_make_acquisition_cc(uint32_t sampled_ms, + uint32_t max_dwells, + uint32_t doppler_max, + int64_t fs_in, + int32_t samples_per_ms, + int32_t samples_per_code, + bool dump, + std::string dump_filename); /*! * \brief This class implements a Parallel Code Phase Search Acquisition for @@ -57,41 +61,52 @@ class galileo_pcps_8ms_acquisition_cc : public gr::block { private: friend galileo_pcps_8ms_acquisition_cc_sptr - galileo_pcps_8ms_make_acquisition_cc(unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, - bool dump, std::string dump_filename); + galileo_pcps_8ms_make_acquisition_cc( + uint32_t sampled_ms, + uint32_t max_dwells, + uint32_t doppler_max, + int64_t fs_in, + int32_t samples_per_ms, + int32_t samples_per_code, + bool dump, + std::string dump_filename); + galileo_pcps_8ms_acquisition_cc( + uint32_t sampled_ms, + uint32_t max_dwells, + uint32_t doppler_max, + int64_t fs_in, + int32_t samples_per_ms, + int32_t samples_per_code, + bool dump, + std::string dump_filename); - galileo_pcps_8ms_acquisition_cc(unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, - bool dump, std::string dump_filename); + void calculate_magnitudes( + gr_complex* fft_begin, + int32_t doppler_shift, + int32_t doppler_offset); - void calculate_magnitudes(gr_complex* fft_begin, int doppler_shift, - int doppler_offset); - - long d_fs_in; - int d_samples_per_ms; - int d_samples_per_code; - unsigned int d_doppler_resolution; + int64_t d_fs_in; + int32_t d_samples_per_ms; + int32_t d_samples_per_code; + uint32_t d_doppler_resolution; float d_threshold; std::string d_satellite_str; - unsigned int d_doppler_max; - unsigned int d_doppler_step; - unsigned int d_sampled_ms; - unsigned int d_max_dwells; - unsigned int d_well_count; - unsigned int d_fft_size; + uint32_t d_doppler_max; + uint32_t d_doppler_step; + uint32_t d_sampled_ms; + uint32_t d_max_dwells; + uint32_t d_well_count; + uint32_t d_fft_size; uint64_t d_sample_counter; gr_complex** d_grid_doppler_wipeoffs; - unsigned int d_num_doppler_bins; + uint32_t d_num_doppler_bins; gr_complex* d_fft_code_A; gr_complex* d_fft_code_B; gr::fft::fft_complex* d_fft_if; gr::fft::fft_complex* d_ifft; Gnss_Synchro* d_gnss_synchro; - unsigned int d_code_phase; + uint32_t d_code_phase; float d_doppler_freq; float d_mag; float* d_magnitude; @@ -99,9 +114,9 @@ private: float d_test_statistics; std::ofstream d_dump_file; bool d_active; - int d_state; + int32_t d_state; bool d_dump; - unsigned int d_channel; + uint32_t d_channel; std::string d_dump_filename; public: @@ -123,7 +138,7 @@ public: /*! * \brief Returns the maximum peak of grid search. */ - inline unsigned int mag() const + inline uint32_t mag() const { return d_mag; } @@ -154,13 +169,13 @@ public: * first available sample. * \param state - int=1 forces start of acquisition */ - void set_state(int state); + void set_state(int32_t state); /*! * \brief Set acquisition channel unique ID * \param channel - receiver channel. */ - inline void set_channel(unsigned int channel) + inline void set_channel(uint32_t channel) { d_channel = channel; } @@ -179,7 +194,7 @@ public: * \brief Set maximum Doppler grid search * \param doppler_max - Maximum Doppler shift considered in the grid search [Hz]. */ - inline void set_doppler_max(unsigned int doppler_max) + inline void set_doppler_max(uint32_t doppler_max) { d_doppler_max = doppler_max; } @@ -188,7 +203,7 @@ public: * \brief Set Doppler steps for the grid search * \param doppler_step - Frequency bin of the search grid [Hz]. */ - inline void set_doppler_step(unsigned int doppler_step) + inline void set_doppler_step(uint32_t doppler_step) { d_doppler_step = doppler_step; } diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.cc index 1bb4b39a7..d95bb24cb 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.cc @@ -34,8 +34,8 @@ */ #include "pcps_acquisition.h" +#include "GLONASS_L1_L2_CA.h" // for GLONASS_TWO_PI #include "GPS_L1_CA.h" // for GPS_TWO_PI -#include "GLONASS_L1_L2_CA.h" // for GLONASS_TWO_PI" #include "gnss_sdr_create_directory.h" #include #include @@ -120,7 +120,7 @@ pcps_acquisition::pcps_acquisition(const Acq_Conf& conf_) : gr::block("pcps_acqu // Inverse FFT d_ifft = new gr::fft::fft_complex(d_fft_size, false); - d_gnss_synchro = 0; + d_gnss_synchro = nullptr; d_grid_doppler_wipeoffs = nullptr; d_grid_doppler_wipeoffs_step_two = nullptr; d_magnitude_grid = nullptr; @@ -158,10 +158,10 @@ pcps_acquisition::pcps_acquisition(const Acq_Conf& conf_) : gr::block("pcps_acqu { std::string dump_path; // Get path - if (d_dump_filename.find_last_of("/") != std::string::npos) + if (d_dump_filename.find_last_of('/') != std::string::npos) { - std::string dump_filename_ = d_dump_filename.substr(d_dump_filename.find_last_of("/") + 1); - dump_path = d_dump_filename.substr(0, d_dump_filename.find_last_of("/")); + std::string dump_filename_ = d_dump_filename.substr(d_dump_filename.find_last_of('/') + 1); + dump_path = d_dump_filename.substr(0, d_dump_filename.find_last_of('/')); d_dump_filename = dump_filename_; } else @@ -173,9 +173,9 @@ pcps_acquisition::pcps_acquisition(const Acq_Conf& conf_) : gr::block("pcps_acqu d_dump_filename = "acquisition"; } // remove extension if any - if (d_dump_filename.substr(1).find_last_of(".") != std::string::npos) + if (d_dump_filename.substr(1).find_last_of('.') != std::string::npos) { - d_dump_filename = d_dump_filename.substr(0, d_dump_filename.find_last_of(".")); + d_dump_filename = d_dump_filename.substr(0, d_dump_filename.find_last_of('.')); } d_dump_filename = dump_path + boost::filesystem::path::preferred_separator + d_dump_filename; // create directory @@ -221,6 +221,12 @@ pcps_acquisition::~pcps_acquisition() } +void pcps_acquisition::set_resampler_latency(uint32_t latency_samples) +{ + gr::thread::scoped_lock lock(d_setlock); // require mutex with work function called by the scheduler + acq_parameters.resampler_latency_samples = latency_samples; +} + void pcps_acquisition::set_local_code(std::complex* code) { // reset the intermediate frequency @@ -268,22 +274,27 @@ bool pcps_acquisition::is_fdma() LOG(INFO) << "Trying to acquire SV PRN " << d_gnss_synchro->PRN << " with freq " << d_old_freq << " in Glonass Channel " << GLONASS_PRN.at(d_gnss_synchro->PRN) << std::endl; return true; } - else if (strcmp(d_gnss_synchro->Signal, "2G") == 0) + if (strcmp(d_gnss_synchro->Signal, "2G") == 0) { d_old_freq += DFRQ2_GLO * GLONASS_PRN.at(d_gnss_synchro->PRN); LOG(INFO) << "Trying to acquire SV PRN " << d_gnss_synchro->PRN << " with freq " << d_old_freq << " in Glonass Channel " << GLONASS_PRN.at(d_gnss_synchro->PRN) << std::endl; return true; } - else - { - return false; - } + return false; } void pcps_acquisition::update_local_carrier(gr_complex* carrier_vector, int32_t correlator_length_samples, float freq) { - float phase_step_rad = GPS_TWO_PI * freq / static_cast(acq_parameters.fs_in); + float phase_step_rad; + if (acq_parameters.use_automatic_resampler) + { + phase_step_rad = GPS_TWO_PI * freq / static_cast(acq_parameters.resampled_fs); + } + else + { + phase_step_rad = GPS_TWO_PI * freq / static_cast(acq_parameters.fs_in); + } float _phase[1]; _phase[0] = 0.0; volk_gnsssdr_s32f_sincos_32fc(carrier_vector, -phase_step_rad, _phase, correlator_length_samples); @@ -445,8 +456,8 @@ void pcps_acquisition::dump_results(int32_t effective_fft_size) filename.append(std::to_string(d_gnss_synchro->PRN)); filename.append(".mat"); - mat_t* matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (matfp == NULL) + mat_t* matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (matfp == nullptr) { std::cout << "Unable to create or open Acquisition dump file" << std::endl; //acq_parameters.dump = false; @@ -472,7 +483,7 @@ void pcps_acquisition::dump_results(int32_t effective_fft_size) Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB); // or MAT_COMPRESSION_NONE Mat_VarFree(matvar); - float aux = static_cast(d_gnss_synchro->Acq_doppler_hz); + auto aux = static_cast(d_gnss_synchro->Acq_doppler_hz); matvar = Mat_VarCreate("acq_doppler_hz", MAT_C_SINGLE, MAT_T_SINGLE, 1, dims, &aux, 0); Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB); // or MAT_COMPRESSION_NONE Mat_VarFree(matvar); @@ -719,9 +730,20 @@ void pcps_acquisition::acquisition_core(uint64_t samp_count) { d_test_statistics = first_vs_second_peak_statistic(indext, doppler, d_num_doppler_bins, acq_parameters.doppler_max, d_doppler_step); } - d_gnss_synchro->Acq_delay_samples = static_cast(std::fmod(static_cast(indext), acq_parameters.samples_per_code)); - d_gnss_synchro->Acq_doppler_hz = static_cast(doppler); - d_gnss_synchro->Acq_samplestamp_samples = samp_count; + if (acq_parameters.use_automatic_resampler) + { + //take into account the acquisition resampler ratio + d_gnss_synchro->Acq_delay_samples = static_cast(std::fmod(static_cast(indext), acq_parameters.samples_per_code)) * acq_parameters.resampler_ratio; + d_gnss_synchro->Acq_delay_samples -= static_cast(acq_parameters.resampler_latency_samples); //account the resampler filter latency + d_gnss_synchro->Acq_doppler_hz = static_cast(doppler); + d_gnss_synchro->Acq_samplestamp_samples = rint(static_cast(samp_count) * acq_parameters.resampler_ratio); + } + else + { + d_gnss_synchro->Acq_delay_samples = static_cast(std::fmod(static_cast(indext), acq_parameters.samples_per_code)); + d_gnss_synchro->Acq_doppler_hz = static_cast(doppler); + d_gnss_synchro->Acq_samplestamp_samples = samp_count; + } } else { @@ -765,10 +787,23 @@ void pcps_acquisition::acquisition_core(uint64_t samp_count) { d_test_statistics = first_vs_second_peak_statistic(indext, doppler, d_num_doppler_bins_step2, static_cast(d_doppler_center_step_two - (static_cast(d_num_doppler_bins_step2) / 2.0) * acq_parameters.doppler_step2), acq_parameters.doppler_step2); } - d_gnss_synchro->Acq_delay_samples = static_cast(std::fmod(static_cast(indext), acq_parameters.samples_per_code)); - d_gnss_synchro->Acq_doppler_hz = static_cast(doppler); - d_gnss_synchro->Acq_samplestamp_samples = samp_count; - d_gnss_synchro->Acq_doppler_step = acq_parameters.doppler_step2; + + if (acq_parameters.use_automatic_resampler) + { + //take into account the acquisition resampler ratio + d_gnss_synchro->Acq_delay_samples = static_cast(std::fmod(static_cast(indext), acq_parameters.samples_per_code)) * acq_parameters.resampler_ratio; + d_gnss_synchro->Acq_delay_samples -= static_cast(acq_parameters.resampler_latency_samples); //account the resampler filter latency + d_gnss_synchro->Acq_doppler_hz = static_cast(doppler); + d_gnss_synchro->Acq_samplestamp_samples = rint(static_cast(samp_count) * acq_parameters.resampler_ratio); + d_gnss_synchro->Acq_doppler_step = acq_parameters.doppler_step2; + } + else + { + d_gnss_synchro->Acq_delay_samples = static_cast(std::fmod(static_cast(indext), acq_parameters.samples_per_code)); + d_gnss_synchro->Acq_doppler_hz = static_cast(doppler); + d_gnss_synchro->Acq_samplestamp_samples = samp_count; + d_gnss_synchro->Acq_doppler_step = acq_parameters.doppler_step2; + } } lk.lock(); @@ -868,6 +903,12 @@ void pcps_acquisition::acquisition_core(uint64_t samp_count) } } +// Called by gnuradio to enable drivers, etc for i/o devices. +bool pcps_acquisition::start() +{ + d_sample_counter = 0ULL; + return true; +} int pcps_acquisition::general_work(int noutput_items __attribute__((unused)), gr_vector_int& ninput_items, gr_vector_const_void_star& input_items, @@ -927,7 +968,7 @@ int pcps_acquisition::general_work(int noutput_items __attribute__((unused)), uint32_t buff_increment; if (d_cshort) { - const lv_16sc_t* in = reinterpret_cast(input_items[0]); // Get the input samples pointer + const auto* in = reinterpret_cast(input_items[0]); // Get the input samples pointer if ((ninput_items[0] + d_buffer_count) <= d_consumed_samples) { buff_increment = ninput_items[0]; @@ -940,7 +981,7 @@ int pcps_acquisition::general_work(int noutput_items __attribute__((unused)), } else { - const gr_complex* in = reinterpret_cast(input_items[0]); // Get the input samples pointer + const auto* in = reinterpret_cast(input_items[0]); // Get the input samples pointer if ((ninput_items[0] + d_buffer_count) <= d_consumed_samples) { buff_increment = ninput_items[0]; diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.h index 4e46d049b..c403b7d50 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.h +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.h @@ -52,8 +52,8 @@ #ifndef GNSS_SDR_PCPS_ACQUISITION_H_ #define GNSS_SDR_PCPS_ACQUISITION_H_ -#include "gnss_synchro.h" #include "acq_conf.h" +#include "gnss_synchro.h" #include #include #include @@ -98,6 +98,9 @@ private: float first_vs_second_peak_statistic(uint32_t& indext, int32_t& doppler, uint32_t num_doppler_bins, int32_t doppler_max, int32_t doppler_step); float max_to_input_power_statistic(uint32_t& indext, int32_t& doppler, float input_power, uint32_t num_doppler_bins, int32_t doppler_max, int32_t doppler_step); + bool start(); + + Acq_Conf acq_parameters; bool d_active; bool d_worker_active; @@ -233,6 +236,9 @@ public: d_doppler_step = doppler_step; } + + void set_resampler_latency(uint32_t latency_samples); + /*! * \brief Parallel Code Phase Search Acquisition signal processing. */ diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.cc index 894b6ef20..51b821e36 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.cc @@ -31,18 +31,18 @@ */ #include "pcps_acquisition_fine_doppler_cc.h" -#include "gps_sdr_signal_processing.h" -#include "control_message_factory.h" #include "GPS_L1_CA.h" +#include "control_message_factory.h" #include "gnss_sdr_create_directory.h" +#include "gps_sdr_signal_processing.h" #include #include #include +#include #include #include #include // std::rotate, std::fill_n #include -#include using google::LogMessage; @@ -91,10 +91,10 @@ pcps_acquisition_fine_doppler_cc::pcps_acquisition_fine_doppler_cc(const Acq_Con { std::string dump_path; // Get path - if (d_dump_filename.find_last_of("/") != std::string::npos) + if (d_dump_filename.find_last_of('/') != std::string::npos) { - std::string dump_filename_ = d_dump_filename.substr(d_dump_filename.find_last_of("/") + 1); - dump_path = d_dump_filename.substr(0, d_dump_filename.find_last_of("/")); + std::string dump_filename_ = d_dump_filename.substr(d_dump_filename.find_last_of('/') + 1); + dump_path = d_dump_filename.substr(0, d_dump_filename.find_last_of('/')); d_dump_filename = dump_filename_; } else @@ -106,9 +106,9 @@ pcps_acquisition_fine_doppler_cc::pcps_acquisition_fine_doppler_cc(const Acq_Con d_dump_filename = "acquisition"; } // remove extension if any - if (d_dump_filename.substr(1).find_last_of(".") != std::string::npos) + if (d_dump_filename.substr(1).find_last_of('.') != std::string::npos) { - d_dump_filename = d_dump_filename.substr(0, d_dump_filename.find_last_of(".")); + d_dump_filename = d_dump_filename.substr(0, d_dump_filename.find_last_of('.')); } d_dump_filename = dump_path + boost::filesystem::path::preferred_separator + d_dump_filename; // create directory @@ -123,9 +123,9 @@ pcps_acquisition_fine_doppler_cc::pcps_acquisition_fine_doppler_cc(const Acq_Con d_threshold = 0; d_num_doppler_points = 0; d_doppler_step = 0; - d_grid_data = 0; - d_grid_doppler_wipeoffs = 0; - d_gnss_synchro = 0; + d_grid_data = nullptr; + d_grid_doppler_wipeoffs = nullptr; + d_gnss_synchro = nullptr; d_code_phase = 0; d_doppler_freq = 0; d_test_statistics = 0; @@ -337,7 +337,7 @@ double pcps_acquisition_fine_doppler_cc::compute_CAF() float pcps_acquisition_fine_doppler_cc::estimate_input_power(gr_vector_const_void_star &input_items) { - const gr_complex *in = reinterpret_cast(input_items[0]); //Get the input samples pointer + const auto *in = reinterpret_cast(input_items[0]); //Get the input samples pointer // Compute the input signal power estimation float power = 0; volk_32fc_magnitude_squared_32f(d_magnitude, in, d_fft_size); @@ -350,7 +350,7 @@ float pcps_acquisition_fine_doppler_cc::estimate_input_power(gr_vector_const_voi int pcps_acquisition_fine_doppler_cc::compute_and_accumulate_grid(gr_vector_const_void_star &input_items) { // initialize acquisition algorithm - const gr_complex *in = reinterpret_cast(input_items[0]); //Get the input samples pointer + const auto *in = reinterpret_cast(input_items[0]); //Get the input samples pointer DLOG(INFO) << "Channel: " << d_channel << " , doing acquisition of satellite: " << d_gnss_synchro->System << " " << d_gnss_synchro->PRN @@ -359,7 +359,7 @@ int pcps_acquisition_fine_doppler_cc::compute_and_accumulate_grid(gr_vector_cons << ", doppler_step: " << d_doppler_step; // 2- Doppler frequency search loop - float *p_tmp_vector = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(float), volk_gnsssdr_get_alignment())); + auto *p_tmp_vector = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(float), volk_gnsssdr_get_alignment())); for (int doppler_index = 0; doppler_index < d_num_doppler_points; doppler_index++) { @@ -405,12 +405,12 @@ int pcps_acquisition_fine_doppler_cc::estimate_Doppler() int signal_samples = prn_replicas * d_fft_size; //int fft_size_extended = nextPowerOf2(signal_samples * zero_padding_factor); int fft_size_extended = signal_samples * zero_padding_factor; - gr::fft::fft_complex *fft_operator = new gr::fft::fft_complex(fft_size_extended, true); + auto *fft_operator = new gr::fft::fft_complex(fft_size_extended, true); //zero padding the entire vector std::fill_n(fft_operator->get_inbuf(), fft_size_extended, gr_complex(0.0, 0.0)); //1. generate local code aligned with the acquisition code phase estimation - gr_complex *code_replica = static_cast(volk_gnsssdr_malloc(signal_samples * sizeof(gr_complex), volk_gnsssdr_get_alignment())); + auto *code_replica = static_cast(volk_gnsssdr_malloc(signal_samples * sizeof(gr_complex), volk_gnsssdr_get_alignment())); gps_l1_ca_code_gen_complex_sampled(code_replica, d_gnss_synchro->PRN, d_fs_in, 0); @@ -433,7 +433,7 @@ int pcps_acquisition_fine_doppler_cc::estimate_Doppler() fft_operator->execute(); // 4. Compute the magnitude and find the maximum - float *p_tmp_vector = static_cast(volk_gnsssdr_malloc(fft_size_extended * sizeof(float), volk_gnsssdr_get_alignment())); + auto *p_tmp_vector = static_cast(volk_gnsssdr_malloc(fft_size_extended * sizeof(float), volk_gnsssdr_get_alignment())); volk_32fc_magnitude_squared_32f(p_tmp_vector, fft_operator->get_outbuf(), fft_size_extended); @@ -442,7 +442,7 @@ int pcps_acquisition_fine_doppler_cc::estimate_Doppler() //case even int counter = 0; - float *fftFreqBins = new float[fft_size_extended]; + auto *fftFreqBins = new float[fft_size_extended]; std::fill_n(fftFreqBins, fft_size_extended, 0.0); @@ -672,8 +672,8 @@ void pcps_acquisition_fine_doppler_cc::dump_results(int effective_fft_size) filename.append(std::to_string(d_gnss_synchro->PRN)); filename.append(".mat"); - mat_t *matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (matfp == NULL) + mat_t *matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (matfp == nullptr) { std::cout << "Unable to create or open Acquisition dump file" << std::endl; d_dump = false; @@ -699,7 +699,7 @@ void pcps_acquisition_fine_doppler_cc::dump_results(int effective_fft_size) Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB); // or MAT_COMPRESSION_NONE Mat_VarFree(matvar); - float aux = static_cast(d_gnss_synchro->Acq_doppler_hz); + auto aux = static_cast(d_gnss_synchro->Acq_doppler_hz); matvar = Mat_VarCreate("acq_doppler_hz", MAT_C_SINGLE, MAT_T_SINGLE, 1, dims, &aux, 0); Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB); // or MAT_COMPRESSION_NONE Mat_VarFree(matvar); diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.h index 6c34ad565..d92ed1db7 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.h +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.h @@ -49,12 +49,12 @@ #ifndef GNSS_SDR_PCPS_ACQUISITION_FINE_DOPPLER_CC_H_ #define GNSS_SDR_PCPS_ACQUISITION_FINE_DOPPLER_CC_H_ -#include "gnss_synchro.h" #include "acq_conf.h" +#include "gnss_synchro.h" #include #include -#include #include +#include #include #include diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.cc index 5e97a8ed5..ffb4d2452 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.cc @@ -39,9 +39,10 @@ */ +#include "pcps_acquisition_fpga.h" #include #include -#include "pcps_acquisition_fpga.h" +#include #define AQ_DOWNSAMPLING_DELAY 40 // delay due to the downsampling filter in the acquisition @@ -50,7 +51,7 @@ using google::LogMessage; pcps_acquisition_fpga_sptr pcps_make_acquisition_fpga(pcpsconf_fpga_t conf_) { - return pcps_acquisition_fpga_sptr(new pcps_acquisition_fpga(conf_)); + return pcps_acquisition_fpga_sptr(new pcps_acquisition_fpga(std::move(conf_))); } @@ -61,7 +62,7 @@ pcps_acquisition_fpga::pcps_acquisition_fpga(pcpsconf_fpga_t conf_) : gr::block( // printf("acq constructor start\n"); this->message_port_register_out(pmt::mp("events")); - acq_parameters = conf_; + acq_parameters = std::move(conf_); d_sample_counter = 0ULL; // SAMPLE COUNTER d_active = false; d_state = 0; @@ -74,7 +75,7 @@ pcps_acquisition_fpga::pcps_acquisition_fpga(pcpsconf_fpga_t conf_) : gr::block( d_doppler_step = 0U; d_test_statistics = 0.0; d_channel = 0U; - d_gnss_synchro = 0; + d_gnss_synchro = nullptr; //printf("zzzz acq_parameters.code_length = %d\n", acq_parameters.code_length); //printf("zzzz acq_parameters.samples_per_ms = %d\n", acq_parameters.samples_per_ms); @@ -256,7 +257,7 @@ void pcps_acquisition_fpga::set_active(bool active) d_gnss_synchro->Acq_doppler_hz = static_cast(doppler); d_gnss_synchro->Acq_samplestamp_samples = d_sample_counter; - d_test_statistics = (d_mag / d_input_power); //* correction_factor; + d_test_statistics = (d_mag / d_input_power); // correction_factor; } // In the case of the FPGA the option of dumping the results of the acquisition to a file is not available diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.cc index 31c28c319..b01652ec3 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.cc @@ -31,34 +31,35 @@ */ #include "pcps_assisted_acquisition_cc.h" -#include +#include "GPS_L1_CA.h" +#include "concurrent_map.h" +#include "control_message_factory.h" +#include "gps_acq_assist.h" #include #include #include #include -#include "concurrent_map.h" -#include "control_message_factory.h" -#include "gps_acq_assist.h" -#include "GPS_L1_CA.h" +#include +#include extern concurrent_map global_gps_acq_assist_map; using google::LogMessage; pcps_assisted_acquisition_cc_sptr pcps_make_assisted_acquisition_cc( - int max_dwells, unsigned int sampled_ms, int doppler_max, int doppler_min, - long fs_in, int samples_per_ms, bool dump, + int32_t max_dwells, uint32_t sampled_ms, int32_t doppler_max, int32_t doppler_min, + int64_t fs_in, int32_t samples_per_ms, bool dump, std::string dump_filename) { return pcps_assisted_acquisition_cc_sptr( new pcps_assisted_acquisition_cc(max_dwells, sampled_ms, doppler_max, doppler_min, - fs_in, samples_per_ms, dump, dump_filename)); + fs_in, samples_per_ms, dump, std::move(dump_filename))); } pcps_assisted_acquisition_cc::pcps_assisted_acquisition_cc( - int max_dwells, unsigned int sampled_ms, int doppler_max, int doppler_min, - long fs_in, int samples_per_ms, bool dump, + int32_t max_dwells, uint32_t sampled_ms, int32_t doppler_max, int32_t doppler_min, + int64_t fs_in, int32_t samples_per_ms, bool dump, std::string dump_filename) : gr::block("pcps_assisted_acquisition_cc", gr::io_signature::make(1, 1, sizeof(gr_complex)), gr::io_signature::make(0, 0, sizeof(gr_complex))) @@ -89,7 +90,7 @@ pcps_assisted_acquisition_cc::pcps_assisted_acquisition_cc( // For dumping samples into a file d_dump = dump; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_doppler_resolution = 0; d_threshold = 0; @@ -97,9 +98,9 @@ pcps_assisted_acquisition_cc::pcps_assisted_acquisition_cc( d_doppler_min = 0; d_num_doppler_points = 0; d_doppler_step = 0; - d_grid_data = 0; - d_grid_doppler_wipeoffs = 0; - d_gnss_synchro = 0; + d_grid_data = nullptr; + d_grid_doppler_wipeoffs = nullptr; + d_gnss_synchro = nullptr; d_code_phase = 0; d_doppler_freq = 0; d_test_statistics = 0; @@ -108,7 +109,7 @@ pcps_assisted_acquisition_cc::pcps_assisted_acquisition_cc( } -void pcps_assisted_acquisition_cc::set_doppler_step(unsigned int doppler_step) +void pcps_assisted_acquisition_cc::set_doppler_step(uint32_t doppler_step) { d_doppler_step = doppler_step; } @@ -116,7 +117,7 @@ void pcps_assisted_acquisition_cc::set_doppler_step(unsigned int doppler_step) void pcps_assisted_acquisition_cc::free_grid_memory() { - for (int i = 0; i < d_num_doppler_points; i++) + for (int32_t i = 0; i < d_num_doppler_points; i++) { delete[] d_grid_data[i]; delete[] d_grid_doppler_wipeoffs[i]; @@ -205,9 +206,9 @@ void pcps_assisted_acquisition_cc::get_assistance() void pcps_assisted_acquisition_cc::reset_grid() { d_well_count = 0; - for (int i = 0; i < d_num_doppler_points; i++) + for (int32_t i = 0; i < d_num_doppler_points; i++) { - for (unsigned int j = 0; j < d_fft_size; j++) + for (uint32_t j = 0; j < d_fft_size; j++) { d_grid_data[i][j] = 0.0; } @@ -226,16 +227,16 @@ void pcps_assisted_acquisition_cc::redefine_grid() d_num_doppler_points = floor(std::abs(d_doppler_max - d_doppler_min) / d_doppler_step); d_grid_data = new float *[d_num_doppler_points]; - for (int i = 0; i < d_num_doppler_points; i++) + for (int32_t i = 0; i < d_num_doppler_points; i++) { d_grid_data[i] = new float[d_fft_size]; } // create the carrier Doppler wipeoff signals - int doppler_hz; + int32_t doppler_hz; float phase_step_rad; d_grid_doppler_wipeoffs = new gr_complex *[d_num_doppler_points]; - for (int doppler_index = 0; doppler_index < d_num_doppler_points; doppler_index++) + for (int32_t doppler_index = 0; doppler_index < d_num_doppler_points; doppler_index++) { doppler_hz = d_doppler_min + d_doppler_step * doppler_index; // doppler search steps @@ -253,11 +254,11 @@ double pcps_assisted_acquisition_cc::search_maximum() { float magt = 0.0; float fft_normalization_factor; - int index_doppler = 0; + int32_t index_doppler = 0; uint32_t tmp_intex_t = 0; uint32_t index_time = 0; - for (int i = 0; i < d_num_doppler_points; i++) + for (int32_t i = 0; i < d_num_doppler_points; i++) { volk_gnsssdr_32f_index_max_32u(&tmp_intex_t, d_grid_data[i], d_fft_size); if (d_grid_data[i][tmp_intex_t] > magt) @@ -301,9 +302,9 @@ double pcps_assisted_acquisition_cc::search_maximum() float pcps_assisted_acquisition_cc::estimate_input_power(gr_vector_const_void_star &input_items) { - const gr_complex *in = reinterpret_cast(input_items[0]); //Get the input samples pointer + const auto *in = reinterpret_cast(input_items[0]); //Get the input samples pointer // 1- Compute the input signal power estimation - float *p_tmp_vector = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(float), volk_gnsssdr_get_alignment())); + auto *p_tmp_vector = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(float), volk_gnsssdr_get_alignment())); volk_32fc_magnitude_squared_32f(p_tmp_vector, in, d_fft_size); @@ -315,10 +316,10 @@ float pcps_assisted_acquisition_cc::estimate_input_power(gr_vector_const_void_st } -int pcps_assisted_acquisition_cc::compute_and_accumulate_grid(gr_vector_const_void_star &input_items) +int32_t pcps_assisted_acquisition_cc::compute_and_accumulate_grid(gr_vector_const_void_star &input_items) { // initialize acquisition algorithm - const gr_complex *in = reinterpret_cast(input_items[0]); //Get the input samples pointer + const auto *in = reinterpret_cast(input_items[0]); //Get the input samples pointer DLOG(INFO) << "Channel: " << d_channel << " , doing acquisition of satellite: " << d_gnss_synchro->System << " " @@ -328,9 +329,9 @@ int pcps_assisted_acquisition_cc::compute_and_accumulate_grid(gr_vector_const_vo << ", doppler_step: " << d_doppler_step; // 2- Doppler frequency search loop - float *p_tmp_vector = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(float), volk_gnsssdr_get_alignment())); + auto *p_tmp_vector = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(float), volk_gnsssdr_get_alignment())); - for (int doppler_index = 0; doppler_index < d_num_doppler_points; doppler_index++) + for (int32_t doppler_index = 0; doppler_index < d_num_doppler_points; doppler_index++) { // doppler search steps // Perform the carrier wipe-off @@ -393,7 +394,7 @@ int pcps_assisted_acquisition_cc::general_work(int noutput_items, d_state = 2; break; case 2: // S2. ComputeGrid - int consumed_samples; + int32_t consumed_samples; consumed_samples = compute_and_accumulate_grid(input_items); d_well_count++; if (d_well_count >= d_max_dwells) diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.h index 70b73f715..d582821c6 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.h +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.h @@ -48,12 +48,12 @@ #ifndef GNSS_SDR_PCPS_ASSISTED_ACQUISITION_CC_H_ #define GNSS_SDR_PCPS_ASSISTED_ACQUISITION_CC_H_ +#include "gnss_synchro.h" +#include +#include +#include #include #include -#include -#include -#include -#include "gnss_synchro.h" class pcps_assisted_acquisition_cc; @@ -61,8 +61,13 @@ typedef boost::shared_ptr pcps_assisted_acquisition_cc_sptr; pcps_assisted_acquisition_cc_sptr -pcps_make_assisted_acquisition_cc(int max_dwells, unsigned int sampled_ms, - int doppler_max, int doppler_min, long fs_in, int samples_per_ms, +pcps_make_assisted_acquisition_cc( + int32_t max_dwells, + uint32_t sampled_ms, + int32_t doppler_max, + int32_t doppler_min, + int64_t fs_in, + int32_t samples_per_ms, bool dump, std::string dump_filename); /*! @@ -75,20 +80,20 @@ class pcps_assisted_acquisition_cc : public gr::block { private: friend pcps_assisted_acquisition_cc_sptr - pcps_make_assisted_acquisition_cc(int max_dwells, unsigned int sampled_ms, - int doppler_max, int doppler_min, long fs_in, - int samples_per_ms, bool dump, + pcps_make_assisted_acquisition_cc(int32_t max_dwells, uint32_t sampled_ms, + int32_t doppler_max, int32_t doppler_min, int64_t fs_in, + int32_t samples_per_ms, bool dump, std::string dump_filename); - pcps_assisted_acquisition_cc(int max_dwells, unsigned int sampled_ms, - int doppler_max, int doppler_min, long fs_in, - int samples_per_ms, bool dump, + pcps_assisted_acquisition_cc(int32_t max_dwells, uint32_t sampled_ms, + int32_t doppler_max, int32_t doppler_min, int64_t fs_in, + int32_t samples_per_ms, bool dump, std::string dump_filename); - void calculate_magnitudes(gr_complex* fft_begin, int doppler_shift, - int doppler_offset); + void calculate_magnitudes(gr_complex* fft_begin, int32_t doppler_shift, + int32_t doppler_offset); - int compute_and_accumulate_grid(gr_vector_const_void_star& input_items); + int32_t compute_and_accumulate_grid(gr_vector_const_void_star& input_items); float estimate_input_power(gr_vector_const_void_star& input_items); double search_maximum(); void get_assistance(); @@ -96,22 +101,22 @@ private: void redefine_grid(); void free_grid_memory(); - long d_fs_in; - int d_samples_per_ms; - int d_max_dwells; - unsigned int d_doppler_resolution; - int d_gnuradio_forecast_samples; + int64_t d_fs_in; + int32_t d_samples_per_ms; + int32_t d_max_dwells; + uint32_t d_doppler_resolution; + int32_t d_gnuradio_forecast_samples; float d_threshold; std::string d_satellite_str; - int d_doppler_max; - int d_doppler_min; - int d_config_doppler_max; - int d_config_doppler_min; + int32_t d_doppler_max; + int32_t d_doppler_min; + int32_t d_config_doppler_max; + int32_t d_config_doppler_min; - int d_num_doppler_points; - int d_doppler_step; - unsigned int d_sampled_ms; - unsigned int d_fft_size; + int32_t d_num_doppler_points; + int32_t d_doppler_step; + uint32_t d_sampled_ms; + uint32_t d_fft_size; uint64_t d_sample_counter; gr_complex* d_carrier; gr_complex* d_fft_codes; @@ -122,17 +127,17 @@ private: gr::fft::fft_complex* d_fft_if; gr::fft::fft_complex* d_ifft; Gnss_Synchro* d_gnss_synchro; - unsigned int d_code_phase; + uint32_t d_code_phase; float d_doppler_freq; float d_input_power; float d_test_statistics; std::ofstream d_dump_file; - int d_state; + int32_t d_state; bool d_active; bool d_disable_assist; - int d_well_count; + int32_t d_well_count; bool d_dump; - unsigned int d_channel; + uint32_t d_channel; std::string d_dump_filename; @@ -155,7 +160,7 @@ public: /*! * \brief Returns the maximum peak of grid search. */ - inline unsigned int mag() const + inline uint32_t mag() const { return d_test_statistics; } @@ -185,7 +190,7 @@ public: * \brief Set acquisition channel unique ID * \param channel - receiver channel. */ - inline void set_channel(unsigned int channel) + inline void set_channel(uint32_t channel) { d_channel = channel; } @@ -204,7 +209,7 @@ public: * \brief Set maximum Doppler grid search * \param doppler_max - Maximum Doppler shift considered in the grid search [Hz]. */ - inline void set_doppler_max(unsigned int doppler_max) + inline void set_doppler_max(uint32_t doppler_max) { d_doppler_max = doppler_max; } @@ -213,7 +218,7 @@ public: * \brief Set Doppler steps for the grid search * \param doppler_step - Frequency bin of the search grid [Hz]. */ - void set_doppler_step(unsigned int doppler_step); + void set_doppler_step(uint32_t doppler_step); /*! * \brief Parallel Code Phase Search Acquisition signal processing. diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc index 34228b89b..99841b5b6 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc @@ -35,32 +35,39 @@ */ #include "pcps_cccwsr_acquisition_cc.h" -#include +#include "GPS_L1_CA.h" // GPS_TWO_PI +#include "control_message_factory.h" #include #include #include #include -#include "control_message_factory.h" -#include "GPS_L1_CA.h" //GPS_TWO_PI - +#include +#include using google::LogMessage; pcps_cccwsr_acquisition_cc_sptr pcps_cccwsr_make_acquisition_cc( - unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, + uint32_t sampled_ms, + uint32_t max_dwells, + uint32_t doppler_max, + int64_t fs_in, + int32_t samples_per_ms, + int32_t samples_per_code, bool dump, std::string dump_filename) { return pcps_cccwsr_acquisition_cc_sptr( new pcps_cccwsr_acquisition_cc(sampled_ms, max_dwells, doppler_max, fs_in, - samples_per_ms, samples_per_code, dump, dump_filename)); + samples_per_ms, samples_per_code, dump, std::move(dump_filename))); } + pcps_cccwsr_acquisition_cc::pcps_cccwsr_acquisition_cc( - unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, + uint32_t sampled_ms, + uint32_t max_dwells, + uint32_t doppler_max, + int64_t fs_in, + int32_t samples_per_ms, + int32_t samples_per_code, bool dump, std::string dump_filename) : gr::block("pcps_cccwsr_acquisition_cc", gr::io_signature::make(1, 1, sizeof(gr_complex) * sampled_ms * samples_per_ms), @@ -98,13 +105,13 @@ pcps_cccwsr_acquisition_cc::pcps_cccwsr_acquisition_cc( // For dumping samples into a file d_dump = dump; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_doppler_resolution = 0; d_threshold = 0; d_doppler_step = 0; - d_grid_doppler_wipeoffs = 0; - d_gnss_synchro = 0; + d_grid_doppler_wipeoffs = nullptr; + d_gnss_synchro = nullptr; d_code_phase = 0; d_doppler_freq = 0; d_test_statistics = 0; @@ -115,7 +122,7 @@ pcps_cccwsr_acquisition_cc::~pcps_cccwsr_acquisition_cc() { if (d_num_doppler_bins > 0) { - for (unsigned int i = 0; i < d_num_doppler_bins; i++) + for (uint32_t i = 0; i < d_num_doppler_bins; i++) { volk_gnsssdr_free(d_grid_doppler_wipeoffs[i]); } @@ -174,8 +181,8 @@ void pcps_cccwsr_acquisition_cc::init() // Count the number of bins d_num_doppler_bins = 0; - for (int doppler = static_cast(-d_doppler_max); - doppler <= static_cast(d_doppler_max); + for (auto doppler = static_cast(-d_doppler_max); + doppler <= static_cast(d_doppler_max); doppler += d_doppler_step) { d_num_doppler_bins++; @@ -183,11 +190,11 @@ void pcps_cccwsr_acquisition_cc::init() // Create the carrier Doppler wipeoff signals d_grid_doppler_wipeoffs = new gr_complex *[d_num_doppler_bins]; - for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) + for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { d_grid_doppler_wipeoffs[doppler_index] = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(gr_complex), volk_gnsssdr_get_alignment())); - int doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; + int32_t doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; float phase_step_rad = GPS_TWO_PI * doppler / static_cast(d_fs_in); float _phase[1]; _phase[0] = 0; @@ -196,7 +203,7 @@ void pcps_cccwsr_acquisition_cc::init() } -void pcps_cccwsr_acquisition_cc::set_state(int state) +void pcps_cccwsr_acquisition_cc::set_state(int32_t state) { d_state = state; if (d_state == 1) @@ -224,7 +231,7 @@ int pcps_cccwsr_acquisition_cc::general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items __attribute__((unused))) { - int acquisition_message = -1; //0=STOP_CHANNEL 1=ACQ_SUCCEES 2=ACQ_FAIL + int32_t acquisition_message = -1; //0=STOP_CHANNEL 1=ACQ_SUCCEES 2=ACQ_FAIL switch (d_state) { @@ -253,7 +260,7 @@ int pcps_cccwsr_acquisition_cc::general_work(int noutput_items, case 1: { // initialize acquisition algorithm - int doppler; + int32_t doppler; uint32_t indext = 0; uint32_t indext_plus = 0; @@ -261,7 +268,7 @@ int pcps_cccwsr_acquisition_cc::general_work(int noutput_items, float magt = 0.0; float magt_plus = 0.0; float magt_minus = 0.0; - const gr_complex *in = reinterpret_cast(input_items[0]); //Get the input samples pointer + const auto *in = reinterpret_cast(input_items[0]); //Get the input samples pointer float fft_normalization_factor = static_cast(d_fft_size) * static_cast(d_fft_size); d_sample_counter += static_cast(d_fft_size); // sample counter @@ -280,11 +287,11 @@ int pcps_cccwsr_acquisition_cc::general_work(int noutput_items, d_input_power /= static_cast(d_fft_size); // 2- Doppler frequency search loop - for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) + for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { // doppler search steps - doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; + doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; volk_32fc_x2_multiply_32fc(d_fft_if->get_inbuf(), in, d_grid_doppler_wipeoffs[doppler_index], d_fft_size); @@ -319,7 +326,7 @@ int pcps_cccwsr_acquisition_cc::general_work(int noutput_items, // d_data_correlation. memcpy(d_pilot_correlation, d_ifft->get_outbuf(), sizeof(gr_complex) * d_fft_size); - for (unsigned int i = 0; i < d_fft_size; i++) + for (uint32_t i = 0; i < d_fft_size; i++) { d_correlation_plus[i] = std::complex( d_data_correlation[i].real() - d_pilot_correlation[i].imag(), diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.h index 00348daa9..85050cc21 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.h +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.h @@ -37,12 +37,12 @@ #ifndef GNSS_SDR_PCPS_CCCWSR_ACQUISITION_CC_H_ #define GNSS_SDR_PCPS_CCCWSR_ACQUISITION_CC_H_ +#include "gnss_synchro.h" +#include +#include +#include #include #include -#include -#include -#include -#include "gnss_synchro.h" class pcps_cccwsr_acquisition_cc; @@ -50,10 +50,15 @@ class pcps_cccwsr_acquisition_cc; typedef boost::shared_ptr pcps_cccwsr_acquisition_cc_sptr; pcps_cccwsr_acquisition_cc_sptr -pcps_cccwsr_make_acquisition_cc(unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, - bool dump, std::string dump_filename); +pcps_cccwsr_make_acquisition_cc( + uint32_t sampled_ms, + uint32_t max_dwells, + uint32_t doppler_max, + int64_t fs_in, + int32_t samples_per_ms, + int32_t samples_per_code, + bool dump, + std::string dump_filename); /*! * \brief This class implements a Parallel Code Phase Search Acquisition with @@ -63,40 +68,40 @@ class pcps_cccwsr_acquisition_cc : public gr::block { private: friend pcps_cccwsr_acquisition_cc_sptr - pcps_cccwsr_make_acquisition_cc(unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, + pcps_cccwsr_make_acquisition_cc(uint32_t sampled_ms, uint32_t max_dwells, + uint32_t doppler_max, int64_t fs_in, + int32_t samples_per_ms, int32_t samples_per_code, bool dump, std::string dump_filename); - pcps_cccwsr_acquisition_cc(unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, + pcps_cccwsr_acquisition_cc(uint32_t sampled_ms, uint32_t max_dwells, + uint32_t doppler_max, int64_t fs_in, + int32_t samples_per_ms, int32_t samples_per_code, bool dump, std::string dump_filename); - void calculate_magnitudes(gr_complex* fft_begin, int doppler_shift, - int doppler_offset); + void calculate_magnitudes(gr_complex* fft_begin, int32_t doppler_shift, + int32_t doppler_offset); - long d_fs_in; - int d_samples_per_ms; - int d_samples_per_code; - unsigned int d_doppler_resolution; + int64_t d_fs_in; + int32_t d_samples_per_ms; + int32_t d_samples_per_code; + uint32_t d_doppler_resolution; float d_threshold; std::string d_satellite_str; - unsigned int d_doppler_max; - unsigned int d_doppler_step; - unsigned int d_sampled_ms; - unsigned int d_max_dwells; - unsigned int d_well_count; - unsigned int d_fft_size; + uint32_t d_doppler_max; + uint32_t d_doppler_step; + uint32_t d_sampled_ms; + uint32_t d_max_dwells; + uint32_t d_well_count; + uint32_t d_fft_size; uint64_t d_sample_counter; gr_complex** d_grid_doppler_wipeoffs; - unsigned int d_num_doppler_bins; + uint32_t d_num_doppler_bins; gr_complex* d_fft_code_data; gr_complex* d_fft_code_pilot; gr::fft::fft_complex* d_fft_if; gr::fft::fft_complex* d_ifft; Gnss_Synchro* d_gnss_synchro; - unsigned int d_code_phase; + uint32_t d_code_phase; float d_doppler_freq; float d_mag; float* d_magnitude; @@ -108,9 +113,9 @@ private: float d_test_statistics; std::ofstream d_dump_file; bool d_active; - int d_state; + int32_t d_state; bool d_dump; - unsigned int d_channel; + uint32_t d_channel; std::string d_dump_filename; public: @@ -132,7 +137,7 @@ public: /*! * \brief Returns the maximum peak of grid search. */ - inline unsigned int mag() const + inline uint32_t mag() const { return d_mag; } @@ -164,13 +169,13 @@ public: * first available sample. * \param state - int=1 forces start of acquisition */ - void set_state(int state); + void set_state(int32_t state); /*! * \brief Set acquisition channel unique ID * \param channel - receiver channel. */ - inline void set_channel(unsigned int channel) + inline void set_channel(uint32_t channel) { d_channel = channel; } @@ -189,7 +194,7 @@ public: * \brief Set maximum Doppler grid search * \param doppler_max - Maximum Doppler shift considered in the grid search [Hz]. */ - inline void set_doppler_max(unsigned int doppler_max) + inline void set_doppler_max(uint32_t doppler_max) { d_doppler_max = doppler_max; } @@ -198,7 +203,7 @@ public: * \brief Set Doppler steps for the grid search * \param doppler_step - Frequency bin of the search grid [Hz]. */ - inline void set_doppler_step(unsigned int doppler_step) + inline void set_doppler_step(uint32_t doppler_step) { d_doppler_step = doppler_step; } diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc index aa8bceffb..0944b9ed8 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc @@ -49,10 +49,10 @@ */ #include "pcps_opencl_acquisition_cc.h" +#include "GPS_L1_CA.h" //GPS_TWO_PI #include "control_message_factory.h" #include "opencl/fft_base_kernels.h" #include "opencl/fft_internal.h" -#include "GPS_L1_CA.h" //GPS_TWO_PI #include #include #include @@ -61,13 +61,14 @@ #include #include #include +#include using google::LogMessage; pcps_opencl_acquisition_cc_sptr pcps_make_opencl_acquisition_cc( - unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, + uint32_t sampled_ms, uint32_t max_dwells, + uint32_t doppler_max, int64_t fs_in, int samples_per_ms, int samples_per_code, bool bit_transition_flag, bool dump, @@ -75,15 +76,15 @@ pcps_opencl_acquisition_cc_sptr pcps_make_opencl_acquisition_cc( { return pcps_opencl_acquisition_cc_sptr( new pcps_opencl_acquisition_cc(sampled_ms, max_dwells, doppler_max, fs_in, samples_per_ms, - samples_per_code, bit_transition_flag, dump, dump_filename)); + samples_per_code, bit_transition_flag, dump, std::move(dump_filename))); } pcps_opencl_acquisition_cc::pcps_opencl_acquisition_cc( - unsigned int sampled_ms, - unsigned int max_dwells, - unsigned int doppler_max, - long fs_in, + uint32_t sampled_ms, + uint32_t max_dwells, + uint32_t doppler_max, + int64_t fs_in, int samples_per_ms, int samples_per_code, bool bit_transition_flag, @@ -114,7 +115,7 @@ pcps_opencl_acquisition_cc::pcps_opencl_acquisition_cc( d_cl_fft_batch_size = 1; d_in_buffer = new gr_complex *[d_max_dwells]; - for (unsigned int i = 0; i < d_max_dwells; i++) + for (uint32_t i = 0; i < d_max_dwells; i++) { d_in_buffer[i] = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(gr_complex), volk_gnsssdr_get_alignment())); } @@ -122,7 +123,7 @@ pcps_opencl_acquisition_cc::pcps_opencl_acquisition_cc( d_fft_codes = static_cast(volk_gnsssdr_malloc(d_fft_size_pow2 * sizeof(gr_complex), volk_gnsssdr_get_alignment())); d_zero_vector = static_cast(volk_gnsssdr_malloc((d_fft_size_pow2 - d_fft_size) * sizeof(gr_complex), volk_gnsssdr_get_alignment())); - for (unsigned int i = 0; i < (d_fft_size_pow2 - d_fft_size); i++) + for (uint32_t i = 0; i < (d_fft_size_pow2 - d_fft_size); i++) { d_zero_vector[i] = gr_complex(0.0, 0.0); } @@ -140,7 +141,7 @@ pcps_opencl_acquisition_cc::pcps_opencl_acquisition_cc( // For dumping samples into a file d_dump = dump; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); } @@ -148,14 +149,14 @@ pcps_opencl_acquisition_cc::~pcps_opencl_acquisition_cc() { if (d_num_doppler_bins > 0) { - for (unsigned int i = 0; i < d_num_doppler_bins; i++) + for (uint32_t i = 0; i < d_num_doppler_bins; i++) { volk_gnsssdr_free(d_grid_doppler_wipeoffs[i]); } delete[] d_grid_doppler_wipeoffs; } - for (unsigned int i = 0; i < d_max_dwells; i++) + for (uint32_t i = 0; i < d_max_dwells; i++) { volk_gnsssdr_free(d_in_buffer[i]); } @@ -193,7 +194,7 @@ pcps_opencl_acquisition_cc::~pcps_opencl_acquisition_cc() } -int pcps_opencl_acquisition_cc::init_opencl_environment(std::string kernel_filename) +int pcps_opencl_acquisition_cc::init_opencl_environment(const std::string &kernel_filename) { //get all platforms (drivers) std::vector all_platforms; @@ -313,7 +314,7 @@ void pcps_opencl_acquisition_cc::init() d_cl_buffer_grid_doppler_wipeoffs = new cl::Buffer *[d_num_doppler_bins]; } - for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) + for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { d_grid_doppler_wipeoffs[doppler_index] = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(gr_complex), volk_gnsssdr_get_alignment())); @@ -359,7 +360,7 @@ void pcps_opencl_acquisition_cc::set_local_code(std::complex *code) clFFT_ExecuteInterleaved((*d_cl_queue)(), d_cl_fft_plan, d_cl_fft_batch_size, clFFT_Forward, (*d_cl_buffer_2)(), (*d_cl_buffer_2)(), - 0, NULL, NULL); + 0, nullptr, nullptr); //Conjucate the local code cl::Kernel kernel = cl::Kernel(d_cl_program, "conj_vector"); @@ -406,7 +407,7 @@ void pcps_opencl_acquisition_cc::acquisition_core_volk() d_input_power /= static_cast(d_fft_size); // 2- Doppler frequency search loop - for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) + for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { // doppler search steps doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; @@ -542,7 +543,7 @@ void pcps_opencl_acquisition_cc::acquisition_core_opencl() cl::Kernel kernel; // 2- Doppler frequency search loop - for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) + for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { // doppler search steps @@ -562,7 +563,7 @@ void pcps_opencl_acquisition_cc::acquisition_core_opencl() clFFT_ExecuteInterleaved((*d_cl_queue)(), d_cl_fft_plan, d_cl_fft_batch_size, clFFT_Forward, (*d_cl_buffer_1)(), (*d_cl_buffer_2)(), - 0, NULL, NULL); + 0, nullptr, nullptr); // Multiply carrier wiped--off, Fourier transformed incoming signal // with the local FFT'd code reference @@ -576,7 +577,7 @@ void pcps_opencl_acquisition_cc::acquisition_core_opencl() // compute the inverse FFT clFFT_ExecuteInterleaved((*d_cl_queue)(), d_cl_fft_plan, d_cl_fft_batch_size, clFFT_Inverse, (*d_cl_buffer_2)(), (*d_cl_buffer_2)(), - 0, NULL, NULL); + 0, nullptr, nullptr); // Compute magnitude kernel = cl::Kernel(d_cl_program, "magnitude_squared"); @@ -735,8 +736,8 @@ int pcps_opencl_acquisition_cc::general_work(int noutput_items, // Fill internal buffer with d_max_dwells signal blocks. This step ensures that // consecutive signal blocks will be processed in multi-dwell operation. This is // essential when d_bit_transition_flag = true. - unsigned int num_dwells = std::min(static_cast(d_max_dwells - d_in_dwell_count), ninput_items[0]); - for (unsigned int i = 0; i < num_dwells; i++) + uint32_t num_dwells = std::min(static_cast(d_max_dwells - d_in_dwell_count), ninput_items[0]); + for (uint32_t i = 0; i < num_dwells; i++) { memcpy(d_in_buffer[d_in_dwell_count++], static_cast(input_items[i]), sizeof(gr_complex) * d_fft_size); diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.h index df6947f47..20b53d082 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.h +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.h @@ -54,8 +54,9 @@ #include "gnss_synchro.h" #include "opencl/fft_internal.h" #include -#include #include +#include +#include #include #include #include @@ -71,8 +72,8 @@ class pcps_opencl_acquisition_cc; typedef boost::shared_ptr pcps_opencl_acquisition_cc_sptr; pcps_opencl_acquisition_cc_sptr -pcps_make_opencl_acquisition_cc(unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, +pcps_make_opencl_acquisition_cc(uint32_t sampled_ms, uint32_t max_dwells, + uint32_t doppler_max, int64_t fs_in, int samples_per_ms, int samples_per_code, bool bit_transition_flag, bool dump, @@ -88,15 +89,15 @@ class pcps_opencl_acquisition_cc : public gr::block { private: friend pcps_opencl_acquisition_cc_sptr - pcps_make_opencl_acquisition_cc(unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, + pcps_make_opencl_acquisition_cc(uint32_t sampled_ms, uint32_t max_dwells, + uint32_t doppler_max, int64_t fs_in, int samples_per_ms, int samples_per_code, bool bit_transition_flag, bool dump, std::string dump_filename); - pcps_opencl_acquisition_cc(unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, + pcps_opencl_acquisition_cc(uint32_t sampled_ms, uint32_t max_dwells, + uint32_t doppler_max, int64_t fs_in, int samples_per_ms, int samples_per_code, bool bit_transition_flag, bool dump, @@ -105,30 +106,30 @@ private: void calculate_magnitudes(gr_complex* fft_begin, int doppler_shift, int doppler_offset); - int init_opencl_environment(std::string kernel_filename); + int init_opencl_environment(const std::string& kernel_filename); - long d_fs_in; + int64_t d_fs_in; int d_samples_per_ms; int d_samples_per_code; - unsigned int d_doppler_resolution; + uint32_t d_doppler_resolution; float d_threshold; std::string d_satellite_str; - unsigned int d_doppler_max; - unsigned int d_doppler_step; - unsigned int d_sampled_ms; - unsigned int d_max_dwells; - unsigned int d_well_count; - unsigned int d_fft_size; - unsigned int d_fft_size_pow2; + uint32_t d_doppler_max; + uint32_t d_doppler_step; + uint32_t d_sampled_ms; + uint32_t d_max_dwells; + uint32_t d_well_count; + uint32_t d_fft_size; + uint32_t d_fft_size_pow2; int* d_max_doppler_indexs; uint64_t d_sample_counter; gr_complex** d_grid_doppler_wipeoffs; - unsigned int d_num_doppler_bins; + uint32_t d_num_doppler_bins; gr_complex* d_fft_codes; gr::fft::fft_complex* d_fft_if; gr::fft::fft_complex* d_ifft; Gnss_Synchro* d_gnss_synchro; - unsigned int d_code_phase; + uint32_t d_code_phase; float d_doppler_freq; float d_mag; float* d_magnitude; @@ -140,12 +141,12 @@ private: int d_state; bool d_core_working; bool d_dump; - unsigned int d_channel; + uint32_t d_channel; std::string d_dump_filename; gr_complex* d_zero_vector; gr_complex** d_in_buffer; std::vector d_sample_counter_buffer; - unsigned int d_in_dwell_count; + uint32_t d_in_dwell_count; cl::Platform d_cl_platform; cl::Device d_cl_device; @@ -182,7 +183,7 @@ public: /*! * \brief Returns the maximum peak of grid search. */ - inline unsigned int mag() const + inline uint32_t mag() const { return d_mag; } @@ -219,7 +220,7 @@ public: * \brief Set acquisition channel unique ID * \param channel - receiver channel. */ - inline void set_channel(unsigned int channel) + inline void set_channel(uint32_t channel) { d_channel = channel; } @@ -238,7 +239,7 @@ public: * \brief Set maximum Doppler grid search * \param doppler_max - Maximum Doppler shift considered in the grid search [Hz]. */ - inline void set_doppler_max(unsigned int doppler_max) + inline void set_doppler_max(uint32_t doppler_max) { d_doppler_max = doppler_max; } @@ -247,7 +248,7 @@ public: * \brief Set Doppler steps for the grid search * \param doppler_step - Frequency bin of the search grid [Hz]. */ - inline void set_doppler_step(unsigned int doppler_step) + inline void set_doppler_step(uint32_t doppler_step) { d_doppler_step = doppler_step; } diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc index 06a91dccb..11c13a979 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc @@ -29,23 +29,27 @@ */ #include "pcps_quicksync_acquisition_cc.h" -#include "control_message_factory.h" #include "GPS_L1_CA.h" -#include +#include "control_message_factory.h" #include +#include #include #include #include #include +#include using google::LogMessage; pcps_quicksync_acquisition_cc_sptr pcps_quicksync_make_acquisition_cc( - unsigned int folding_factor, - unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, + uint32_t folding_factor, + uint32_t sampled_ms, + uint32_t max_dwells, + uint32_t doppler_max, + int64_t fs_in, + int32_t samples_per_ms, + int32_t samples_per_code, bool bit_transition_flag, bool dump, std::string dump_filename) @@ -57,15 +61,15 @@ pcps_quicksync_acquisition_cc_sptr pcps_quicksync_make_acquisition_cc( fs_in, samples_per_ms, samples_per_code, bit_transition_flag, - dump, dump_filename)); + dump, std::move(dump_filename))); } pcps_quicksync_acquisition_cc::pcps_quicksync_acquisition_cc( - unsigned int folding_factor, - unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, + uint32_t folding_factor, + uint32_t sampled_ms, uint32_t max_dwells, + uint32_t doppler_max, int64_t fs_in, + int32_t samples_per_ms, int32_t samples_per_code, bool bit_transition_flag, bool dump, std::string dump_filename) : gr::block("pcps_quicksync_acquisition_cc", @@ -96,7 +100,7 @@ pcps_quicksync_acquisition_cc::pcps_quicksync_acquisition_cc( d_magnitude = static_cast(volk_gnsssdr_malloc(d_samples_per_code * d_folding_factor * sizeof(float), volk_gnsssdr_get_alignment())); d_magnitude_folded = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(float), volk_gnsssdr_get_alignment())); - d_possible_delay = new unsigned int[d_folding_factor]; + d_possible_delay = new uint32_t[d_folding_factor]; d_corr_output_f = new float[d_folding_factor]; /*Create the d_code signal , which would store the values of the code in its @@ -110,18 +114,18 @@ pcps_quicksync_acquisition_cc::pcps_quicksync_acquisition_cc( // For dumping samples into a file d_dump = dump; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); - d_corr_acumulator = 0; - d_signal_folded = 0; + d_corr_acumulator = nullptr; + d_signal_folded = nullptr; d_code_folded = new gr_complex[d_fft_size](); d_noise_floor_power = 0; d_doppler_resolution = 0; d_threshold = 0; d_doppler_step = 0; - d_grid_doppler_wipeoffs = 0; - d_fft_if2 = 0; - d_gnss_synchro = 0; + d_grid_doppler_wipeoffs = nullptr; + d_fft_if2 = nullptr; + d_gnss_synchro = nullptr; d_code_phase = 0; d_doppler_freq = 0; d_test_statistics = 0; @@ -137,7 +141,7 @@ pcps_quicksync_acquisition_cc::~pcps_quicksync_acquisition_cc() //DLOG(INFO) << "START DESTROYER"; if (d_num_doppler_bins > 0) { - for (unsigned int i = 0; i < d_num_doppler_bins; i++) + for (uint32_t i = 0; i < d_num_doppler_bins; i++) { volk_gnsssdr_free(d_grid_doppler_wipeoffs[i]); } @@ -175,7 +179,7 @@ void pcps_quicksync_acquisition_cc::set_local_code(std::complex* code) /*perform folding of the code by the factorial factor parameter. Notice that folding of the code in the time stage would result in a downsampled spectrum in the frequency domain after applying the fftw operation*/ - for (unsigned int i = 0; i < d_folding_factor; i++) + for (uint32_t i = 0; i < d_folding_factor; i++) { std::transform((code + i * d_fft_size), (code + ((i + 1) * d_fft_size)), d_fft_if->get_inbuf(), d_fft_if->get_inbuf(), @@ -208,8 +212,8 @@ void pcps_quicksync_acquisition_cc::init() // Count the number of bins d_num_doppler_bins = 0; - for (int doppler = static_cast(-d_doppler_max); - doppler <= static_cast(d_doppler_max); + for (auto doppler = static_cast(-d_doppler_max); + doppler <= static_cast(d_doppler_max); doppler += d_doppler_step) { d_num_doppler_bins++; @@ -217,10 +221,10 @@ void pcps_quicksync_acquisition_cc::init() // Create the carrier Doppler wipeoff signals d_grid_doppler_wipeoffs = new gr_complex*[d_num_doppler_bins]; - for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) + for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { d_grid_doppler_wipeoffs[doppler_index] = static_cast(volk_gnsssdr_malloc(d_samples_per_code * d_folding_factor * sizeof(gr_complex), volk_gnsssdr_get_alignment())); - int doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; + int32_t doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; float phase_step_rad = GPS_TWO_PI * doppler / static_cast(d_fs_in); float _phase[1]; _phase[0] = 0; @@ -230,7 +234,7 @@ void pcps_quicksync_acquisition_cc::init() } -void pcps_quicksync_acquisition_cc::set_state(int state) +void pcps_quicksync_acquisition_cc::set_state(int32_t state) { d_state = state; if (d_state == 1) @@ -243,7 +247,7 @@ void pcps_quicksync_acquisition_cc::set_state(int state) d_mag = 0.0; d_input_power = 0.0; d_test_statistics = 0.0; - d_active = 1; + d_active = true; } else if (d_state == 0) { @@ -269,7 +273,7 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items, * 6. Declare positive or negative acquisition using a message queue */ //DLOG(INFO) << "START GENERAL WORK"; - int acquisition_message = -1; //0=STOP_CHANNEL 1=ACQ_SUCCEES 2=ACQ_FAIL + int32_t acquisition_message = -1; //0=STOP_CHANNEL 1=ACQ_SUCCEES 2=ACQ_FAIL //std::cout<<"general_work in quicksync gnuradio block"<(input_items[0]); //Get the input samples pointer + const auto* in = reinterpret_cast(input_items[0]); //Get the input samples pointer - gr_complex* in_temp = static_cast(volk_gnsssdr_malloc(d_samples_per_code * d_folding_factor * sizeof(gr_complex), volk_gnsssdr_get_alignment())); - gr_complex* in_temp_folded = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(gr_complex), volk_gnsssdr_get_alignment())); + auto* in_temp = static_cast(volk_gnsssdr_malloc(d_samples_per_code * d_folding_factor * sizeof(gr_complex), volk_gnsssdr_get_alignment())); + auto* in_temp_folded = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(gr_complex), volk_gnsssdr_get_alignment())); /*Create a signal to store a signal of size 1ms, to perform correlation in time. No folding on this data is required*/ - gr_complex* in_1code = static_cast(volk_gnsssdr_malloc(d_samples_per_code * sizeof(gr_complex), volk_gnsssdr_get_alignment())); + auto* in_1code = static_cast(volk_gnsssdr_malloc(d_samples_per_code * sizeof(gr_complex), volk_gnsssdr_get_alignment())); /*Stores the values of the correlation output between the local code and the signal with doppler shift corrected */ - gr_complex* corr_output = static_cast(volk_gnsssdr_malloc(d_samples_per_code * sizeof(gr_complex), volk_gnsssdr_get_alignment())); + auto* corr_output = static_cast(volk_gnsssdr_malloc(d_samples_per_code * sizeof(gr_complex), volk_gnsssdr_get_alignment())); /*Stores a copy of the folded version of the signal.This is used for the FFT operations in future steps of execution*/ @@ -348,7 +352,7 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items, volk_32f_accumulator_s32f(&d_input_power, d_magnitude, d_samples_per_code * d_folding_factor); d_input_power /= static_cast(d_samples_per_code * d_folding_factor); - for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) + for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { /*Ensure that the signal is going to start with all samples at zero. This is done to avoid over acumulation when performing @@ -359,7 +363,7 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items, /*Doppler search steps and then multiplication of the incoming signal with the doppler wipeoffs to eliminate frequency offset */ - doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; + doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; /*Perform multiplication of the incoming signal with the complex exponential vector. This removes the frequency doppler @@ -371,7 +375,7 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items, /*Perform folding of the carrier wiped-off incoming signal. Since superlinear method is being used the folding factor in the incoming raw data signal is of d_folding_factor^2*/ - for (int i = 0; i < static_cast(d_folding_factor * d_folding_factor); i++) + for (int32_t i = 0; i < static_cast(d_folding_factor * d_folding_factor); i++) { std::transform((in_temp + i * d_fft_size), (in_temp + ((i + 1) * d_fft_size)), @@ -422,17 +426,17 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items, restarted between consecutive dwells in multidwell operation.*/ if (d_test_statistics < (d_mag / d_input_power) || !d_bit_transition_flag) { - unsigned int detected_delay_samples_folded = 0; + uint32_t detected_delay_samples_folded = 0; detected_delay_samples_folded = (indext % d_samples_per_code); gr_complex complex_acumulator[100]; //gr_complex complex_acumulator[d_folding_factor]; - for (int i = 0; i < static_cast(d_folding_factor); i++) + for (int32_t i = 0; i < static_cast(d_folding_factor); i++) { d_possible_delay[i] = detected_delay_samples_folded + (i)*d_fft_size; } - for (int i = 0; i < static_cast(d_folding_factor); i++) + for (int32_t i = 0; i < static_cast(d_folding_factor); i++) { /*Copy a signal of 1 code length into suggested buffer. The copied signal must have doppler effect corrected*/ @@ -446,7 +450,7 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items, of a shift*/ volk_32fc_x2_multiply_32fc(corr_output, in_1code, d_code, d_samples_per_code); - for (int j = 0; j < d_samples_per_code; j++) + for (int32_t j = 0; j < d_samples_per_code; j++) { complex_acumulator[i] += (corr_output[j]); } @@ -531,7 +535,7 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items, DLOG(INFO) << "test statistics threshold " << d_threshold; DLOG(INFO) << "folding factor " << d_folding_factor; DLOG(INFO) << "possible delay correlation output"; - for (int i = 0; i < static_cast(d_folding_factor); i++) DLOG(INFO) << d_possible_delay[i] << "\t\t\t" << d_corr_output_f[i]; + for (int32_t i = 0; i < static_cast(d_folding_factor); i++) DLOG(INFO) << d_possible_delay[i] << "\t\t\t" << d_corr_output_f[i]; DLOG(INFO) << "code phase " << d_gnss_synchro->Acq_delay_samples; DLOG(INFO) << "doppler " << d_gnss_synchro->Acq_doppler_hz; DLOG(INFO) << "magnitude folded " << d_mag; @@ -560,7 +564,7 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items, DLOG(INFO) << "test statistics threshold " << d_threshold; DLOG(INFO) << "folding factor " << d_folding_factor; DLOG(INFO) << "possible delay corr output"; - for (int i = 0; i < static_cast(d_folding_factor); i++) DLOG(INFO) << d_possible_delay[i] << "\t\t\t" << d_corr_output_f[i]; + for (int32_t i = 0; i < static_cast(d_folding_factor); i++) DLOG(INFO) << d_possible_delay[i] << "\t\t\t" << d_corr_output_f[i]; DLOG(INFO) << "code phase " << d_gnss_synchro->Acq_delay_samples; DLOG(INFO) << "doppler " << d_gnss_synchro->Acq_doppler_hz; DLOG(INFO) << "magnitude folded " << d_mag; diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.h index 56f363dbf..1e8e07a05 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.h +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.h @@ -53,13 +53,13 @@ #include "gnss_synchro.h" #include -#include #include -#include -#include +#include #include -#include #include +#include +#include +#include class pcps_quicksync_acquisition_cc; @@ -67,10 +67,14 @@ typedef boost::shared_ptr pcps_quicksync_acquisition_cc_sptr; pcps_quicksync_acquisition_cc_sptr -pcps_quicksync_make_acquisition_cc(unsigned int folding_factor, - unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, +pcps_quicksync_make_acquisition_cc( + uint32_t folding_factor, + uint32_t sampled_ms, + uint32_t max_dwells, + uint32_t doppler_max, + int64_t fs_in, + int32_t samples_per_ms, + int32_t samples_per_code, bool bit_transition_flag, bool dump, std::string dump_filename); @@ -86,56 +90,56 @@ class pcps_quicksync_acquisition_cc : public gr::block { private: friend pcps_quicksync_acquisition_cc_sptr - pcps_quicksync_make_acquisition_cc(unsigned int folding_factor, - unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, + pcps_quicksync_make_acquisition_cc(uint32_t folding_factor, + uint32_t sampled_ms, uint32_t max_dwells, + uint32_t doppler_max, int64_t fs_in, + int32_t samples_per_ms, int32_t samples_per_code, bool bit_transition_flag, bool dump, std::string dump_filename); - pcps_quicksync_acquisition_cc(unsigned int folding_factor, - unsigned int sampled_ms, unsigned int max_dwells, - unsigned int doppler_max, long fs_in, - int samples_per_ms, int samples_per_code, + pcps_quicksync_acquisition_cc(uint32_t folding_factor, + uint32_t sampled_ms, uint32_t max_dwells, + uint32_t doppler_max, int64_t fs_in, + int32_t samples_per_ms, int32_t samples_per_code, bool bit_transition_flag, bool dump, std::string dump_filename); - void calculate_magnitudes(gr_complex* fft_begin, int doppler_shift, - int doppler_offset); + void calculate_magnitudes(gr_complex* fft_begin, int32_t doppler_shift, + int32_t doppler_offset); gr_complex* d_code; - unsigned int d_folding_factor; // also referred in the paper as 'p' + uint32_t d_folding_factor; // also referred in the paper as 'p' float* d_corr_acumulator; - unsigned int* d_possible_delay; + uint32_t* d_possible_delay; float* d_corr_output_f; float* d_magnitude_folded; gr_complex* d_signal_folded; gr_complex* d_code_folded; float d_noise_floor_power; - long d_fs_in; - int d_samples_per_ms; - int d_samples_per_code; - unsigned int d_doppler_resolution; + int64_t d_fs_in; + int32_t d_samples_per_ms; + int32_t d_samples_per_code; + uint32_t d_doppler_resolution; float d_threshold; std::string d_satellite_str; - unsigned int d_doppler_max; - unsigned int d_doppler_step; - unsigned int d_sampled_ms; - unsigned int d_max_dwells; - unsigned int d_well_count; - unsigned int d_fft_size; + uint32_t d_doppler_max; + uint32_t d_doppler_step; + uint32_t d_sampled_ms; + uint32_t d_max_dwells; + uint32_t d_well_count; + uint32_t d_fft_size; uint64_t d_sample_counter; gr_complex** d_grid_doppler_wipeoffs; - unsigned int d_num_doppler_bins; + uint32_t d_num_doppler_bins; gr_complex* d_fft_codes; gr::fft::fft_complex* d_fft_if; gr::fft::fft_complex* d_fft_if2; gr::fft::fft_complex* d_ifft; Gnss_Synchro* d_gnss_synchro; - unsigned int d_code_phase; + uint32_t d_code_phase; float d_doppler_freq; float d_mag; float* d_magnitude; @@ -144,9 +148,9 @@ private: bool d_bit_transition_flag; std::ofstream d_dump_file; bool d_active; - int d_state; + int32_t d_state; bool d_dump; - unsigned int d_channel; + uint32_t d_channel; std::string d_dump_filename; public: @@ -168,7 +172,7 @@ public: /*! * \brief Returns the maximum peak of grid search. */ - inline unsigned int mag() const + inline uint32_t mag() const { return d_mag; } @@ -199,13 +203,13 @@ public: * first available sample. * \param state - int=1 forces start of acquisition */ - void set_state(int state); + void set_state(int32_t state); /*! * \brief Set acquisition channel unique ID * \param channel - receiver channel. */ - inline void set_channel(unsigned int channel) + inline void set_channel(uint32_t channel) { d_channel = channel; } @@ -224,7 +228,7 @@ public: * \brief Set maximum Doppler grid search * \param doppler_max - Maximum Doppler shift considered in the grid search [Hz]. */ - inline void set_doppler_max(unsigned int doppler_max) + inline void set_doppler_max(uint32_t doppler_max) { d_doppler_max = doppler_max; } @@ -233,7 +237,7 @@ public: * \brief Set Doppler steps for the grid search * \param doppler_step - Frequency bin of the search grid [Hz]. */ - inline void set_doppler_step(unsigned int doppler_step) + inline void set_doppler_step(uint32_t doppler_step) { d_doppler_step = doppler_step; } diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc index 77a714de4..dced14810 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc @@ -49,33 +49,42 @@ */ #include "pcps_tong_acquisition_cc.h" -#include "control_message_factory.h" #include "GPS_L1_CA.h" // for GPS_TWO_PI +#include "control_message_factory.h" #include #include #include #include #include +#include using google::LogMessage; pcps_tong_acquisition_cc_sptr pcps_tong_make_acquisition_cc( - unsigned int sampled_ms, unsigned int doppler_max, - long fs_in, int samples_per_ms, - int samples_per_code, unsigned int tong_init_val, - unsigned int tong_max_val, unsigned int tong_max_dwells, + uint32_t sampled_ms, + uint32_t doppler_max, + int64_t fs_in, + int32_t samples_per_ms, + int32_t samples_per_code, + uint32_t tong_init_val, + uint32_t tong_max_val, + uint32_t tong_max_dwells, bool dump, std::string dump_filename) { return pcps_tong_acquisition_cc_sptr( new pcps_tong_acquisition_cc(sampled_ms, doppler_max, fs_in, samples_per_ms, samples_per_code, - tong_init_val, tong_max_val, tong_max_dwells, dump, dump_filename)); + tong_init_val, tong_max_val, tong_max_dwells, dump, std::move(dump_filename))); } pcps_tong_acquisition_cc::pcps_tong_acquisition_cc( - unsigned int sampled_ms, unsigned int doppler_max, - long fs_in, int samples_per_ms, - int samples_per_code, unsigned int tong_init_val, - unsigned int tong_max_val, unsigned int tong_max_dwells, + uint32_t sampled_ms, + uint32_t doppler_max, + int64_t fs_in, + int32_t samples_per_ms, + int32_t samples_per_code, + uint32_t tong_init_val, + uint32_t tong_max_val, + uint32_t tong_max_dwells, bool dump, std::string dump_filename) : gr::block("pcps_tong_acquisition_cc", gr::io_signature::make(1, 1, sizeof(gr_complex) * sampled_ms * samples_per_ms), @@ -111,14 +120,14 @@ pcps_tong_acquisition_cc::pcps_tong_acquisition_cc( // For dumping samples into a file d_dump = dump; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_doppler_resolution = 0; d_threshold = 0; d_doppler_step = 0; - d_grid_data = 0; - d_grid_doppler_wipeoffs = 0; - d_gnss_synchro = 0; + d_grid_data = nullptr; + d_grid_doppler_wipeoffs = nullptr; + d_gnss_synchro = nullptr; d_code_phase = 0; d_doppler_freq = 0; d_test_statistics = 0; @@ -129,7 +138,7 @@ pcps_tong_acquisition_cc::~pcps_tong_acquisition_cc() { if (d_num_doppler_bins > 0) { - for (unsigned int i = 0; i < d_num_doppler_bins; i++) + for (uint32_t i = 0; i < d_num_doppler_bins; i++) { volk_gnsssdr_free(d_grid_doppler_wipeoffs[i]); volk_gnsssdr_free(d_grid_data[i]); @@ -175,8 +184,8 @@ void pcps_tong_acquisition_cc::init() // Count the number of bins d_num_doppler_bins = 0; - for (int doppler = static_cast(-d_doppler_max); - doppler <= static_cast(d_doppler_max); + for (auto doppler = static_cast(-d_doppler_max); + doppler <= static_cast(d_doppler_max); doppler += d_doppler_step) { d_num_doppler_bins++; @@ -185,11 +194,11 @@ void pcps_tong_acquisition_cc::init() // Create the carrier Doppler wipeoff signals and allocate data grid. d_grid_doppler_wipeoffs = new gr_complex *[d_num_doppler_bins]; d_grid_data = new float *[d_num_doppler_bins]; - for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) + for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { d_grid_doppler_wipeoffs[doppler_index] = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(gr_complex), volk_gnsssdr_get_alignment())); - int doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; + int32_t doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; float phase_step_rad = GPS_TWO_PI * doppler / static_cast(d_fs_in); float _phase[1]; _phase[0] = 0; @@ -197,14 +206,14 @@ void pcps_tong_acquisition_cc::init() d_grid_data[doppler_index] = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(float), volk_gnsssdr_get_alignment())); - for (unsigned int i = 0; i < d_fft_size; i++) + for (uint32_t i = 0; i < d_fft_size; i++) { d_grid_data[doppler_index][i] = 0; } } } -void pcps_tong_acquisition_cc::set_state(int state) +void pcps_tong_acquisition_cc::set_state(int32_t state) { d_state = state; if (d_state == 1) @@ -219,9 +228,9 @@ void pcps_tong_acquisition_cc::set_state(int state) d_input_power = 0.0; d_test_statistics = 0.0; - for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) + for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { - for (unsigned int i = 0; i < d_fft_size; i++) + for (uint32_t i = 0; i < d_fft_size; i++) { d_grid_data[doppler_index][i] = 0; } @@ -240,7 +249,7 @@ int pcps_tong_acquisition_cc::general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items __attribute__((unused))) { - int acquisition_message = -1; //0=STOP_CHANNEL 1=ACQ_SUCCEES 2=ACQ_FAIL + int32_t acquisition_message = -1; //0=STOP_CHANNEL 1=ACQ_SUCCEES 2=ACQ_FAIL switch (d_state) { @@ -259,9 +268,9 @@ int pcps_tong_acquisition_cc::general_work(int noutput_items, d_input_power = 0.0; d_test_statistics = 0.0; - for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) + for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { - for (unsigned int i = 0; i < d_fft_size; i++) + for (uint32_t i = 0; i < d_fft_size; i++) { d_grid_data[doppler_index][i] = 0; } @@ -279,10 +288,10 @@ int pcps_tong_acquisition_cc::general_work(int noutput_items, case 1: { // initialize acquisition algorithm - int doppler; + int32_t doppler; uint32_t indext = 0; float magt = 0.0; - const gr_complex *in = reinterpret_cast(input_items[0]); //Get the input samples pointer + const auto *in = reinterpret_cast(input_items[0]); //Get the input samples pointer float fft_normalization_factor = static_cast(d_fft_size) * static_cast(d_fft_size); d_input_power = 0.0; d_mag = 0.0; @@ -303,11 +312,11 @@ int pcps_tong_acquisition_cc::general_work(int noutput_items, d_input_power /= static_cast(d_fft_size); // 2- Doppler frequency search loop - for (unsigned int doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) + for (uint32_t doppler_index = 0; doppler_index < d_num_doppler_bins; doppler_index++) { // doppler search steps - doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; + doppler = -static_cast(d_doppler_max) + d_doppler_step * doppler_index; volk_32fc_x2_multiply_32fc(d_fft_if->get_inbuf(), in, d_grid_doppler_wipeoffs[doppler_index], d_fft_size); diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.h index 7508fb42c..f4cb31068 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.h +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.h @@ -53,8 +53,8 @@ #include "gnss_synchro.h" #include -#include #include +#include #include #include @@ -64,11 +64,17 @@ class pcps_tong_acquisition_cc; typedef boost::shared_ptr pcps_tong_acquisition_cc_sptr; pcps_tong_acquisition_cc_sptr -pcps_tong_make_acquisition_cc(unsigned int sampled_ms, unsigned int doppler_max, - long fs_in, int samples_per_ms, - int samples_per_code, unsigned int tong_init_val, - unsigned int tong_max_val, unsigned int tong_max_dwells, - bool dump, std::string dump_filename); +pcps_tong_make_acquisition_cc( + uint32_t sampled_ms, + uint32_t doppler_max, + int64_t fs_in, + int32_t samples_per_ms, + int32_t samples_per_code, + uint32_t tong_init_val, + uint32_t tong_max_val, + uint32_t tong_max_dwells, + bool dump, + std::string dump_filename); /*! * \brief This class implements a Parallel Code Phase Search Acquisition with @@ -78,45 +84,45 @@ class pcps_tong_acquisition_cc : public gr::block { private: friend pcps_tong_acquisition_cc_sptr - pcps_tong_make_acquisition_cc(unsigned int sampled_ms, unsigned int doppler_max, - long fs_in, int samples_per_ms, - int samples_per_code, unsigned int tong_init_val, - unsigned int tong_max_val, unsigned int tong_max_dwells, + pcps_tong_make_acquisition_cc(uint32_t sampled_ms, uint32_t doppler_max, + int64_t fs_in, int32_t samples_per_ms, + int32_t samples_per_code, uint32_t tong_init_val, + uint32_t tong_max_val, uint32_t tong_max_dwells, bool dump, std::string dump_filename); - pcps_tong_acquisition_cc(unsigned int sampled_ms, unsigned int doppler_max, - long fs_in, int samples_per_ms, - int samples_per_code, unsigned int tong_init_val, - unsigned int tong_max_val, unsigned int tong_max_dwells, + pcps_tong_acquisition_cc(uint32_t sampled_ms, uint32_t doppler_max, + int64_t fs_in, int32_t samples_per_ms, + int32_t samples_per_code, uint32_t tong_init_val, + uint32_t tong_max_val, uint32_t tong_max_dwells, bool dump, std::string dump_filename); - void calculate_magnitudes(gr_complex* fft_begin, int doppler_shift, - int doppler_offset); + void calculate_magnitudes(gr_complex* fft_begin, int32_t doppler_shift, + int32_t doppler_offset); - long d_fs_in; - int d_samples_per_ms; - int d_samples_per_code; - unsigned int d_doppler_resolution; + int64_t d_fs_in; + int32_t d_samples_per_ms; + int32_t d_samples_per_code; + uint32_t d_doppler_resolution; float d_threshold; std::string d_satellite_str; - unsigned int d_doppler_max; - unsigned int d_doppler_step; - unsigned int d_sampled_ms; - unsigned int d_dwell_count; - unsigned int d_tong_count; - unsigned int d_tong_init_val; - unsigned int d_tong_max_val; - unsigned int d_tong_max_dwells; - unsigned int d_fft_size; + uint32_t d_doppler_max; + uint32_t d_doppler_step; + uint32_t d_sampled_ms; + uint32_t d_dwell_count; + uint32_t d_tong_count; + uint32_t d_tong_init_val; + uint32_t d_tong_max_val; + uint32_t d_tong_max_dwells; + uint32_t d_fft_size; uint64_t d_sample_counter; gr_complex** d_grid_doppler_wipeoffs; - unsigned int d_num_doppler_bins; + uint32_t d_num_doppler_bins; gr_complex* d_fft_codes; float** d_grid_data; gr::fft::fft_complex* d_fft_if; gr::fft::fft_complex* d_ifft; Gnss_Synchro* d_gnss_synchro; - unsigned int d_code_phase; + uint32_t d_code_phase; float d_doppler_freq; float d_mag; float* d_magnitude; @@ -124,9 +130,9 @@ private: float d_test_statistics; std::ofstream d_dump_file; bool d_active; - int d_state; + int32_t d_state; bool d_dump; - unsigned int d_channel; + uint32_t d_channel; std::string d_dump_filename; public: @@ -148,7 +154,7 @@ public: /*! * \brief Returns the maximum peak of grid search. */ - inline unsigned int mag() const + inline uint32_t mag() const { return d_mag; } @@ -179,13 +185,13 @@ public: * first available sample. * \param state - int=1 forces start of acquisition */ - void set_state(int state); + void set_state(int32_t state); /*! * \brief Set acquisition channel unique ID * \param channel - receiver channel. */ - inline void set_channel(unsigned int channel) + inline void set_channel(uint32_t channel) { d_channel = channel; } @@ -204,7 +210,7 @@ public: * \brief Set maximum Doppler grid search * \param doppler_max - Maximum Doppler shift considered in the grid search [Hz]. */ - inline void set_doppler_max(unsigned int doppler_max) + inline void set_doppler_max(uint32_t doppler_max) { d_doppler_max = doppler_max; } @@ -213,7 +219,7 @@ public: * \brief Set Doppler steps for the grid search * \param doppler_step - Frequency bin of the search grid [Hz]. */ - inline void set_doppler_step(unsigned int doppler_step) + inline void set_doppler_step(uint32_t doppler_step) { d_doppler_step = doppler_step; } diff --git a/src/algorithms/acquisition/libs/acq_conf.cc b/src/algorithms/acquisition/libs/acq_conf.cc index e98bf3bdf..8e8d48d5e 100644 --- a/src/algorithms/acquisition/libs/acq_conf.cc +++ b/src/algorithms/acquisition/libs/acq_conf.cc @@ -53,4 +53,8 @@ Acq_Conf::Acq_Conf() dump_channel = 0U; it_size = sizeof(char); blocking_on_standby = false; + use_automatic_resampler = false; + resampler_ratio = 1.0; + resampled_fs = 0LL; + resampler_latency_samples = 0U; } diff --git a/src/algorithms/acquisition/libs/acq_conf.h b/src/algorithms/acquisition/libs/acq_conf.h index 445fab878..af81d8806 100644 --- a/src/algorithms/acquisition/libs/acq_conf.h +++ b/src/algorithms/acquisition/libs/acq_conf.h @@ -56,6 +56,10 @@ public: bool blocking; bool blocking_on_standby; // enable it only for unit testing to avoid sample consume on idle status bool make_2_steps; + bool use_automatic_resampler; + float resampler_ratio; + int64_t resampled_fs; + uint32_t resampler_latency_samples; std::string dump_filename; uint32_t dump_channel; size_t it_size; diff --git a/src/algorithms/acquisition/libs/fpga_acquisition.cc b/src/algorithms/acquisition/libs/fpga_acquisition.cc index 57e2a6ba2..5618d072b 100644 --- a/src/algorithms/acquisition/libs/fpga_acquisition.cc +++ b/src/algorithms/acquisition/libs/fpga_acquisition.cc @@ -37,9 +37,10 @@ #include "GPS_L1_CA.h" #include "gps_sdr_signal_processing.h" #include +#include // libraries used by the GIPO #include -#include // libraries used by the GIPO #include // libraries used by the GIPO +#include #define PAGE_SIZE 0x10000 // default page size for the multicorrelator memory map @@ -102,7 +103,7 @@ fpga_acquisition::fpga_acquisition(std::string device_name, //printf("AAA- vector_length = %d\n ", vector_length); // initial values - d_device_name = device_name; + d_device_name = std::move(device_name); //d_freq = freq; d_fs_in = fs_in; d_vector_length = vector_length; @@ -121,7 +122,7 @@ fpga_acquisition::fpga_acquisition(std::string device_name, LOG(WARNING) << "Cannot open deviceio" << d_device_name; std::cout << "Acq: cannot open deviceio" << d_device_name << std::endl; } - d_map_base = reinterpret_cast(mmap(NULL, PAGE_SIZE, + d_map_base = reinterpret_cast(mmap(nullptr, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, d_fd, 0)); if (d_map_base == reinterpret_cast(-1)) @@ -234,7 +235,7 @@ void fpga_acquisition::set_doppler_sweep(uint32_t num_sweeps) float phase_step_rad_int_temp; int32_t phase_step_rad_int; //int32_t doppler = static_cast(-d_doppler_max) + d_doppler_step * doppler_index; - int32_t doppler = static_cast(-d_doppler_max); + auto doppler = static_cast(-d_doppler_max); //float phase_step_rad = GPS_TWO_PI * (d_freq + doppler) / static_cast(d_fs_in); float phase_step_rad = GPS_TWO_PI * (doppler) / static_cast(d_fs_in); // The doppler step can never be outside the range -pi to +pi, otherwise there would be aliasing @@ -408,7 +409,7 @@ void fpga_acquisition::unblock_samples() void fpga_acquisition::close_device() { - uint32_t *aux = const_cast(d_map_base); + auto *aux = const_cast(d_map_base); if (munmap(static_cast(aux), PAGE_SIZE) == -1) { printf("Failed to unmap memory uio\n"); diff --git a/src/algorithms/channel/adapters/channel.cc b/src/algorithms/channel/adapters/channel.cc index 8e4a3120d..946f17a65 100644 --- a/src/algorithms/channel/adapters/channel.cc +++ b/src/algorithms/channel/adapters/channel.cc @@ -32,26 +32,23 @@ #include "channel.h" #include "configuration_interface.h" #include "gnss_sdr_flags.h" -#include #include #include using google::LogMessage; // Constructor -Channel::Channel(ConfigurationInterface* configuration, uint32_t channel, - std::shared_ptr pass_through, std::shared_ptr acq, +Channel::Channel(ConfigurationInterface* configuration, uint32_t channel, std::shared_ptr acq, std::shared_ptr trk, std::shared_ptr nav, std::string role, std::string implementation, gr::msg_queue::sptr queue) { - pass_through_ = pass_through; - acq_ = acq; - trk_ = trk; - nav_ = nav; - role_ = role; - implementation_ = implementation; + acq_ = std::move(acq); + trk_ = std::move(trk); + nav_ = std::move(nav); + role_ = std::move(role); + implementation_ = std::move(implementation); channel_ = channel; - queue_ = queue; + queue_ = std::move(queue); channel_fsm_ = std::make_shared(); flag_enable_fpga = configuration->property("Channel.enable_FPGA", false); @@ -59,6 +56,7 @@ Channel::Channel(ConfigurationInterface* configuration, uint32_t channel, trk_->set_channel(channel_); nav_->set_channel(channel_); + gnss_synchro_ = Gnss_Synchro(); gnss_synchro_.Channel_ID = channel_; acq_->set_gnss_synchro(&gnss_synchro_); trk_->set_gnss_synchro(&gnss_synchro_); @@ -76,21 +74,21 @@ Channel::Channel(ConfigurationInterface* configuration, uint32_t channel, // IMPORTANT: Do not change the order between set_doppler_step and set_threshold - uint32_t doppler_step = configuration->property("Acquisition_" + implementation_ + boost::lexical_cast(channel_) + ".doppler_step", 0); + uint32_t doppler_step = configuration->property("Acquisition_" + implementation_ + std::to_string(channel_) + ".doppler_step", 0); if (doppler_step == 0) doppler_step = configuration->property("Acquisition_" + implementation_ + ".doppler_step", 500); if (FLAGS_doppler_step != 0) doppler_step = static_cast(FLAGS_doppler_step); DLOG(INFO) << "Channel " << channel_ << " Doppler_step = " << doppler_step; acq_->set_doppler_step(doppler_step); - float threshold = configuration->property("Acquisition_" + implementation_ + boost::lexical_cast(channel_) + ".threshold", 0.0); + float threshold = configuration->property("Acquisition_" + implementation_ + std::to_string(channel_) + ".threshold", 0.0); if (threshold == 0.0) threshold = configuration->property("Acquisition_" + implementation_ + ".threshold", 0.0); acq_->set_threshold(threshold); acq_->init(); - repeat_ = configuration->property("Acquisition_" + implementation_ + boost::lexical_cast(channel_) + ".repeat_satellite", false); + repeat_ = configuration->property("Acquisition_" + implementation_ + std::to_string(channel_) + ".repeat_satellite", false); DLOG(INFO) << "Channel " << channel_ << " satellite repeat = " << repeat_; channel_fsm_->set_acquisition(acq_); @@ -107,35 +105,20 @@ Channel::Channel(ConfigurationInterface* configuration, uint32_t channel, // Destructor -Channel::~Channel() {} +Channel::~Channel() = default; + + void Channel::connect(gr::top_block_sptr top_block) { - if (connected_) - { - LOG(WARNING) << "channel already connected internally"; - return; - } - if (flag_enable_fpga == false) - { - pass_through_->connect(top_block); - } acq_->connect(top_block); trk_->connect(top_block); nav_->connect(top_block); //Synchronous ports - if (flag_enable_fpga == false) - { - top_block->connect(pass_through_->get_right_block(), 0, acq_->get_left_block(), 0); - DLOG(INFO) << "pass_through_ -> acquisition"; - top_block->connect(pass_through_->get_right_block(), 0, trk_->get_left_block(), 0); - DLOG(INFO) << "pass_through_ -> tracking"; - } top_block->connect(trk_->get_right_block(), 0, nav_->get_left_block(), 0); DLOG(INFO) << "tracking -> telemetry_decoder"; // Message ports - top_block->msg_connect(acq_->get_right_block(), pmt::mp("events"), channel_msg_rx, pmt::mp("events")); top_block->msg_connect(trk_->get_right_block(), pmt::mp("events"), channel_msg_rx, pmt::mp("events")); @@ -151,17 +134,8 @@ void Channel::disconnect(gr::top_block_sptr top_block) return; } - if (flag_enable_fpga == false) - { - top_block->disconnect(pass_through_->get_right_block(), 0, acq_->get_left_block(), 0); - top_block->disconnect(pass_through_->get_right_block(), 0, trk_->get_left_block(), 0); - } top_block->disconnect(trk_->get_right_block(), 0, nav_->get_left_block(), 0); - if (flag_enable_fpga == false) - { - pass_through_->disconnect(top_block); - } acq_->disconnect(top_block); trk_->disconnect(top_block); nav_->disconnect(top_block); @@ -171,9 +145,19 @@ void Channel::disconnect(gr::top_block_sptr top_block) gr::basic_block_sptr Channel::get_left_block() { - return pass_through_->get_left_block(); + LOG(ERROR) << "Deprecated call to get_left_block() in channel interface"; + return nullptr; } +gr::basic_block_sptr Channel::get_left_block_trk() +{ + return trk_->get_left_block(); +} + +gr::basic_block_sptr Channel::get_left_block_acq() +{ + return acq_->get_left_block(); +} gr::basic_block_sptr Channel::get_right_block() { diff --git a/src/algorithms/channel/adapters/channel.h b/src/algorithms/channel/adapters/channel.h index 3802ff107..9eda9e474 100644 --- a/src/algorithms/channel/adapters/channel.h +++ b/src/algorithms/channel/adapters/channel.h @@ -35,15 +35,15 @@ #ifndef GNSS_SDR_CHANNEL_H_ #define GNSS_SDR_CHANNEL_H_ -#include "channel_interface.h" #include "channel_fsm.h" -#include "gnss_synchro.h" +#include "channel_interface.h" #include "channel_msg_receiver_cc.h" -#include +#include "gnss_synchro.h" #include +#include #include -#include #include +#include class ConfigurationInterface; class AcquisitionInterface; @@ -60,16 +60,17 @@ class Channel : public ChannelInterface { public: //! Constructor - Channel(ConfigurationInterface* configuration, uint32_t channel, - std::shared_ptr pass_through, std::shared_ptr acq, + Channel(ConfigurationInterface* configuration, uint32_t channel, std::shared_ptr acq, std::shared_ptr trk, std::shared_ptr nav, std::string role, std::string implementation, gr::msg_queue::sptr queue); //! Virtual destructor virtual ~Channel(); - void connect(gr::top_block_sptr top_block) override; + void connect(gr::top_block_sptr top_block) override; //!< connects the tracking block to the top_block and to the telemetry void disconnect(gr::top_block_sptr top_block) override; - gr::basic_block_sptr get_left_block() override; + gr::basic_block_sptr get_left_block() override; //!< gets the gnuradio tracking block pointer + gr::basic_block_sptr get_left_block_trk() override; //!< gets the gnuradio tracking block pointer + gr::basic_block_sptr get_left_block_acq() override; //!< gets the gnuradio tracking block pointer gr::basic_block_sptr get_right_block() override; inline std::string role() override { return role_; } @@ -88,7 +89,6 @@ public: private: channel_msg_receiver_cc_sptr channel_msg_rx; - std::shared_ptr pass_through_; std::shared_ptr acq_; std::shared_ptr trk_; std::shared_ptr nav_; diff --git a/src/algorithms/channel/libs/channel_fsm.cc b/src/algorithms/channel/libs/channel_fsm.cc index 14a4e6b12..968ea2393 100644 --- a/src/algorithms/channel/libs/channel_fsm.cc +++ b/src/algorithms/channel/libs/channel_fsm.cc @@ -44,7 +44,7 @@ ChannelFsm::ChannelFsm() } -ChannelFsm::ChannelFsm(std::shared_ptr acquisition) : acq_(acquisition) +ChannelFsm::ChannelFsm(std::shared_ptr acquisition) : acq_(std::move(acquisition)) { trk_ = nullptr; channel_ = 0U; @@ -81,13 +81,10 @@ bool ChannelFsm::Event_start_acquisition() { return false; } - else - { - d_state = 1; - start_acquisition(); - DLOG(INFO) << "CH = " << channel_ << ". Ev start acquisition"; - return true; - } + d_state = 1; + start_acquisition(); + DLOG(INFO) << "CH = " << channel_ << ". Ev start acquisition"; + return true; } @@ -98,13 +95,10 @@ bool ChannelFsm::Event_valid_acquisition() { return false; } - else - { - d_state = 2; - start_tracking(); - DLOG(INFO) << "CH = " << channel_ << ". Ev valid acquisition"; - return true; - } + d_state = 2; + start_tracking(); + DLOG(INFO) << "CH = " << channel_ << ". Ev valid acquisition"; + return true; } @@ -115,13 +109,10 @@ bool ChannelFsm::Event_failed_acquisition_repeat() { return false; } - else - { - d_state = 1; - start_acquisition(); - DLOG(INFO) << "CH = " << channel_ << ". Ev failed acquisition repeat"; - return true; - } + d_state = 1; + start_acquisition(); + DLOG(INFO) << "CH = " << channel_ << ". Ev failed acquisition repeat"; + return true; } @@ -132,13 +123,10 @@ bool ChannelFsm::Event_failed_acquisition_no_repeat() { return false; } - else - { - d_state = 3; - request_satellite(); - DLOG(INFO) << "CH = " << channel_ << ". Ev failed acquisition no repeat"; - return true; - } + d_state = 3; + request_satellite(); + DLOG(INFO) << "CH = " << channel_ << ". Ev failed acquisition no repeat"; + return true; } @@ -149,34 +137,31 @@ bool ChannelFsm::Event_failed_tracking_standby() { return false; } - else - { - d_state = 0U; - notify_stop_tracking(); - DLOG(INFO) << "CH = " << channel_ << ". Ev failed tracking standby"; - return true; - } + d_state = 0U; + notify_stop_tracking(); + DLOG(INFO) << "CH = " << channel_ << ". Ev failed tracking standby"; + return true; } void ChannelFsm::set_acquisition(std::shared_ptr acquisition) { std::lock_guard lk(mx); - acq_ = acquisition; + acq_ = std::move(acquisition); } void ChannelFsm::set_tracking(std::shared_ptr tracking) { std::lock_guard lk(mx); - trk_ = tracking; + trk_ = std::move(tracking); } void ChannelFsm::set_queue(gr::msg_queue::sptr queue) { std::lock_guard lk(mx); - queue_ = queue; + queue_ = std::move(queue); } diff --git a/src/algorithms/channel/libs/channel_fsm.h b/src/algorithms/channel/libs/channel_fsm.h index c2ee6c728..2ecc6eb20 100644 --- a/src/algorithms/channel/libs/channel_fsm.h +++ b/src/algorithms/channel/libs/channel_fsm.h @@ -33,8 +33,8 @@ #define GNSS_SDR_CHANNEL_FSM_H #include "acquisition_interface.h" -#include "tracking_interface.h" #include "telemetry_decoder_interface.h" +#include "tracking_interface.h" #include #include #include diff --git a/src/algorithms/channel/libs/channel_msg_receiver_cc.cc b/src/algorithms/channel/libs/channel_msg_receiver_cc.cc index f77f8c883..82333e6a7 100644 --- a/src/algorithms/channel/libs/channel_msg_receiver_cc.cc +++ b/src/algorithms/channel/libs/channel_msg_receiver_cc.cc @@ -30,9 +30,9 @@ #include "channel_msg_receiver_cc.h" +#include #include #include -#include #include using google::LogMessage; @@ -40,7 +40,7 @@ using google::LogMessage; channel_msg_receiver_cc_sptr channel_msg_receiver_make_cc(std::shared_ptr channel_fsm, bool repeat) { - return channel_msg_receiver_cc_sptr(new channel_msg_receiver_cc(channel_fsm, repeat)); + return channel_msg_receiver_cc_sptr(new channel_msg_receiver_cc(std::move(channel_fsm), repeat)); } @@ -49,7 +49,7 @@ void channel_msg_receiver_cc::msg_handler_events(pmt::pmt_t msg) bool result = false; try { - int64_t message = pmt::to_long(msg); + int64_t message = pmt::to_long(std::move(msg)); switch (message) { case 1: // positive acquisition @@ -89,9 +89,9 @@ channel_msg_receiver_cc::channel_msg_receiver_cc(std::shared_ptr cha this->message_port_register_in(pmt::mp("events")); this->set_msg_handler(pmt::mp("events"), boost::bind(&channel_msg_receiver_cc::msg_handler_events, this, _1)); - d_channel_fsm = channel_fsm; + d_channel_fsm = std::move(channel_fsm); d_repeat = repeat; } -channel_msg_receiver_cc::~channel_msg_receiver_cc() {} +channel_msg_receiver_cc::~channel_msg_receiver_cc() = default; diff --git a/src/algorithms/conditioner/adapters/array_signal_conditioner.cc b/src/algorithms/conditioner/adapters/array_signal_conditioner.cc index 098a9e365..55970c4d7 100644 --- a/src/algorithms/conditioner/adapters/array_signal_conditioner.cc +++ b/src/algorithms/conditioner/adapters/array_signal_conditioner.cc @@ -31,6 +31,7 @@ #include "array_signal_conditioner.h" #include +#include using google::LogMessage; @@ -41,11 +42,11 @@ ArraySignalConditioner::ArraySignalConditioner(ConfigurationInterface *configura std::shared_ptr in_filt, std::shared_ptr res, std::string role, - std::string implementation) : data_type_adapt_(data_type_adapt), - in_filt_(in_filt), - res_(res), - role_(role), - implementation_(implementation) + std::string implementation) : data_type_adapt_(std::move(data_type_adapt)), + in_filt_(std::move(in_filt)), + res_(std::move(res)), + role_(std::move(role)), + implementation_(std::move(implementation)) { connected_ = false; if (configuration) @@ -55,7 +56,7 @@ ArraySignalConditioner::ArraySignalConditioner(ConfigurationInterface *configura // Destructor -ArraySignalConditioner::~ArraySignalConditioner() {} +ArraySignalConditioner::~ArraySignalConditioner() = default; void ArraySignalConditioner::connect(gr::top_block_sptr top_block) diff --git a/src/algorithms/conditioner/adapters/array_signal_conditioner.h b/src/algorithms/conditioner/adapters/array_signal_conditioner.h index d3f1c9382..76809be53 100644 --- a/src/algorithms/conditioner/adapters/array_signal_conditioner.h +++ b/src/algorithms/conditioner/adapters/array_signal_conditioner.h @@ -33,9 +33,9 @@ #define GNSS_SDR_ARRAY_SIGNAL_CONDITIONER_H_ -#include -#include #include "gnss_block_interface.h" +#include +#include class ConfigurationInterface; diff --git a/src/algorithms/conditioner/adapters/signal_conditioner.cc b/src/algorithms/conditioner/adapters/signal_conditioner.cc index 72034c375..e55ba9e1a 100644 --- a/src/algorithms/conditioner/adapters/signal_conditioner.cc +++ b/src/algorithms/conditioner/adapters/signal_conditioner.cc @@ -31,6 +31,7 @@ #include "signal_conditioner.h" #include +#include using google::LogMessage; @@ -41,11 +42,11 @@ SignalConditioner::SignalConditioner(ConfigurationInterface *configuration, std::shared_ptr in_filt, std::shared_ptr res, std::string role, - std::string implementation) : data_type_adapt_(data_type_adapt), - in_filt_(in_filt), - res_(res), - role_(role), - implementation_(implementation) + std::string implementation) : data_type_adapt_(std::move(data_type_adapt)), + in_filt_(std::move(in_filt)), + res_(std::move(res)), + role_(std::move(role)), + implementation_(std::move(implementation)) { connected_ = false; if (configuration) @@ -55,7 +56,7 @@ SignalConditioner::SignalConditioner(ConfigurationInterface *configuration, // Destructor -SignalConditioner::~SignalConditioner() {} +SignalConditioner::~SignalConditioner() = default; void SignalConditioner::connect(gr::top_block_sptr top_block) diff --git a/src/algorithms/data_type_adapter/adapters/byte_to_short.cc b/src/algorithms/data_type_adapter/adapters/byte_to_short.cc index 7323d617a..b89fec1ed 100644 --- a/src/algorithms/data_type_adapter/adapters/byte_to_short.cc +++ b/src/algorithms/data_type_adapter/adapters/byte_to_short.cc @@ -31,12 +31,14 @@ #include "byte_to_short.h" #include "configuration_interface.h" #include +#include +#include using google::LogMessage; ByteToShort::ByteToShort(ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : config_(configuration), role_(role), in_streams_(in_streams), out_streams_(out_streams) + unsigned int in_streams, unsigned int out_streams) : config_(configuration), role_(std::move(role)), in_streams_(in_streams), out_streams_(out_streams) { std::string default_input_item_type = "byte"; std::string default_output_item_type = "short"; @@ -49,7 +51,7 @@ ByteToShort::ByteToShort(ConfigurationInterface* configuration, std::string role dump_ = config_->property(role_ + ".dump", false); dump_filename_ = config_->property(role_ + ".dump_filename", default_dump_filename); - size_t item_size = sizeof(short); + size_t item_size = sizeof(int16_t); gr_char_to_short_ = gr::blocks::char_to_short::make(); @@ -71,9 +73,7 @@ ByteToShort::ByteToShort(ConfigurationInterface* configuration, std::string role } -ByteToShort::~ByteToShort() -{ -} +ByteToShort::~ByteToShort() = default; void ByteToShort::connect(gr::top_block_sptr top_block) diff --git a/src/algorithms/data_type_adapter/adapters/ibyte_to_cbyte.cc b/src/algorithms/data_type_adapter/adapters/ibyte_to_cbyte.cc index a34befbd0..5cfbd4186 100644 --- a/src/algorithms/data_type_adapter/adapters/ibyte_to_cbyte.cc +++ b/src/algorithms/data_type_adapter/adapters/ibyte_to_cbyte.cc @@ -36,7 +36,7 @@ using google::LogMessage; -IbyteToCbyte::IbyteToCbyte(ConfigurationInterface* configuration, std::string role, +IbyteToCbyte::IbyteToCbyte(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : config_(configuration), role_(role), in_streams_(in_streams), out_streams_(out_streams) { std::string default_input_item_type = "byte"; @@ -77,9 +77,7 @@ IbyteToCbyte::IbyteToCbyte(ConfigurationInterface* configuration, std::string ro } -IbyteToCbyte::~IbyteToCbyte() -{ -} +IbyteToCbyte::~IbyteToCbyte() = default; void IbyteToCbyte::connect(gr::top_block_sptr top_block) @@ -146,8 +144,5 @@ gr::basic_block_sptr IbyteToCbyte::get_right_block() { return conjugate_ic_; } - else - { - return ibyte_to_cbyte_; - } + return ibyte_to_cbyte_; } diff --git a/src/algorithms/data_type_adapter/adapters/ibyte_to_cbyte.h b/src/algorithms/data_type_adapter/adapters/ibyte_to_cbyte.h index 7f0b83483..3fb202a1a 100644 --- a/src/algorithms/data_type_adapter/adapters/ibyte_to_cbyte.h +++ b/src/algorithms/data_type_adapter/adapters/ibyte_to_cbyte.h @@ -48,7 +48,7 @@ class IbyteToCbyte : public GNSSBlockInterface { public: IbyteToCbyte(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, unsigned int in_streams, unsigned int out_streams); virtual ~IbyteToCbyte(); diff --git a/src/algorithms/data_type_adapter/adapters/ibyte_to_complex.cc b/src/algorithms/data_type_adapter/adapters/ibyte_to_complex.cc index 0592e8802..cd8c14850 100644 --- a/src/algorithms/data_type_adapter/adapters/ibyte_to_complex.cc +++ b/src/algorithms/data_type_adapter/adapters/ibyte_to_complex.cc @@ -34,7 +34,7 @@ using google::LogMessage; -IbyteToComplex::IbyteToComplex(ConfigurationInterface* configuration, std::string role, +IbyteToComplex::IbyteToComplex(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : config_(configuration), role_(role), in_streams_(in_streams), out_streams_(out_streams) { std::string default_input_item_type = "byte"; @@ -75,9 +75,7 @@ IbyteToComplex::IbyteToComplex(ConfigurationInterface* configuration, std::strin } -IbyteToComplex::~IbyteToComplex() -{ -} +IbyteToComplex::~IbyteToComplex() = default; void IbyteToComplex::connect(gr::top_block_sptr top_block) @@ -144,8 +142,5 @@ gr::basic_block_sptr IbyteToComplex::get_right_block() { return conjugate_cc_; } - else - { - return gr_interleaved_char_to_complex_; - } + return gr_interleaved_char_to_complex_; } diff --git a/src/algorithms/data_type_adapter/adapters/ibyte_to_complex.h b/src/algorithms/data_type_adapter/adapters/ibyte_to_complex.h index c768e4b46..9271689bc 100644 --- a/src/algorithms/data_type_adapter/adapters/ibyte_to_complex.h +++ b/src/algorithms/data_type_adapter/adapters/ibyte_to_complex.h @@ -34,8 +34,8 @@ #include "conjugate_cc.h" #include "gnss_block_interface.h" #include "gnss_synchro.h" -#include #include +#include #include class ConfigurationInterface; @@ -48,7 +48,7 @@ class IbyteToComplex : public GNSSBlockInterface { public: IbyteToComplex(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, unsigned int in_streams, unsigned int out_streams); virtual ~IbyteToComplex(); diff --git a/src/algorithms/data_type_adapter/adapters/ibyte_to_cshort.cc b/src/algorithms/data_type_adapter/adapters/ibyte_to_cshort.cc index c965abb92..f4c8b6207 100644 --- a/src/algorithms/data_type_adapter/adapters/ibyte_to_cshort.cc +++ b/src/algorithms/data_type_adapter/adapters/ibyte_to_cshort.cc @@ -37,7 +37,7 @@ using google::LogMessage; -IbyteToCshort::IbyteToCshort(ConfigurationInterface* configuration, std::string role, +IbyteToCshort::IbyteToCshort(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : config_(configuration), role_(role), in_streams_(in_streams), out_streams_(out_streams) { std::string default_input_item_type = "byte"; @@ -78,9 +78,7 @@ IbyteToCshort::IbyteToCshort(ConfigurationInterface* configuration, std::string } -IbyteToCshort::~IbyteToCshort() -{ -} +IbyteToCshort::~IbyteToCshort() = default; void IbyteToCshort::connect(gr::top_block_sptr top_block) @@ -143,8 +141,5 @@ gr::basic_block_sptr IbyteToCshort::get_right_block() { return conjugate_sc_; } - else - { - return interleaved_byte_to_complex_short_; - } + return interleaved_byte_to_complex_short_; } diff --git a/src/algorithms/data_type_adapter/adapters/ibyte_to_cshort.h b/src/algorithms/data_type_adapter/adapters/ibyte_to_cshort.h index cc94b866f..9e7c5b74b 100644 --- a/src/algorithms/data_type_adapter/adapters/ibyte_to_cshort.h +++ b/src/algorithms/data_type_adapter/adapters/ibyte_to_cshort.h @@ -32,8 +32,8 @@ #define GNSS_SDR_IBYTE_TO_CSHORT_H_ #include "conjugate_sc.h" -#include "interleaved_byte_to_complex_short.h" #include "gnss_block_interface.h" +#include "interleaved_byte_to_complex_short.h" #include #include @@ -48,7 +48,7 @@ class IbyteToCshort : public GNSSBlockInterface { public: IbyteToCshort(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, unsigned int in_streams, unsigned int out_streams); virtual ~IbyteToCshort(); diff --git a/src/algorithms/data_type_adapter/adapters/ishort_to_complex.cc b/src/algorithms/data_type_adapter/adapters/ishort_to_complex.cc index 31fa7eb48..918dbd8a3 100644 --- a/src/algorithms/data_type_adapter/adapters/ishort_to_complex.cc +++ b/src/algorithms/data_type_adapter/adapters/ishort_to_complex.cc @@ -34,7 +34,7 @@ using google::LogMessage; -IshortToComplex::IshortToComplex(ConfigurationInterface* configuration, std::string role, +IshortToComplex::IshortToComplex(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : config_(configuration), role_(role), in_streams_(in_streams), out_streams_(out_streams) { std::string default_input_item_type = "short"; @@ -75,9 +75,7 @@ IshortToComplex::IshortToComplex(ConfigurationInterface* configuration, std::str } -IshortToComplex::~IshortToComplex() -{ -} +IshortToComplex::~IshortToComplex() = default; void IshortToComplex::connect(gr::top_block_sptr top_block) @@ -144,8 +142,5 @@ gr::basic_block_sptr IshortToComplex::get_right_block() { return conjugate_cc_; } - else - { - return gr_interleaved_short_to_complex_; - } + return gr_interleaved_short_to_complex_; } diff --git a/src/algorithms/data_type_adapter/adapters/ishort_to_complex.h b/src/algorithms/data_type_adapter/adapters/ishort_to_complex.h index 8a60afa15..73d1133a8 100644 --- a/src/algorithms/data_type_adapter/adapters/ishort_to_complex.h +++ b/src/algorithms/data_type_adapter/adapters/ishort_to_complex.h @@ -33,8 +33,8 @@ #include "conjugate_cc.h" #include "gnss_block_interface.h" -#include #include +#include #include class ConfigurationInterface; @@ -47,7 +47,7 @@ class IshortToComplex : public GNSSBlockInterface { public: IshortToComplex(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, unsigned int in_streams, unsigned int out_streams); virtual ~IshortToComplex(); diff --git a/src/algorithms/data_type_adapter/adapters/ishort_to_cshort.cc b/src/algorithms/data_type_adapter/adapters/ishort_to_cshort.cc index 571b0170f..c6a7d7490 100644 --- a/src/algorithms/data_type_adapter/adapters/ishort_to_cshort.cc +++ b/src/algorithms/data_type_adapter/adapters/ishort_to_cshort.cc @@ -36,7 +36,7 @@ using google::LogMessage; -IshortToCshort::IshortToCshort(ConfigurationInterface* configuration, std::string role, +IshortToCshort::IshortToCshort(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : config_(configuration), role_(role), in_streams_(in_streams), out_streams_(out_streams) { std::string default_input_item_type = "short"; @@ -77,9 +77,7 @@ IshortToCshort::IshortToCshort(ConfigurationInterface* configuration, std::strin } -IshortToCshort::~IshortToCshort() -{ -} +IshortToCshort::~IshortToCshort() = default; void IshortToCshort::connect(gr::top_block_sptr top_block) @@ -146,8 +144,5 @@ gr::basic_block_sptr IshortToCshort::get_right_block() { return conjugate_sc_; } - else - { - return interleaved_short_to_complex_short_; - } + return interleaved_short_to_complex_short_; } diff --git a/src/algorithms/data_type_adapter/adapters/ishort_to_cshort.h b/src/algorithms/data_type_adapter/adapters/ishort_to_cshort.h index 382ce7716..925065a1d 100644 --- a/src/algorithms/data_type_adapter/adapters/ishort_to_cshort.h +++ b/src/algorithms/data_type_adapter/adapters/ishort_to_cshort.h @@ -48,7 +48,7 @@ class IshortToCshort : public GNSSBlockInterface { public: IshortToCshort(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, unsigned int in_streams, unsigned int out_streams); virtual ~IshortToCshort(); diff --git a/src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_byte_to_complex_byte.cc b/src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_byte_to_complex_byte.cc index f41662ed7..c5c854334 100644 --- a/src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_byte_to_complex_byte.cc +++ b/src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_byte_to_complex_byte.cc @@ -54,8 +54,8 @@ int interleaved_byte_to_complex_byte::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const int8_t *in = reinterpret_cast(input_items[0]); - lv_8sc_t *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); // This could be put into a Volk kernel int8_t real_part; int8_t imag_part; diff --git a/src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_byte_to_complex_short.cc b/src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_byte_to_complex_short.cc index c8b288f9b..b6e5368b8 100644 --- a/src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_byte_to_complex_short.cc +++ b/src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_byte_to_complex_short.cc @@ -54,8 +54,8 @@ int interleaved_byte_to_complex_short::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const int8_t *in = reinterpret_cast(input_items[0]); - lv_16sc_t *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); // This could be put into a Volk kernel int8_t real_part; int8_t imag_part; diff --git a/src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_short_to_complex_short.cc b/src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_short_to_complex_short.cc index fe4106ea8..bf88a2ea5 100644 --- a/src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_short_to_complex_short.cc +++ b/src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_short_to_complex_short.cc @@ -54,8 +54,8 @@ int interleaved_short_to_complex_short::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const int16_t *in = reinterpret_cast(input_items[0]); - lv_16sc_t *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); // This could be put into a Volk kernel int16_t real_part; int16_t imag_part; diff --git a/src/algorithms/input_filter/adapters/beamformer_filter.cc b/src/algorithms/input_filter/adapters/beamformer_filter.cc index fb50853ec..52c19352d 100644 --- a/src/algorithms/input_filter/adapters/beamformer_filter.cc +++ b/src/algorithms/input_filter/adapters/beamformer_filter.cc @@ -38,7 +38,7 @@ using google::LogMessage; BeamformerFilter::BeamformerFilter( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, unsigned int out_stream) : role_(role), in_stream_(in_stream), out_stream_(out_stream) { std::string default_item_type = "gr_complex"; @@ -48,7 +48,7 @@ BeamformerFilter::BeamformerFilter( DLOG(INFO) << "dump_ is " << dump_; dump_filename_ = configuration->property(role + ".dump_filename", default_dump_file); - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); beamformer_ = make_beamformer(); @@ -79,7 +79,7 @@ BeamformerFilter::BeamformerFilter( } -BeamformerFilter::~BeamformerFilter() {} +BeamformerFilter::~BeamformerFilter() = default; void BeamformerFilter::connect(gr::top_block_sptr top_block) diff --git a/src/algorithms/input_filter/adapters/beamformer_filter.h b/src/algorithms/input_filter/adapters/beamformer_filter.h index 78fec45ca..c97c32732 100644 --- a/src/algorithms/input_filter/adapters/beamformer_filter.h +++ b/src/algorithms/input_filter/adapters/beamformer_filter.h @@ -46,7 +46,7 @@ class BeamformerFilter : public GNSSBlockInterface { public: BeamformerFilter(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, + const std::string& role, unsigned int in_stream, unsigned int out_stream); virtual ~BeamformerFilter(); diff --git a/src/algorithms/input_filter/adapters/fir_filter.cc b/src/algorithms/input_filter/adapters/fir_filter.cc index 8c77856d8..b436b1407 100644 --- a/src/algorithms/input_filter/adapters/fir_filter.cc +++ b/src/algorithms/input_filter/adapters/fir_filter.cc @@ -31,20 +31,20 @@ #include "fir_filter.h" #include "configuration_interface.h" -#include -#include #include +#include #include +#include using google::LogMessage; FirFilter::FirFilter(ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : config_(configuration), role_(role), in_streams_(in_streams), out_streams_(out_streams) + unsigned int in_streams, unsigned int out_streams) : config_(configuration), role_(std::move(role)), in_streams_(in_streams), out_streams_(out_streams) { size_t item_size; (*this).init(); - if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("gr_complex") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "gr_complex") && (output_item_type_ == "gr_complex")) { item_size = sizeof(gr_complex); fir_filter_ccf_ = gr::filter::fir_filter_ccf::make(1, taps_); @@ -55,7 +55,7 @@ FirFilter::FirFilter(ConfigurationInterface* configuration, std::string role, file_sink_ = gr::blocks::file_sink::make(item_size, dump_filename_.c_str()); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0) && (output_item_type_.compare("cshort") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "cshort") && (output_item_type_ == "cshort")) { item_size = sizeof(lv_16sc_t); cshort_to_float_x2_ = make_cshort_to_float_x2(); @@ -72,7 +72,7 @@ FirFilter::FirFilter(ConfigurationInterface* configuration, std::string role, file_sink_ = gr::blocks::file_sink::make(item_size, dump_filename_.c_str()); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "cshort") && (output_item_type_ == "gr_complex")) { item_size = sizeof(gr_complex); cshort_to_float_x2_ = make_cshort_to_float_x2(); @@ -88,7 +88,7 @@ FirFilter::FirFilter(ConfigurationInterface* configuration, std::string role, } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cbyte") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "cbyte") && (output_item_type_ == "gr_complex")) { item_size = sizeof(gr_complex); cbyte_to_float_x2_ = make_complex_byte_to_float_x2(); @@ -106,7 +106,7 @@ FirFilter::FirFilter(ConfigurationInterface* configuration, std::string role, file_sink_ = gr::blocks::file_sink::make(item_size, dump_filename_.c_str()); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cbyte") == 0) && (output_item_type_.compare("cbyte") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "cbyte") && (output_item_type_ == "cbyte")) { item_size = sizeof(lv_8sc_t); cbyte_to_float_x2_ = make_complex_byte_to_float_x2(); @@ -142,14 +142,12 @@ FirFilter::FirFilter(ConfigurationInterface* configuration, std::string role, } -FirFilter::~FirFilter() -{ -} +FirFilter::~FirFilter() = default; void FirFilter::connect(gr::top_block_sptr top_block) { - if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("gr_complex") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "gr_complex") && (output_item_type_ == "gr_complex")) { if (dump_) { @@ -160,7 +158,7 @@ void FirFilter::connect(gr::top_block_sptr top_block) DLOG(INFO) << "Nothing to connect internally"; } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0) && (output_item_type_.compare("cshort") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "cshort") && (output_item_type_ == "cshort")) { top_block->connect(cshort_to_float_x2_, 0, fir_filter_fff_1_, 0); top_block->connect(cshort_to_float_x2_, 1, fir_filter_fff_2_, 0); @@ -173,7 +171,7 @@ void FirFilter::connect(gr::top_block_sptr top_block) top_block->connect(short_x2_to_cshort_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cbyte") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "cbyte") && (output_item_type_ == "gr_complex")) { top_block->connect(cbyte_to_float_x2_, 0, fir_filter_fff_1_, 0); top_block->connect(cbyte_to_float_x2_, 1, fir_filter_fff_2_, 0); @@ -184,7 +182,7 @@ void FirFilter::connect(gr::top_block_sptr top_block) top_block->connect(float_to_complex_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cbyte") == 0) && (output_item_type_.compare("cbyte") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "cbyte") && (output_item_type_ == "cbyte")) { top_block->connect(cbyte_to_float_x2_, 0, fir_filter_fff_1_, 0); top_block->connect(cbyte_to_float_x2_, 1, fir_filter_fff_2_, 0); @@ -197,7 +195,7 @@ void FirFilter::connect(gr::top_block_sptr top_block) top_block->connect(char_x2_cbyte_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "cshort") && (output_item_type_ == "gr_complex")) { top_block->connect(cshort_to_float_x2_, 0, fir_filter_fff_1_, 0); top_block->connect(cshort_to_float_x2_, 1, fir_filter_fff_2_, 0); @@ -217,14 +215,14 @@ void FirFilter::connect(gr::top_block_sptr top_block) void FirFilter::disconnect(gr::top_block_sptr top_block) { - if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("gr_complex") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "gr_complex") && (output_item_type_ == "gr_complex")) { if (dump_) { top_block->disconnect(fir_filter_ccf_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cbyte") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "cbyte") && (output_item_type_ == "gr_complex")) { top_block->disconnect(fir_filter_fff_2_, 0, float_to_complex_, 1); top_block->disconnect(fir_filter_fff_1_, 0, float_to_complex_, 0); @@ -235,7 +233,7 @@ void FirFilter::disconnect(gr::top_block_sptr top_block) top_block->disconnect(float_to_complex_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0) && (output_item_type_.compare("cshort") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "cshort") && (output_item_type_ == "cshort")) { top_block->disconnect(cshort_to_float_x2_, 0, fir_filter_fff_1_, 0); top_block->disconnect(cshort_to_float_x2_, 1, fir_filter_fff_2_, 0); @@ -248,7 +246,7 @@ void FirFilter::disconnect(gr::top_block_sptr top_block) top_block->disconnect(short_x2_to_cshort_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cbyte") == 0) && (output_item_type_.compare("cbyte") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "cbyte") && (output_item_type_ == "cbyte")) { top_block->disconnect(float_to_char_2_, 0, char_x2_cbyte_, 1); top_block->disconnect(float_to_char_1_, 0, char_x2_cbyte_, 0); @@ -261,7 +259,7 @@ void FirFilter::disconnect(gr::top_block_sptr top_block) top_block->disconnect(char_x2_cbyte_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "cshort") && (output_item_type_ == "gr_complex")) { top_block->disconnect(cshort_to_float_x2_, 0, fir_filter_fff_1_, 0); top_block->disconnect(cshort_to_float_x2_, 1, fir_filter_fff_2_, 0); @@ -281,23 +279,23 @@ void FirFilter::disconnect(gr::top_block_sptr top_block) gr::basic_block_sptr FirFilter::get_left_block() { - if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("gr_complex") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "gr_complex") && (output_item_type_ == "gr_complex")) { return fir_filter_ccf_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0) && (output_item_type_.compare("cshort") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "cshort") && (output_item_type_ == "cshort")) { return cshort_to_float_x2_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cbyte") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "cbyte") && (output_item_type_ == "gr_complex")) { return cbyte_to_float_x2_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cbyte") == 0) && (output_item_type_.compare("cbyte") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "cbyte") && (output_item_type_ == "cbyte")) { return cbyte_to_float_x2_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "cshort") && (output_item_type_ == "gr_complex")) { return cshort_to_float_x2_; } @@ -311,23 +309,23 @@ gr::basic_block_sptr FirFilter::get_left_block() gr::basic_block_sptr FirFilter::get_right_block() { - if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("gr_complex") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "gr_complex") && (output_item_type_ == "gr_complex")) { return fir_filter_ccf_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0) && (output_item_type_.compare("cshort") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "cshort") && (output_item_type_ == "cshort")) { return short_x2_to_cshort_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cbyte") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "cbyte") && (output_item_type_ == "gr_complex")) { return float_to_complex_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cbyte") == 0) && (output_item_type_.compare("cbyte") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "cbyte") && (output_item_type_ == "cbyte")) { return char_x2_cbyte_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("cshort") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "cshort") && (output_item_type_ == "gr_complex")) { return float_to_complex_; } @@ -370,23 +368,23 @@ void FirFilter::init() double option_value; for (unsigned int i = 0; i < number_of_bands; i++) { - option = ".band" + boost::lexical_cast(i + 1) + "_begin"; + option = ".band" + std::to_string(i + 1) + "_begin"; option_value = config_->property(role_ + option, default_bands[i]); bands.push_back(option_value); - option = ".band" + boost::lexical_cast(i + 1) + "_end"; + option = ".band" + std::to_string(i + 1) + "_end"; option_value = config_->property(role_ + option, default_bands[i]); bands.push_back(option_value); - option = ".ampl" + boost::lexical_cast(i + 1) + "_begin"; + option = ".ampl" + std::to_string(i + 1) + "_begin"; option_value = config_->property(role_ + option, default_bands[i]); ampl.push_back(option_value); - option = ".ampl" + boost::lexical_cast(i + 1) + "_end"; + option = ".ampl" + std::to_string(i + 1) + "_end"; option_value = config_->property(role_ + option, default_bands[i]); ampl.push_back(option_value); - option = ".band" + boost::lexical_cast(i + 1) + "_error"; + option = ".band" + std::to_string(i + 1) + "_error"; option_value = config_->property(role_ + option, default_bands[i]); error_w.push_back(option_value); } @@ -400,8 +398,8 @@ void FirFilter::init() // those bands, and the weight given to the error in those bands. std::vector taps_d = gr::filter::pm_remez(number_of_taps - 1, bands, ampl, error_w, filter_type, grid_density); taps_.reserve(taps_d.size()); - for (std::vector::iterator it = taps_d.begin(); it != taps_d.end(); it++) + for (double& it : taps_d) { - taps_.push_back(float(*it)); + taps_.push_back(float(it)); } } diff --git a/src/algorithms/input_filter/adapters/fir_filter.h b/src/algorithms/input_filter/adapters/fir_filter.h index 207d8e174..85626f2cc 100644 --- a/src/algorithms/input_filter/adapters/fir_filter.h +++ b/src/algorithms/input_filter/adapters/fir_filter.h @@ -33,16 +33,16 @@ #ifndef GNSS_SDR_FIR_FILTER_H_ #define GNSS_SDR_FIR_FILTER_H_ -#include "gnss_block_interface.h" -#include "complex_byte_to_float_x2.h" #include "byte_x2_to_complex_byte.h" -#include "short_x2_to_cshort.h" +#include "complex_byte_to_float_x2.h" #include "cshort_to_float_x2.h" -#include +#include "gnss_block_interface.h" +#include "short_x2_to_cshort.h" #include #include #include #include +#include #ifdef GR_GREATER_38 #include #else diff --git a/src/algorithms/input_filter/adapters/freq_xlating_fir_filter.cc b/src/algorithms/input_filter/adapters/freq_xlating_fir_filter.cc index 1bdb2d841..9e904d2e8 100644 --- a/src/algorithms/input_filter/adapters/freq_xlating_fir_filter.cc +++ b/src/algorithms/input_filter/adapters/freq_xlating_fir_filter.cc @@ -31,17 +31,17 @@ #include "freq_xlating_fir_filter.h" #include "configuration_interface.h" -#include -#include -#include -#include #include +#include +#include +#include #include +#include using google::LogMessage; FreqXlatingFirFilter::FreqXlatingFirFilter(ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : config_(configuration), role_(role), in_streams_(in_streams), out_streams_(out_streams) + unsigned int in_streams, unsigned int out_streams) : config_(configuration), role_(std::move(role)), in_streams_(in_streams), out_streams_(out_streams) { std::string default_input_item_type = "gr_complex"; std::string default_output_item_type = "gr_complex"; @@ -72,7 +72,7 @@ FreqXlatingFirFilter::FreqXlatingFirFilter(ConfigurationInterface* configuration std::string filter_type = config_->property(role_ + ".filter_type", default_filter_type); decimation_factor_ = config_->property(role_ + ".decimation_factor", default_decimation_factor); - if (filter_type.compare("lowpass") != 0) + if (filter_type != "lowpass") { std::vector taps_d; std::vector bands; @@ -83,23 +83,23 @@ FreqXlatingFirFilter::FreqXlatingFirFilter(ConfigurationInterface* configuration for (unsigned int i = 0; i < number_of_bands; i++) { - option = ".band" + boost::lexical_cast(i + 1) + "_begin"; + option = ".band" + std::to_string(i + 1) + "_begin"; option_value = config_->property(role_ + option, default_bands[i]); bands.push_back(option_value); - option = ".band" + boost::lexical_cast(i + 1) + "_end"; + option = ".band" + std::to_string(i + 1) + "_end"; option_value = config_->property(role_ + option, default_bands[i]); bands.push_back(option_value); - option = ".ampl" + boost::lexical_cast(i + 1) + "_begin"; + option = ".ampl" + std::to_string(i + 1) + "_begin"; option_value = config_->property(role_ + option, default_bands[i]); ampl.push_back(option_value); - option = ".ampl" + boost::lexical_cast(i + 1) + "_end"; + option = ".ampl" + std::to_string(i + 1) + "_end"; option_value = config_->property(role_ + option, default_bands[i]); ampl.push_back(option_value); - option = ".band" + boost::lexical_cast(i + 1) + "_error"; + option = ".band" + std::to_string(i + 1) + "_error"; option_value = config_->property(role_ + option, default_bands[i]); error_w.push_back(option_value); } @@ -107,9 +107,9 @@ FreqXlatingFirFilter::FreqXlatingFirFilter(ConfigurationInterface* configuration int grid_density = config_->property(role_ + ".grid_density", default_grid_density); taps_d = gr::filter::pm_remez(number_of_taps - 1, bands, ampl, error_w, filter_type, grid_density); taps_.reserve(taps_d.size()); - for (std::vector::iterator it = taps_d.begin(); it != taps_d.end(); it++) + for (double& it : taps_d) { - taps_.push_back(static_cast(*it)); + taps_.push_back(static_cast(it)); } } else @@ -123,28 +123,28 @@ FreqXlatingFirFilter::FreqXlatingFirFilter(ConfigurationInterface* configuration size_t item_size; - if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("gr_complex") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "gr_complex") && (output_item_type_ == "gr_complex")) { item_size = sizeof(gr_complex); //output input_size_ = sizeof(gr_complex); //input freq_xlating_fir_filter_ccf_ = gr::filter::freq_xlating_fir_filter_ccf::make(decimation_factor_, taps_, intermediate_freq_, sampling_freq_); DLOG(INFO) << "input_filter(" << freq_xlating_fir_filter_ccf_->unique_id() << ")"; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("float") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "float") && (output_item_type_ == "gr_complex")) { item_size = sizeof(gr_complex); input_size_ = sizeof(float); //input freq_xlating_fir_filter_fcf_ = gr::filter::freq_xlating_fir_filter_fcf::make(decimation_factor_, taps_, intermediate_freq_, sampling_freq_); DLOG(INFO) << "input_filter(" << freq_xlating_fir_filter_fcf_->unique_id() << ")"; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("short") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "short") && (output_item_type_ == "gr_complex")) { item_size = sizeof(gr_complex); input_size_ = sizeof(int16_t); //input freq_xlating_fir_filter_scf_ = gr::filter::freq_xlating_fir_filter_scf::make(decimation_factor_, taps_, intermediate_freq_, sampling_freq_); DLOG(INFO) << "input_filter(" << freq_xlating_fir_filter_scf_->unique_id() << ")"; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("short") == 0) && (output_item_type_.compare("cshort") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "short") && (output_item_type_ == "cshort")) { item_size = sizeof(lv_16sc_t); input_size_ = sizeof(int16_t); //input @@ -155,7 +155,7 @@ FreqXlatingFirFilter::FreqXlatingFirFilter(ConfigurationInterface* configuration float_to_short_2_ = gr::blocks::float_to_short::make(); short_x2_to_cshort_ = make_short_x2_to_cshort(); } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("byte") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "byte") && (output_item_type_ == "gr_complex")) { item_size = sizeof(gr_complex); input_size_ = sizeof(int8_t); //input @@ -163,7 +163,7 @@ FreqXlatingFirFilter::FreqXlatingFirFilter(ConfigurationInterface* configuration freq_xlating_fir_filter_scf_ = gr::filter::freq_xlating_fir_filter_scf::make(decimation_factor_, taps_, intermediate_freq_, sampling_freq_); DLOG(INFO) << "input_filter(" << freq_xlating_fir_filter_scf_->unique_id() << ")"; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("byte") == 0) && (output_item_type_.compare("cbyte") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "byte") && (output_item_type_ == "cbyte")) { item_size = sizeof(lv_8sc_t); input_size_ = sizeof(int8_t); //input @@ -196,35 +196,33 @@ FreqXlatingFirFilter::FreqXlatingFirFilter(ConfigurationInterface* configuration } -FreqXlatingFirFilter::~FreqXlatingFirFilter() -{ -} +FreqXlatingFirFilter::~FreqXlatingFirFilter() = default; void FreqXlatingFirFilter::connect(gr::top_block_sptr top_block) { - if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("gr_complex") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "gr_complex") && (output_item_type_ == "gr_complex")) { if (dump_) { top_block->connect(freq_xlating_fir_filter_ccf_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("float") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "float") && (output_item_type_ == "gr_complex")) { if (dump_) { top_block->connect(freq_xlating_fir_filter_fcf_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("short") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "short") && (output_item_type_ == "gr_complex")) { if (dump_) { top_block->connect(freq_xlating_fir_filter_scf_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("short") == 0) && (output_item_type_.compare("cshort") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "short") && (output_item_type_ == "cshort")) { top_block->connect(freq_xlating_fir_filter_scf_, 0, complex_to_float_, 0); top_block->connect(complex_to_float_, 0, float_to_short_1_, 0); @@ -236,7 +234,7 @@ void FreqXlatingFirFilter::connect(gr::top_block_sptr top_block) top_block->connect(short_x2_to_cshort_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("byte") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "byte") && (output_item_type_ == "gr_complex")) { top_block->connect(gr_char_to_short_, 0, freq_xlating_fir_filter_scf_, 0); if (dump_) @@ -244,7 +242,7 @@ void FreqXlatingFirFilter::connect(gr::top_block_sptr top_block) top_block->connect(freq_xlating_fir_filter_scf_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("byte") == 0) && (output_item_type_.compare("cbyte") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "byte") && (output_item_type_ == "cbyte")) { top_block->connect(gr_char_to_short_, 0, freq_xlating_fir_filter_scf_, 0); top_block->connect(freq_xlating_fir_filter_scf_, 0, complex_to_complex_byte_, 0); @@ -262,28 +260,28 @@ void FreqXlatingFirFilter::connect(gr::top_block_sptr top_block) void FreqXlatingFirFilter::disconnect(gr::top_block_sptr top_block) { - if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("gr_complex") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "gr_complex") && (output_item_type_ == "gr_complex")) { if (dump_) { top_block->disconnect(freq_xlating_fir_filter_ccf_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("float") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "float") && (output_item_type_ == "gr_complex")) { if (dump_) { top_block->disconnect(freq_xlating_fir_filter_fcf_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("short") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "short") && (output_item_type_ == "gr_complex")) { if (dump_) { top_block->disconnect(freq_xlating_fir_filter_scf_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("short") == 0) && (output_item_type_.compare("cshort") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "short") && (output_item_type_ == "cshort")) { top_block->disconnect(freq_xlating_fir_filter_scf_, 0, complex_to_float_, 0); top_block->disconnect(complex_to_float_, 0, float_to_short_1_, 0); @@ -295,7 +293,7 @@ void FreqXlatingFirFilter::disconnect(gr::top_block_sptr top_block) top_block->disconnect(short_x2_to_cshort_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("byte") == 0) && (output_item_type_.compare("gr_complex") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "byte") && (output_item_type_ == "gr_complex")) { top_block->disconnect(gr_char_to_short_, 0, freq_xlating_fir_filter_scf_, 0); if (dump_) @@ -303,7 +301,7 @@ void FreqXlatingFirFilter::disconnect(gr::top_block_sptr top_block) top_block->disconnect(freq_xlating_fir_filter_scf_, 0, file_sink_, 0); } } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("byte") == 0) && (output_item_type_.compare("cbyte") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "byte") && (output_item_type_ == "cbyte")) { top_block->disconnect(gr_char_to_short_, 0, freq_xlating_fir_filter_scf_, 0); top_block->disconnect(freq_xlating_fir_filter_scf_, 0, complex_to_complex_byte_, 0); @@ -321,27 +319,27 @@ void FreqXlatingFirFilter::disconnect(gr::top_block_sptr top_block) gr::basic_block_sptr FreqXlatingFirFilter::get_left_block() { - if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("gr_complex") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "gr_complex") && (output_item_type_ == "gr_complex")) { return freq_xlating_fir_filter_ccf_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("float") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "float") && (output_item_type_ == "gr_complex")) { return freq_xlating_fir_filter_fcf_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("short") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "short") && (output_item_type_ == "gr_complex")) { return freq_xlating_fir_filter_scf_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("short") == 0) && (output_item_type_.compare("cshort") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "short") && (output_item_type_ == "cshort")) { return freq_xlating_fir_filter_scf_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("byte") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "byte") && (output_item_type_ == "gr_complex")) { return gr_char_to_short_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("byte") == 0) && (output_item_type_.compare("cbyte") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "byte") && (output_item_type_ == "cbyte")) { return gr_char_to_short_; } @@ -355,27 +353,27 @@ gr::basic_block_sptr FreqXlatingFirFilter::get_left_block() gr::basic_block_sptr FreqXlatingFirFilter::get_right_block() { - if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("gr_complex") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "gr_complex") && (output_item_type_ == "gr_complex")) { return freq_xlating_fir_filter_ccf_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("float") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "float") && (output_item_type_ == "gr_complex")) { return freq_xlating_fir_filter_fcf_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("short") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "short") && (output_item_type_ == "gr_complex")) { return freq_xlating_fir_filter_scf_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("short") == 0) && (output_item_type_.compare("cshort") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "short") && (output_item_type_ == "cshort")) { return short_x2_to_cshort_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("byte") == 0) && (output_item_type_.compare("gr_complex") == 0)) + if ((taps_item_type_ == "float") && (input_item_type_ == "byte") && (output_item_type_ == "gr_complex")) { return freq_xlating_fir_filter_scf_; } - else if ((taps_item_type_.compare("float") == 0) && (input_item_type_.compare("byte") == 0) && (output_item_type_.compare("cbyte") == 0)) + else if ((taps_item_type_ == "float") && (input_item_type_ == "byte") && (output_item_type_ == "cbyte")) { return complex_to_complex_byte_; } diff --git a/src/algorithms/input_filter/adapters/freq_xlating_fir_filter.h b/src/algorithms/input_filter/adapters/freq_xlating_fir_filter.h index 8f69efc97..fad4f89cd 100644 --- a/src/algorithms/input_filter/adapters/freq_xlating_fir_filter.h +++ b/src/algorithms/input_filter/adapters/freq_xlating_fir_filter.h @@ -33,9 +33,9 @@ #ifndef GNSS_SDR_FREQ_XLATING_FIR_FILTER_H_ #define GNSS_SDR_FREQ_XLATING_FIR_FILTER_H_ +#include "complex_float_to_complex_byte.h" #include "gnss_block_interface.h" #include "short_x2_to_cshort.h" -#include "complex_float_to_complex_byte.h" #ifdef GR_GREATER_38 #include #else @@ -43,9 +43,9 @@ #include #include #endif -#include -#include #include +#include +#include #include #include #include diff --git a/src/algorithms/input_filter/adapters/notch_filter.cc b/src/algorithms/input_filter/adapters/notch_filter.cc index d483d523b..c9264e0f7 100644 --- a/src/algorithms/input_filter/adapters/notch_filter.cc +++ b/src/algorithms/input_filter/adapters/notch_filter.cc @@ -38,7 +38,7 @@ using google::LogMessage; -NotchFilter::NotchFilter(ConfigurationInterface* configuration, std::string role, +NotchFilter::NotchFilter(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { size_t item_size_; @@ -63,7 +63,7 @@ NotchFilter::NotchFilter(ConfigurationInterface* configuration, std::string role length_ = configuration->property(role + ".length", default_length_); n_segments_est = configuration->property(role + ".segments_est", default_n_segments_est); n_segments_reset = configuration->property(role + ".segments_reset", default_n_segments_reset); - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); notch_filter_ = make_notch_filter(pfa, p_c_factor, length_, n_segments_est, n_segments_reset); @@ -92,9 +92,7 @@ NotchFilter::NotchFilter(ConfigurationInterface* configuration, std::string role } -NotchFilter::~NotchFilter() -{ -} +NotchFilter::~NotchFilter() = default; void NotchFilter::connect(gr::top_block_sptr top_block) diff --git a/src/algorithms/input_filter/adapters/notch_filter.h b/src/algorithms/input_filter/adapters/notch_filter.h index 3bdf5c688..c0e1f9510 100644 --- a/src/algorithms/input_filter/adapters/notch_filter.h +++ b/src/algorithms/input_filter/adapters/notch_filter.h @@ -33,8 +33,8 @@ #ifndef GNSS_SDR_NOTCH_FILTER_H_ #define GNSS_SDR_NOTCH_FILTER_H_ -#include "notch_cc.h" #include "gnss_block_interface.h" +#include "notch_cc.h" #include #include #include @@ -45,7 +45,7 @@ class NotchFilter : public GNSSBlockInterface { public: NotchFilter(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, unsigned int in_streams, unsigned int out_streams); virtual ~NotchFilter(); diff --git a/src/algorithms/input_filter/adapters/notch_filter_lite.cc b/src/algorithms/input_filter/adapters/notch_filter_lite.cc index 65a816cb6..3c83369d5 100644 --- a/src/algorithms/input_filter/adapters/notch_filter_lite.cc +++ b/src/algorithms/input_filter/adapters/notch_filter_lite.cc @@ -38,7 +38,7 @@ using google::LogMessage; -NotchFilterLite::NotchFilterLite(ConfigurationInterface* configuration, std::string role, +NotchFilterLite::NotchFilterLite(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { size_t item_size_; @@ -70,7 +70,7 @@ NotchFilterLite::NotchFilterLite(ConfigurationInterface* configuration, std::str n_segments_reset = configuration->property(role + ".segments_reset", default_n_segments_reset); int n_segments_coeff = static_cast((samp_freq / coeff_rate) / static_cast(length_)); n_segments_coeff = std::max(1, n_segments_coeff); - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); notch_filter_lite_ = make_notch_filter_lite(p_c_factor, pfa, length_, n_segments_est, n_segments_reset, n_segments_coeff); @@ -99,9 +99,7 @@ NotchFilterLite::NotchFilterLite(ConfigurationInterface* configuration, std::str } -NotchFilterLite::~NotchFilterLite() -{ -} +NotchFilterLite::~NotchFilterLite() = default; void NotchFilterLite::connect(gr::top_block_sptr top_block) diff --git a/src/algorithms/input_filter/adapters/notch_filter_lite.h b/src/algorithms/input_filter/adapters/notch_filter_lite.h index 901326579..d8352706d 100644 --- a/src/algorithms/input_filter/adapters/notch_filter_lite.h +++ b/src/algorithms/input_filter/adapters/notch_filter_lite.h @@ -45,7 +45,7 @@ class NotchFilterLite : public GNSSBlockInterface { public: NotchFilterLite(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, + const std::string& role, unsigned int in_streams, unsigned int out_streams); virtual ~NotchFilterLite(); diff --git a/src/algorithms/input_filter/adapters/pulse_blanking_filter.cc b/src/algorithms/input_filter/adapters/pulse_blanking_filter.cc index 7714dd404..fffdefe9f 100644 --- a/src/algorithms/input_filter/adapters/pulse_blanking_filter.cc +++ b/src/algorithms/input_filter/adapters/pulse_blanking_filter.cc @@ -33,13 +33,14 @@ #include #include #include -#include #include +#include +#include using google::LogMessage; PulseBlankingFilter::PulseBlankingFilter(ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : config_(configuration), role_(role), in_streams_(in_streams), out_streams_(out_streams) + unsigned int in_streams, unsigned int out_streams) : config_(configuration), role_(std::move(role)), in_streams_(in_streams), out_streams_(out_streams) { size_t item_size; xlat_ = false; @@ -61,7 +62,7 @@ PulseBlankingFilter::PulseBlankingFilter(ConfigurationInterface* configuration, int n_segments_est = config_->property(role_ + ".segments_est", default_n_segments_est); int default_n_segments_reset = 5000000; int n_segments_reset = config_->property(role_ + ".segments_reset", default_n_segments_reset); - if (input_item_type_.compare("gr_complex") == 0) + if (input_item_type_ == "gr_complex") { item_size = sizeof(gr_complex); //output input_size_ = sizeof(gr_complex); //input @@ -105,14 +106,12 @@ PulseBlankingFilter::PulseBlankingFilter(ConfigurationInterface* configuration, } -PulseBlankingFilter::~PulseBlankingFilter() -{ -} +PulseBlankingFilter::~PulseBlankingFilter() = default; void PulseBlankingFilter::connect(gr::top_block_sptr top_block) { - if (input_item_type_.compare("gr_complex") == 0) + if (input_item_type_ == "gr_complex") { if (dump_) { @@ -133,7 +132,7 @@ void PulseBlankingFilter::connect(gr::top_block_sptr top_block) void PulseBlankingFilter::disconnect(gr::top_block_sptr top_block) { - if (input_item_type_.compare("gr_complex") == 0) + if (input_item_type_ == "gr_complex") { if (dump_) { @@ -153,34 +152,25 @@ void PulseBlankingFilter::disconnect(gr::top_block_sptr top_block) gr::basic_block_sptr PulseBlankingFilter::get_left_block() { - if (input_item_type_.compare("gr_complex") == 0) + if (input_item_type_ == "gr_complex") { if (xlat_) { return freq_xlating_; } - else - { - return pulse_blanking_cc_; - } - } - else - { - return nullptr; - LOG(ERROR) << " Unknown input filter input/output item type conversion"; + return pulse_blanking_cc_; } + LOG(ERROR) << " Unknown input filter input/output item type conversion"; + return nullptr; } gr::basic_block_sptr PulseBlankingFilter::get_right_block() { - if (input_item_type_.compare("gr_complex") == 0) + if (input_item_type_ == "gr_complex") { return pulse_blanking_cc_; } - else - { - return nullptr; - LOG(ERROR) << " Unknown input filter input/output item type conversion"; - } + LOG(ERROR) << " Unknown input filter input/output item type conversion"; + return nullptr; } diff --git a/src/algorithms/input_filter/gnuradio_blocks/beamformer.cc b/src/algorithms/input_filter/gnuradio_blocks/beamformer.cc index afd217338..6f53c6099 100644 --- a/src/algorithms/input_filter/gnuradio_blocks/beamformer.cc +++ b/src/algorithms/input_filter/gnuradio_blocks/beamformer.cc @@ -49,7 +49,7 @@ beamformer::beamformer() { //initialize weight vector - if (posix_memalign((void **)&weight_vector, 16, GNSS_SDR_BEAMFORMER_CHANNELS * sizeof(gr_complex)) == 0) + if (posix_memalign(reinterpret_cast(&weight_vector), 16, GNSS_SDR_BEAMFORMER_CHANNELS * sizeof(gr_complex)) == 0) { }; @@ -69,7 +69,7 @@ beamformer::~beamformer() int beamformer::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - gr_complex *out = reinterpret_cast(output_items[0]); + auto *out = reinterpret_cast(output_items[0]); // channel output buffers // gr_complex *ch1 = (gr_complex *) input_items[0]; // gr_complex *ch2 = (gr_complex *) input_items[1]; diff --git a/src/algorithms/input_filter/gnuradio_blocks/notch_cc.cc b/src/algorithms/input_filter/gnuradio_blocks/notch_cc.cc index d7cc09c33..3a3c9f8a3 100644 --- a/src/algorithms/input_filter/gnuradio_blocks/notch_cc.cc +++ b/src/algorithms/input_filter/gnuradio_blocks/notch_cc.cc @@ -33,8 +33,8 @@ #include #include #include -#include #include +#include using google::LogMessage; @@ -86,9 +86,9 @@ Notch::~Notch() void Notch::forecast(int noutput_items __attribute__((unused)), gr_vector_int &ninput_items_required) { - for (uint32_t aux = 0; aux < ninput_items_required.size(); aux++) + for (int &aux : ninput_items_required) { - ninput_items_required[aux] = length_; + aux = length_; } } @@ -100,8 +100,8 @@ int Notch::general_work(int noutput_items, gr_vector_int &ninput_items __attribu float sig2dB = 0.0; float sig2lin = 0.0; lv_32fc_t dot_prod_; - const gr_complex *in = reinterpret_cast(input_items[0]); - gr_complex *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); in++; while ((index_out + length_) < noutput_items) { diff --git a/src/algorithms/input_filter/gnuradio_blocks/notch_lite_cc.cc b/src/algorithms/input_filter/gnuradio_blocks/notch_lite_cc.cc index 435b36470..03a3639db 100644 --- a/src/algorithms/input_filter/gnuradio_blocks/notch_lite_cc.cc +++ b/src/algorithms/input_filter/gnuradio_blocks/notch_lite_cc.cc @@ -33,8 +33,8 @@ #include #include #include -#include #include +#include using google::LogMessage; @@ -89,9 +89,9 @@ NotchLite::~NotchLite() void NotchLite::forecast(int noutput_items __attribute__((unused)), gr_vector_int &ninput_items_required) { - for (uint32_t aux = 0; aux < ninput_items_required.size(); aux++) + for (int &aux : ninput_items_required) { - ninput_items_required[aux] = length_; + aux = length_; } } @@ -103,8 +103,8 @@ int NotchLite::general_work(int noutput_items, gr_vector_int &ninput_items __att float sig2dB = 0.0; float sig2lin = 0.0; lv_32fc_t dot_prod_; - const gr_complex *in = reinterpret_cast(input_items[0]); - gr_complex *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); in++; while ((index_out + length_) < noutput_items) { diff --git a/src/algorithms/input_filter/gnuradio_blocks/pulse_blanking_cc.cc b/src/algorithms/input_filter/gnuradio_blocks/pulse_blanking_cc.cc index ea1232c30..02c98fb5c 100644 --- a/src/algorithms/input_filter/gnuradio_blocks/pulse_blanking_cc.cc +++ b/src/algorithms/input_filter/gnuradio_blocks/pulse_blanking_cc.cc @@ -79,9 +79,9 @@ pulse_blanking_cc::~pulse_blanking_cc() void pulse_blanking_cc::forecast(int noutput_items __attribute__((unused)), gr_vector_int &ninput_items_required) { - for (uint32_t aux = 0; aux < ninput_items_required.size(); aux++) + for (int &aux : ninput_items_required) { - ninput_items_required[aux] = length_; + aux = length_; } } @@ -89,9 +89,9 @@ void pulse_blanking_cc::forecast(int noutput_items __attribute__((unused)), gr_v int pulse_blanking_cc::general_work(int noutput_items, gr_vector_int &ninput_items __attribute__((unused)), gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const gr_complex *in = reinterpret_cast(input_items[0]); - gr_complex *out = reinterpret_cast(output_items[0]); - float *magnitude = static_cast(volk_malloc(noutput_items * sizeof(float), volk_get_alignment())); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); + auto *magnitude = static_cast(volk_malloc(noutput_items * sizeof(float), volk_get_alignment())); volk_32fc_magnitude_squared_32f(magnitude, in, noutput_items); int32_t sample_index = 0; float segment_energy; diff --git a/src/algorithms/libs/CMakeLists.txt b/src/algorithms/libs/CMakeLists.txt index 340185567..407e67c65 100644 --- a/src/algorithms/libs/CMakeLists.txt +++ b/src/algorithms/libs/CMakeLists.txt @@ -19,81 +19,75 @@ add_subdirectory(rtklib) set(GNSS_SPLIBS_SOURCES - gps_l2c_signal.cc - gps_l5_signal.cc - galileo_e1_signal_processing.cc - gnss_sdr_valve.cc - gnss_sdr_sample_counter.cc - gnss_signal_processing.cc - gps_sdr_signal_processing.cc - glonass_l1_signal_processing.cc - glonass_l2_signal_processing.cc - pass_through.cc - galileo_e5_signal_processing.cc - beidou_b1i_signal_processing.cc - complex_byte_to_float_x2.cc - byte_x2_to_complex_byte.cc - cshort_to_float_x2.cc - short_x2_to_cshort.cc - complex_float_to_complex_byte.cc - conjugate_cc.cc - conjugate_sc.cc - conjugate_ic.cc + gps_l2c_signal.cc + gps_l5_signal.cc + galileo_e1_signal_processing.cc + gnss_sdr_valve.cc + gnss_sdr_sample_counter.cc + gnss_signal_processing.cc + gps_sdr_signal_processing.cc + glonass_l1_signal_processing.cc + glonass_l2_signal_processing.cc + pass_through.cc + galileo_e5_signal_processing.cc + beidou_b1i_signal_processing.cc + complex_byte_to_float_x2.cc + byte_x2_to_complex_byte.cc + cshort_to_float_x2.cc + short_x2_to_cshort.cc + complex_float_to_complex_byte.cc + conjugate_cc.cc + conjugate_sc.cc + conjugate_ic.cc gnss_sdr_create_directory.cc geofunctions.cc ) set(GNSS_SPLIBS_HEADERS - gps_l2c_signal.h - gps_l5_signal.h - galileo_e1_signal_processing.h - gnss_sdr_valve.h - gnss_sdr_sample_counter.h - gnss_signal_processing.h - gps_sdr_signal_processing.h - glonass_l1_signal_processing.h - glonass_l2_signal_processing.h - pass_through.h - galileo_e5_signal_processing.h - beidou_b1i_signal_processing.h - complex_byte_to_float_x2.h - byte_x2_to_complex_byte.h - cshort_to_float_x2.h - short_x2_to_cshort.h - complex_float_to_complex_byte.h - conjugate_cc.h - conjugate_sc.h - conjugate_ic.h - gnss_sdr_create_directory.h - gnss_circular_deque.h - geofunctions.h + gps_l2c_signal.h + gps_l5_signal.h + galileo_e1_signal_processing.h + gnss_sdr_valve.h + gnss_sdr_sample_counter.h + gnss_signal_processing.h + gps_sdr_signal_processing.h + glonass_l1_signal_processing.h + glonass_l2_signal_processing.h + pass_through.h + galileo_e5_signal_processing.h + beidou_b1i_signal_processing.h + complex_byte_to_float_x2.h + byte_x2_to_complex_byte.h + cshort_to_float_x2.h + short_x2_to_cshort.h + complex_float_to_complex_byte.h + conjugate_cc.h + conjugate_sc.h + conjugate_ic.h + gnss_sdr_create_directory.h + gnss_circular_deque.h + geofunctions.h ) - if(ENABLE_FPGA) set(GNSS_SPLIBS_SOURCES ${GNSS_SPLIBS_SOURCES} gnss_sdr_time_counter.cc gnss_sdr_fpga_sample_counter.cc - ) + ) set(GNSS_SPLIBS_HEADERS ${GNSS_SPLIBS_HEADERS} gnss_sdr_time_counter.h gnss_sdr_fpga_sample_counter.h - ) + ) endif() if(OPENCL_FOUND) set(GNSS_SPLIBS_SOURCES ${GNSS_SPLIBS_SOURCES} - opencl/fft_execute.cc # Needs OpenCL - opencl/fft_setup.cc # Needs OpenCL - opencl/fft_kernelstring.cc # Needs OpenCL + opencl/fft_execute.cc # Needs OpenCL + opencl/fft_setup.cc # Needs OpenCL + opencl/fft_kernelstring.cc # Needs OpenCL ) - set(GNSS_SPLIBS_HEADERS ${GNSS_SPLIBS_HEADERS} - opencl/fft_execute.h # Needs OpenCL - opencl/fft_setup.h # Needs OpenCL - opencl/fft_kernelstring.h # Needs OpenCL - ) endif() include_directories( @@ -112,7 +106,7 @@ include_directories( ) if(OPENCL_FOUND) - include_directories( ${OPENCL_INCLUDE_DIRS} ) + include_directories(${OPENCL_INCLUDE_DIRS}) if(OS_IS_MACOSX) set(OPT_LIBRARIES ${OPT_LIBRARIES} "-framework OpenCL") else() diff --git a/src/algorithms/libs/byte_x2_to_complex_byte.cc b/src/algorithms/libs/byte_x2_to_complex_byte.cc index 7945f9573..a3a78c067 100644 --- a/src/algorithms/libs/byte_x2_to_complex_byte.cc +++ b/src/algorithms/libs/byte_x2_to_complex_byte.cc @@ -53,9 +53,9 @@ int byte_x2_to_complex_byte::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const int8_t *in0 = reinterpret_cast(input_items[0]); - const int8_t *in1 = reinterpret_cast(input_items[1]); - lv_8sc_t *out = reinterpret_cast(output_items[0]); + const auto *in0 = reinterpret_cast(input_items[0]); + const auto *in1 = reinterpret_cast(input_items[1]); + auto *out = reinterpret_cast(output_items[0]); // This could be put into a volk kernel int8_t real_part; int8_t imag_part; diff --git a/src/algorithms/libs/complex_byte_to_float_x2.cc b/src/algorithms/libs/complex_byte_to_float_x2.cc index ae0409d99..04f4a54b2 100644 --- a/src/algorithms/libs/complex_byte_to_float_x2.cc +++ b/src/algorithms/libs/complex_byte_to_float_x2.cc @@ -53,9 +53,9 @@ int complex_byte_to_float_x2::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const lv_8sc_t *in = reinterpret_cast(input_items[0]); - float *out0 = reinterpret_cast(output_items[0]); - float *out1 = reinterpret_cast(output_items[1]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out0 = reinterpret_cast(output_items[0]); + auto *out1 = reinterpret_cast(output_items[1]); const float scalar = 1; volk_8ic_s32f_deinterleave_32f_x2(out0, out1, in, scalar, noutput_items); return noutput_items; diff --git a/src/algorithms/libs/complex_float_to_complex_byte.cc b/src/algorithms/libs/complex_float_to_complex_byte.cc index 57576a9b1..d7106bedd 100644 --- a/src/algorithms/libs/complex_float_to_complex_byte.cc +++ b/src/algorithms/libs/complex_float_to_complex_byte.cc @@ -53,8 +53,8 @@ int complex_float_to_complex_byte::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const gr_complex *in = reinterpret_cast(input_items[0]); - lv_8sc_t *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); volk_gnsssdr_32fc_convert_8ic(out, in, noutput_items); return noutput_items; } diff --git a/src/algorithms/libs/conjugate_cc.cc b/src/algorithms/libs/conjugate_cc.cc index 2a61e1526..67077ba23 100644 --- a/src/algorithms/libs/conjugate_cc.cc +++ b/src/algorithms/libs/conjugate_cc.cc @@ -52,8 +52,8 @@ int conjugate_cc::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const gr_complex *in = reinterpret_cast(input_items[0]); - gr_complex *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); volk_32fc_conjugate_32fc(out, in, noutput_items); return noutput_items; } diff --git a/src/algorithms/libs/conjugate_ic.cc b/src/algorithms/libs/conjugate_ic.cc index c26f48388..d3d00932e 100644 --- a/src/algorithms/libs/conjugate_ic.cc +++ b/src/algorithms/libs/conjugate_ic.cc @@ -52,8 +52,8 @@ int conjugate_ic::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const lv_8sc_t *in = reinterpret_cast(input_items[0]); - lv_8sc_t *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); volk_gnsssdr_8ic_conjugate_8ic(out, in, noutput_items); return noutput_items; } diff --git a/src/algorithms/libs/conjugate_sc.cc b/src/algorithms/libs/conjugate_sc.cc index e62c6cc42..e23f1c1a4 100644 --- a/src/algorithms/libs/conjugate_sc.cc +++ b/src/algorithms/libs/conjugate_sc.cc @@ -52,8 +52,8 @@ int conjugate_sc::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const lv_16sc_t *in = reinterpret_cast(input_items[0]); - lv_16sc_t *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); volk_gnsssdr_16ic_conjugate_16ic(out, in, noutput_items); return noutput_items; } diff --git a/src/algorithms/libs/cshort_to_float_x2.cc b/src/algorithms/libs/cshort_to_float_x2.cc index accdb7826..cfde3f79c 100644 --- a/src/algorithms/libs/cshort_to_float_x2.cc +++ b/src/algorithms/libs/cshort_to_float_x2.cc @@ -53,9 +53,9 @@ int cshort_to_float_x2::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const lv_16sc_t *in = reinterpret_cast(input_items[0]); - float *out0 = reinterpret_cast(output_items[0]); - float *out1 = reinterpret_cast(output_items[1]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out0 = reinterpret_cast(output_items[0]); + auto *out1 = reinterpret_cast(output_items[1]); const float scalar = 1; volk_16ic_s32f_deinterleave_32f_x2(out0, out1, in, scalar, noutput_items); return noutput_items; diff --git a/src/algorithms/libs/galileo_e1_signal_processing.cc b/src/algorithms/libs/galileo_e1_signal_processing.cc index 3aaf2047c..23a8d9a94 100644 --- a/src/algorithms/libs/galileo_e1_signal_processing.cc +++ b/src/algorithms/libs/galileo_e1_signal_processing.cc @@ -51,27 +51,27 @@ void galileo_e1_code_gen_int(int* _dest, char _Signal[3], int32_t _prn) if (_galileo_signal.rfind("1B") != std::string::npos && _galileo_signal.length() >= 2) { - for (size_t i = 0; i < Galileo_E1_B_PRIMARY_CODE[prn].length(); i++) + for (char i : Galileo_E1_B_PRIMARY_CODE[prn]) { - hex_to_binary_converter(&_dest[index], Galileo_E1_B_PRIMARY_CODE[prn].at(i)); + hex_to_binary_converter(&_dest[index], i); index += 4; } } else if (_galileo_signal.rfind("1C") != std::string::npos && _galileo_signal.length() >= 2) { - for (size_t i = 0; i < Galileo_E1_C_PRIMARY_CODE[prn].length(); i++) + for (char i : Galileo_E1_C_PRIMARY_CODE[prn]) { - hex_to_binary_converter(&_dest[index], Galileo_E1_C_PRIMARY_CODE[prn].at(i)); + hex_to_binary_converter(&_dest[index], i); index += 4; } } } -void galileo_e1_sinboc_11_gen_int(int* _dest, int* _prn, uint32_t _length_out) +void galileo_e1_sinboc_11_gen_int(int* _dest, const int* _prn, uint32_t _length_out) { const uint32_t _length_in = Galileo_E1_B_CODE_LENGTH_CHIPS; - uint32_t _period = static_cast(_length_out / _length_in); + auto _period = static_cast(_length_out / _length_in); for (uint32_t i = 0; i < _length_in; i++) { for (uint32_t j = 0; j < (_period / 2); j++) @@ -86,10 +86,10 @@ void galileo_e1_sinboc_11_gen_int(int* _dest, int* _prn, uint32_t _length_out) } -void galileo_e1_sinboc_61_gen_int(int* _dest, int* _prn, uint32_t _length_out) +void galileo_e1_sinboc_61_gen_int(int* _dest, const int* _prn, uint32_t _length_out) { const uint32_t _length_in = Galileo_E1_B_CODE_LENGTH_CHIPS; - uint32_t _period = static_cast(_length_out / _length_in); + auto _period = static_cast(_length_out / _length_in); for (uint32_t i = 0; i < _length_in; i++) { @@ -108,7 +108,7 @@ void galileo_e1_sinboc_61_gen_int(int* _dest, int* _prn, uint32_t _length_out) void galileo_e1_code_gen_sinboc11_float(float* _dest, char _Signal[3], uint32_t _prn) { std::string _galileo_signal = _Signal; - const uint32_t _codeLength = static_cast(Galileo_E1_B_CODE_LENGTH_CHIPS); + const auto _codeLength = static_cast(Galileo_E1_B_CODE_LENGTH_CHIPS); int32_t primary_code_E1_chips[4092]; // _codeLength not accepted by Clang galileo_e1_code_gen_int(primary_code_E1_chips, _Signal, _prn); //generate Galileo E1 code, 1 sample per chip for (uint32_t i = 0; i < _codeLength; i++) @@ -159,8 +159,8 @@ void galileo_e1_code_gen_float_sampled(float* _dest, char _Signal[3], std::string _galileo_signal = _Signal; uint32_t _samplesPerCode; const int32_t _codeFreqBasis = Galileo_E1_CODE_CHIP_RATE_HZ; // Hz - uint32_t _codeLength = static_cast(Galileo_E1_B_CODE_LENGTH_CHIPS); - int32_t* primary_code_E1_chips = static_cast(volk_gnsssdr_malloc(static_cast(Galileo_E1_B_CODE_LENGTH_CHIPS) * sizeof(int32_t), volk_gnsssdr_get_alignment())); + auto _codeLength = static_cast(Galileo_E1_B_CODE_LENGTH_CHIPS); + auto* primary_code_E1_chips = static_cast(volk_gnsssdr_malloc(static_cast(Galileo_E1_B_CODE_LENGTH_CHIPS) * sizeof(int32_t), volk_gnsssdr_get_alignment())); _samplesPerCode = static_cast(static_cast(_fs) / (static_cast(_codeFreqBasis) / static_cast(_codeLength))); const int32_t _samplesPerChip = (_cboc == true) ? 12 : 2; @@ -180,7 +180,7 @@ void galileo_e1_code_gen_float_sampled(float* _dest, char _Signal[3], } else { - int32_t* _signal_E1_int = static_cast(volk_gnsssdr_malloc(_codeLength * sizeof(int32_t), volk_gnsssdr_get_alignment())); + auto* _signal_E1_int = static_cast(volk_gnsssdr_malloc(_codeLength * sizeof(int32_t), volk_gnsssdr_get_alignment())); galileo_e1_sinboc_11_gen_int(_signal_E1_int, primary_code_E1_chips, _codeLength); // generate sinboc(1,1) 2 samples per chip for (uint32_t ii = 0; ii < _codeLength; ++ii) @@ -192,7 +192,7 @@ void galileo_e1_code_gen_float_sampled(float* _dest, char _Signal[3], if (_fs != _samplesPerChip * _codeFreqBasis) { - float* _resampled_signal = new float[_samplesPerCode]; + auto* _resampled_signal = new float[_samplesPerCode]; resampler(_signal_E1, _resampled_signal, _samplesPerChip * _codeFreqBasis, _fs, _codeLength, _samplesPerCode); // resamples code to fs @@ -203,7 +203,7 @@ void galileo_e1_code_gen_float_sampled(float* _dest, char _Signal[3], if (_galileo_signal.rfind("1C") != std::string::npos && _galileo_signal.length() >= 2 && _secondary_flag) { - float* _signal_E1C_secondary = new float[static_cast(Galileo_E1_C_SECONDARY_CODE_LENGTH) * _samplesPerCode]; + auto* _signal_E1C_secondary = new float[static_cast(Galileo_E1_C_SECONDARY_CODE_LENGTH) * _samplesPerCode]; for (uint32_t i = 0; i < static_cast(Galileo_E1_C_SECONDARY_CODE_LENGTH); i++) { @@ -235,15 +235,15 @@ void galileo_e1_code_gen_complex_sampled(std::complex* _dest, char _Signa { std::string _galileo_signal = _Signal; const int32_t _codeFreqBasis = Galileo_E1_CODE_CHIP_RATE_HZ; // Hz - uint32_t _samplesPerCode = static_cast(static_cast(_fs) / - (static_cast(_codeFreqBasis) / static_cast(Galileo_E1_B_CODE_LENGTH_CHIPS))); + auto _samplesPerCode = static_cast(static_cast(_fs) / + (static_cast(_codeFreqBasis) / static_cast(Galileo_E1_B_CODE_LENGTH_CHIPS))); if (_galileo_signal.rfind("1C") != std::string::npos && _galileo_signal.length() >= 2 && _secondary_flag) { _samplesPerCode *= static_cast(Galileo_E1_C_SECONDARY_CODE_LENGTH); } - float* real_code = static_cast(volk_gnsssdr_malloc(_samplesPerCode * sizeof(float), volk_gnsssdr_get_alignment())); + auto* real_code = static_cast(volk_gnsssdr_malloc(_samplesPerCode * sizeof(float), volk_gnsssdr_get_alignment())); galileo_e1_code_gen_float_sampled(real_code, _Signal, _cboc, _prn, _fs, _chip_shift, _secondary_flag); diff --git a/src/algorithms/libs/galileo_e5_signal_processing.cc b/src/algorithms/libs/galileo_e5_signal_processing.cc index 82ef4ed54..baa91706f 100644 --- a/src/algorithms/libs/galileo_e5_signal_processing.cc +++ b/src/algorithms/libs/galileo_e5_signal_processing.cc @@ -37,7 +37,7 @@ #include -void galileo_e5_a_code_gen_complex_primary(std::complex* _dest, int32_t _prn, char _Signal[3]) +void galileo_e5_a_code_gen_complex_primary(std::complex* _dest, int32_t _prn, const char _Signal[3]) { uint32_t prn = _prn - 1; uint32_t index = 0; @@ -108,7 +108,7 @@ void galileo_e5_a_code_gen_complex_sampled(std::complex* _dest, char _Sig const uint32_t _codeLength = Galileo_E5a_CODE_LENGTH_CHIPS; const int32_t _codeFreqBasis = Galileo_E5a_CODE_CHIP_RATE_HZ; - std::complex* _code = new std::complex[_codeLength](); + auto* _code = new std::complex[_codeLength](); galileo_e5_a_code_gen_complex_primary(_code, _prn, _Signal); @@ -119,7 +119,7 @@ void galileo_e5_a_code_gen_complex_sampled(std::complex* _dest, char _Sig if (_fs != _codeFreqBasis) { std::complex* _resampled_signal; - if (posix_memalign((void**)&_resampled_signal, 16, _samplesPerCode * sizeof(gr_complex)) == 0) + if (posix_memalign(reinterpret_cast(&_resampled_signal), 16, _samplesPerCode * sizeof(gr_complex)) == 0) { }; resampler(_code, _resampled_signal, _codeFreqBasis, _fs, _codeLength, _samplesPerCode); // resamples code to fs diff --git a/src/algorithms/libs/galileo_e5_signal_processing.h b/src/algorithms/libs/galileo_e5_signal_processing.h index 46deaae24..7a7dfc8cc 100644 --- a/src/algorithms/libs/galileo_e5_signal_processing.h +++ b/src/algorithms/libs/galileo_e5_signal_processing.h @@ -42,7 +42,7 @@ * \brief Generates Galileo E5a code at 1 sample/chip * bool _pilot generates E5aQ code if true and E5aI (data signal) if false. */ -void galileo_e5_a_code_gen_complex_primary(std::complex* _dest, int32_t _prn, char _Signal[3]); +void galileo_e5_a_code_gen_complex_primary(std::complex* _dest, int32_t _prn, const char _Signal[3]); void galileo_e5_a_code_gen_tiered(std::complex* _dest, std::complex* _primary, uint32_t _prn, char _Signal[3]); diff --git a/src/algorithms/libs/glonass_l1_signal_processing.cc b/src/algorithms/libs/glonass_l1_signal_processing.cc index 045b53626..8707985b4 100644 --- a/src/algorithms/libs/glonass_l1_signal_processing.cc +++ b/src/algorithms/libs/glonass_l1_signal_processing.cc @@ -46,7 +46,7 @@ void glonass_l1_ca_code_gen_complex(std::complex* _dest, /* int32_t _prn for (lcv = 0; lcv < 9; lcv++) { - G1_register[lcv] = 1; + G1_register[lcv] = true; } /* Generate G1 Register */ diff --git a/src/algorithms/libs/glonass_l2_signal_processing.cc b/src/algorithms/libs/glonass_l2_signal_processing.cc index f486429e1..491b0e735 100644 --- a/src/algorithms/libs/glonass_l2_signal_processing.cc +++ b/src/algorithms/libs/glonass_l2_signal_processing.cc @@ -46,7 +46,7 @@ void glonass_l2_ca_code_gen_complex(std::complex* _dest, /* int32_t _prn, for (lcv = 0; lcv < 9; lcv++) { - G1_register[lcv] = 1; + G1_register[lcv] = true; } /* Generate G1 Register */ diff --git a/src/algorithms/libs/gnss_circular_deque.h b/src/algorithms/libs/gnss_circular_deque.h index 030044f91..23d89752b 100644 --- a/src/algorithms/libs/gnss_circular_deque.h +++ b/src/algorithms/libs/gnss_circular_deque.h @@ -33,8 +33,9 @@ #ifndef GNSS_SDR_CIRCULAR_DEQUE_H_ #define GNSS_SDR_CIRCULAR_DEQUE_H_ -#include + #include +#include template class Gnss_circular_deque diff --git a/src/algorithms/libs/gnss_sdr_create_directory.cc b/src/algorithms/libs/gnss_sdr_create_directory.cc index 3a880143b..d0af41952 100644 --- a/src/algorithms/libs/gnss_sdr_create_directory.cc +++ b/src/algorithms/libs/gnss_sdr_create_directory.cc @@ -79,9 +79,7 @@ bool gnss_sdr_create_directory(const std::string& foldername) } return true; } - else - { - os_test_file.close(); - return false; - } + + os_test_file.close(); + return false; } diff --git a/src/algorithms/libs/gnss_sdr_flags.cc b/src/algorithms/libs/gnss_sdr_flags.cc index a43351916..3eba67822 100644 --- a/src/algorithms/libs/gnss_sdr_flags.cc +++ b/src/algorithms/libs/gnss_sdr_flags.cc @@ -69,7 +69,7 @@ DEFINE_double(pll_bw_hz, 0.0, "If defined, bandwidth of the PLL low pass filter, static bool ValidateC(const char* flagname, const std::string& value) { - if (boost::filesystem::exists(value) or value.compare("-") == 0) // value is ok + if (boost::filesystem::exists(value) or value == "-") // value is ok return true; std::cout << "Invalid value for flag -" << flagname << ". The file '" << value << "' does not exist." << std::endl; std::cout << "GNSS-SDR program ended." << std::endl; @@ -78,7 +78,7 @@ static bool ValidateC(const char* flagname, const std::string& value) static bool ValidateConfigFile(const char* flagname, const std::string& value) { - if (boost::filesystem::exists(value) or value.compare(std::string(GNSSSDR_INSTALL_DIR "/share/gnss-sdr/conf/default.conf")) == 0) // value is ok + if (boost::filesystem::exists(value) or value == std::string(GNSSSDR_INSTALL_DIR "/share/gnss-sdr/conf/default.conf")) // value is ok return true; std::cout << "Invalid value for flag -" << flagname << ". The file '" << value << "' does not exist." << std::endl; std::cout << "GNSS-SDR program ended." << std::endl; @@ -87,7 +87,7 @@ static bool ValidateConfigFile(const char* flagname, const std::string& value) static bool ValidateS(const char* flagname, const std::string& value) { - if (boost::filesystem::exists(value) or value.compare("-") == 0) // value is ok + if (boost::filesystem::exists(value) or value == "-") // value is ok return true; std::cout << "Invalid value for flag -" << flagname << ". The file '" << value << "' does not exist." << std::endl; std::cout << "GNSS-SDR program ended." << std::endl; @@ -96,7 +96,7 @@ static bool ValidateS(const char* flagname, const std::string& value) static bool ValidateSignalSource(const char* flagname, const std::string& value) { - if (boost::filesystem::exists(value) or value.compare("-") == 0) // value is ok + if (boost::filesystem::exists(value) or value == "-") // value is ok return true; std::cout << "Invalid value for flag -" << flagname << ". The file '" << value << "' does not exist." << std::endl; std::cout << "GNSS-SDR program ended." << std::endl; diff --git a/src/algorithms/libs/gnss_sdr_fpga_sample_counter.cc b/src/algorithms/libs/gnss_sdr_fpga_sample_counter.cc index 727de7521..94eb8e294 100644 --- a/src/algorithms/libs/gnss_sdr_fpga_sample_counter.cc +++ b/src/algorithms/libs/gnss_sdr_fpga_sample_counter.cc @@ -31,22 +31,23 @@ #include "gnss_sdr_fpga_sample_counter.h" #include "gnss_synchro.h" +#include #include +#include #include +#include // libraries used by the GIPO #include #include -#include -#include // libraries used by the GIPO #include // libraries used by the GIPO -#include +#define PAGE_SIZE 0x10000 // default page size for the multicorrelator memory map +#define TEST_REG_SANITY_CHECK 0x55AA // value to check the presence of the test register (to detect the hw) -#define PAGE_SIZE 0x10000 // default page size for the multicorrelator memory map -#define TEST_REG_SANITY_CHECK 0x55AA // value to check the presence of the test register (to detect the hw) - -gnss_sdr_fpga_sample_counter::gnss_sdr_fpga_sample_counter(double _fs, int32_t _interval_ms) : gr::block("fpga_fpga_sample_counter", - gr::io_signature::make(0, 0, 0), - gr::io_signature::make(1, 1, sizeof(Gnss_Synchro))) +gnss_sdr_fpga_sample_counter::gnss_sdr_fpga_sample_counter( + double _fs, + int32_t _interval_ms) : gr::block("fpga_fpga_sample_counter", + gr::io_signature::make(0, 0, 0), + gr::io_signature::make(1, 1, sizeof(Gnss_Synchro))) { message_port_register_out(pmt::mp("fpga_sample_counter")); set_max_noutput_items(1); @@ -88,10 +89,10 @@ bool gnss_sdr_fpga_sample_counter::start() { //todo: place here the RE-INITIALIZATION routines. This function will be called by GNURadio at every start of the flowgraph. - // configure the number of samples per output in the FPGA and enable the interrupts + // configure the number of samples per output in the FPGA and enable the interrupts configure_samples_per_output(samples_per_output); - // return true if everything is ok. + // return true if everything is ok. return true; } @@ -101,7 +102,7 @@ bool gnss_sdr_fpga_sample_counter::stop() { //todo: place here the routines to stop the associated hardware (if needed).This function will be called by GNURadio at every stop of the flowgraph. // return true if everything is ok. - close_device(); + close_device(); return true; } @@ -119,16 +120,16 @@ int gnss_sdr_fpga_sample_counter::general_work(int noutput_items __attribute__(( // Possible problem: what happen if the PS is overloaded and gnuradio does not call this function // with the sufficient rate to catch all the interrupts in the counter. To be evaluated later. - uint32_t counter = wait_for_interrupt_and_read_counter(); - uint64_t samples_passed = 2*static_cast(samples_per_output) - static_cast(counter); // ellapsed samples - //printf("============================================ interrupter : samples_passed = %" PRIu64 "\n", samples_passed); - // Note: at this moment the sample counter is implemented as a sample counter that decreases to zero and then it is automatically - // reloaded again and keeps counter. It is done in this way to minimize the logic in the FPGA and maximize the FPGA clock performance - // (it takes less resources and latency in the FPGA to compare a number against a fixed value like zero than to compare it to a programmable - // variable number). + uint32_t counter = wait_for_interrupt_and_read_counter(); + uint64_t samples_passed = 2 * static_cast(samples_per_output) - static_cast(counter); // ellapsed samples + //printf("============================================ interrupter : samples_passed = %" PRIu64 "\n", samples_passed); + // Note: at this moment the sample counter is implemented as a sample counter that decreases to zero and then it is automatically + // reloaded again and keeps counter. It is done in this way to minimize the logic in the FPGA and maximize the FPGA clock performance + // (it takes less resources and latency in the FPGA to compare a number against a fixed value like zero than to compare it to a programmable + // variable number). - sample_counter = sample_counter + samples_passed; //samples_per_output; - Gnss_Synchro *out = reinterpret_cast(output_items[0]); + sample_counter = sample_counter + samples_passed; //samples_per_output; + auto *out = reinterpret_cast(output_items[0]); out[0] = Gnss_Synchro(); out[0].Flag_valid_symbol_output = false; out[0].Flag_valid_word = false; @@ -136,11 +137,11 @@ int gnss_sdr_fpga_sample_counter::general_work(int noutput_items __attribute__(( out[0].fs = fs; if ((current_T_rx_ms % report_interval_ms) == 0) { - //printf("time to print sample_counter = %" PRIu64 "\n", sample_counter); - //printf("time to print current Tx ms : %" PRIu64 "\n", current_T_rx_ms); - //printf("time to print report_interval_ms : %" PRIu32 "\n", report_interval_ms); - //printf("time to print %f\n", (current_T_rx_ms % report_interval_ms)); - current_s++; + //printf("time to print sample_counter = %" PRIu64 "\n", sample_counter); + //printf("time to print current Tx ms : %" PRIu64 "\n", current_T_rx_ms); + //printf("time to print report_interval_ms : %" PRIu32 "\n", report_interval_ms); + //printf("time to print %f\n", (current_T_rx_ms % report_interval_ms)); + current_s++; if ((current_s % 60) == 0) { current_s = 0; @@ -198,7 +199,7 @@ int gnss_sdr_fpga_sample_counter::general_work(int noutput_items __attribute__(( } out[0].Tracking_sample_counter = sample_counter; //current_T_rx_ms = (sample_counter * 1000) / samples_per_output; - current_T_rx_ms = interval_ms*(sample_counter) / samples_per_output; + current_T_rx_ms = interval_ms * (sample_counter) / samples_per_output; return 1; } @@ -215,16 +216,16 @@ uint32_t gnss_sdr_fpga_sample_counter::test_register(uint32_t writeval) void gnss_sdr_fpga_sample_counter::configure_samples_per_output(uint32_t interval) { - // note : the counter is a 48-bit value in the HW. - //printf("============================================ total counter - interrupted interval : %" PRIu32 "\n", interval); - //uint64_t temp_interval; - //temp_interval = (interval & static_cast(0xFFFFFFFF)); - //printf("LSW counter - interrupted interval : %" PRIu32 "\n", static_cast(temp_interval)); - //map_base[0] = static_cast(temp_interval); - map_base[0] = interval - 1; - //temp_interval = (interval >> 32) & static_cast(0xFFFFFFFF); - //printf("MSbits counter - interrupted interval : %" PRIu32 "\n", static_cast(temp_interval)); - //map_base[1] = static_cast(temp_interval); // writing the most significant bits also enables the interrupts + // note : the counter is a 48-bit value in the HW. + //printf("============================================ total counter - interrupted interval : %" PRIu32 "\n", interval); + //uint64_t temp_interval; + //temp_interval = (interval & static_cast(0xFFFFFFFF)); + //printf("LSW counter - interrupted interval : %" PRIu32 "\n", static_cast(temp_interval)); + //map_base[0] = static_cast(temp_interval); + map_base[0] = interval - 1; + //temp_interval = (interval >> 32) & static_cast(0xFFFFFFFF); + //printf("MSbits counter - interrupted interval : %" PRIu32 "\n", static_cast(temp_interval)); + //map_base[1] = static_cast(temp_interval); // writing the most significant bits also enables the interrupts } void gnss_sdr_fpga_sample_counter::open_device() @@ -235,7 +236,7 @@ void gnss_sdr_fpga_sample_counter::open_device() LOG(WARNING) << "Cannot open deviceio" << device_name; std::cout << "Counter-Intr: cannot open deviceio" << device_name << std::endl; } - map_base = reinterpret_cast(mmap(NULL, PAGE_SIZE, + map_base = reinterpret_cast(mmap(nullptr, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0)); if (map_base == reinterpret_cast(-1)) @@ -261,10 +262,10 @@ void gnss_sdr_fpga_sample_counter::open_device() void gnss_sdr_fpga_sample_counter::close_device() { - //printf("=========================================== NOW closing device ...\n"); - map_base[2] = 0; // disable the generation of the interrupt in the device + //printf("=========================================== NOW closing device ...\n"); + map_base[2] = 0; // disable the generation of the interrupt in the device - uint32_t *aux = const_cast(map_base); + auto *aux = const_cast(map_base); if (munmap(static_cast(aux), PAGE_SIZE) == -1) { printf("Failed to unmap memory uio\n"); @@ -294,12 +295,9 @@ uint32_t gnss_sdr_fpga_sample_counter::wait_for_interrupt_and_read_counter() } // acknowledge the interrupt - map_base[1] = 0; // writing anything to reg 1 acknowledges the interrupt + map_base[1] = 0; // writing anything to reg 1 acknowledges the interrupt // add number of passed samples or read the current counter value for more accuracy - counter = samples_per_output; //map_base[0]; + counter = samples_per_output; //map_base[0]; return counter; - } - - diff --git a/src/algorithms/libs/gnss_sdr_fpga_sample_counter.h b/src/algorithms/libs/gnss_sdr_fpga_sample_counter.h index e02320afc..75b924e72 100644 --- a/src/algorithms/libs/gnss_sdr_fpga_sample_counter.h +++ b/src/algorithms/libs/gnss_sdr_fpga_sample_counter.h @@ -31,8 +31,8 @@ #ifndef GNSS_SDR_FPGA_sample_counter_H_ #define GNSS_SDR_FPGA_sample_counter_H_ -#include #include +#include #include class gnss_sdr_fpga_sample_counter; @@ -57,18 +57,18 @@ private: uint64_t sample_counter; uint32_t interval_ms; uint64_t current_T_rx_ms; // Receiver time in ms since the beginning of the run - uint32_t current_s; // Receiver time in seconds, modulo 60 - bool flag_m; // True if the receiver has been running for at least 1 minute - uint32_t current_m; // Receiver time in minutes, modulo 60 - bool flag_h; // True if the receiver has been running for at least 1 hour - uint32_t current_h; // Receiver time in hours, modulo 24 - bool flag_days; // True if the receiver has been running for at least 1 day - uint32_t current_days; // Receiver time in days since the beginning of the run + uint32_t current_s; // Receiver time in seconds, modulo 60 + bool flag_m; // True if the receiver has been running for at least 1 minute + uint32_t current_m; // Receiver time in minutes, modulo 60 + bool flag_h; // True if the receiver has been running for at least 1 hour + uint32_t current_h; // Receiver time in hours, modulo 24 + bool flag_days; // True if the receiver has been running for at least 1 day + uint32_t current_days; // Receiver time in days since the beginning of the run int32_t report_interval_ms; bool flag_enable_send_msg; - int32_t fd; // driver descriptor - volatile uint32_t *map_base; // driver memory map - std::string device_name = "/dev/uio26"; // HW device name + int32_t fd; // driver descriptor + volatile uint32_t *map_base; // driver memory map + std::string device_name = "/dev/uio26"; // HW device name public: friend gnss_sdr_fpga_sample_counter_sptr gnss_sdr_make_fpga_sample_counter(double _fs, int32_t _interval_ms); diff --git a/src/algorithms/libs/gnss_sdr_sample_counter.cc b/src/algorithms/libs/gnss_sdr_sample_counter.cc index 9fdc7e00e..e7d939582 100644 --- a/src/algorithms/libs/gnss_sdr_sample_counter.cc +++ b/src/algorithms/libs/gnss_sdr_sample_counter.cc @@ -36,10 +36,13 @@ #include #include -gnss_sdr_sample_counter::gnss_sdr_sample_counter(double _fs, int32_t _interval_ms, size_t _size) : gr::sync_decimator("sample_counter", - gr::io_signature::make(1, 1, _size), - gr::io_signature::make(1, 1, sizeof(Gnss_Synchro)), - static_cast(std::round(_fs * static_cast(_interval_ms) / 1e3))) +gnss_sdr_sample_counter::gnss_sdr_sample_counter( + double _fs, + int32_t _interval_ms, + size_t _size) : gr::sync_decimator("sample_counter", + gr::io_signature::make(1, 1, _size), + gr::io_signature::make(1, 1, sizeof(Gnss_Synchro)), + static_cast(std::round(_fs * static_cast(_interval_ms) / 1e3))) { message_port_register_out(pmt::mp("sample_counter")); set_max_noutput_items(1); @@ -71,7 +74,7 @@ int gnss_sdr_sample_counter::work(int noutput_items __attribute__((unused)), gr_vector_const_void_star &input_items __attribute__((unused)), gr_vector_void_star &output_items) { - Gnss_Synchro *out = reinterpret_cast(output_items[0]); + auto *out = reinterpret_cast(output_items[0]); out[0] = Gnss_Synchro(); out[0].Flag_valid_symbol_output = false; out[0].Flag_valid_word = false; diff --git a/src/algorithms/libs/gnss_sdr_sample_counter.h b/src/algorithms/libs/gnss_sdr_sample_counter.h index 90c05cb28..8a645d9f3 100644 --- a/src/algorithms/libs/gnss_sdr_sample_counter.h +++ b/src/algorithms/libs/gnss_sdr_sample_counter.h @@ -31,8 +31,8 @@ #ifndef GNSS_SDR_SAMPLE_COUNTER_H_ #define GNSS_SDR_SAMPLE_COUNTER_H_ -#include #include +#include #include @@ -40,7 +40,10 @@ class gnss_sdr_sample_counter; typedef boost::shared_ptr gnss_sdr_sample_counter_sptr; -gnss_sdr_sample_counter_sptr gnss_sdr_make_sample_counter(double _fs, int32_t _interval_ms, size_t _size); +gnss_sdr_sample_counter_sptr gnss_sdr_make_sample_counter( + double _fs, + int32_t _interval_ms, + size_t _size); class gnss_sdr_sample_counter : public gr::sync_decimator { diff --git a/src/algorithms/libs/gnss_sdr_time_counter.cc b/src/algorithms/libs/gnss_sdr_time_counter.cc index a4874ac4b..0cd06517b 100644 --- a/src/algorithms/libs/gnss_sdr_time_counter.cc +++ b/src/algorithms/libs/gnss_sdr_time_counter.cc @@ -61,10 +61,10 @@ gnss_sdr_time_counter_sptr gnss_sdr_make_time_counter() int gnss_sdr_time_counter::general_work(int noutput_items __attribute__((unused)), gr_vector_int &ninput_items __attribute__((unused)), - gr_vector_const_void_star &input_items __attribute__((unused)), gr_vector_void_star &output_items) + gr_vector_const_void_star &input_items __attribute__((unused)), gr_vector_void_star &output_items) { - Gnss_Synchro *out = reinterpret_cast(output_items[0]); - const Gnss_Synchro *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); out[0] = in[0]; if ((current_T_rx_ms % report_interval_ms) == 0) { diff --git a/src/algorithms/libs/gnss_sdr_time_counter.h b/src/algorithms/libs/gnss_sdr_time_counter.h index 12cc8094b..870f6717c 100644 --- a/src/algorithms/libs/gnss_sdr_time_counter.h +++ b/src/algorithms/libs/gnss_sdr_time_counter.h @@ -31,8 +31,8 @@ #ifndef GNSS_SDR_TIME_COUNTER_H_ #define GNSS_SDR_TIME_COUNTER_H_ -#include #include +#include #include class gnss_sdr_time_counter; diff --git a/src/algorithms/libs/gnss_sdr_valve.cc b/src/algorithms/libs/gnss_sdr_valve.cc index c8d0e1385..b613f3e2b 100644 --- a/src/algorithms/libs/gnss_sdr_valve.cc +++ b/src/algorithms/libs/gnss_sdr_valve.cc @@ -37,32 +37,33 @@ #include #include // for min #include // for memcpy +#include gnss_sdr_valve::gnss_sdr_valve(size_t sizeof_stream_item, - unsigned long long nitems, + uint64_t nitems, gr::msg_queue::sptr queue, bool stop_flowgraph) : gr::sync_block("valve", gr::io_signature::make(1, 1, sizeof_stream_item), gr::io_signature::make(1, 1, sizeof_stream_item)), d_nitems(nitems), d_ncopied_items(0), - d_queue(queue), + d_queue(std::move(queue)), d_stop_flowgraph(stop_flowgraph) { d_open_valve = false; } -boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, unsigned long long nitems, gr::msg_queue::sptr queue, bool stop_flowgraph) +boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, gr::msg_queue::sptr queue, bool stop_flowgraph) { - boost::shared_ptr valve_(new gnss_sdr_valve(sizeof_stream_item, nitems, queue, stop_flowgraph)); + boost::shared_ptr valve_(new gnss_sdr_valve(sizeof_stream_item, nitems, std::move(queue), stop_flowgraph)); return valve_; } -boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, unsigned long long nitems, gr::msg_queue::sptr queue) +boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, gr::msg_queue::sptr queue) { - boost::shared_ptr valve_(new gnss_sdr_valve(sizeof_stream_item, nitems, queue, true)); + boost::shared_ptr valve_(new gnss_sdr_valve(sizeof_stream_item, nitems, std::move(queue), true)); return valve_; } @@ -81,7 +82,7 @@ int gnss_sdr_valve::work(int noutput_items, { if (d_ncopied_items >= d_nitems) { - ControlMessageFactory *cmf = new ControlMessageFactory(); + auto *cmf = new ControlMessageFactory(); d_queue->handle(cmf->GetQueueMessage(200, 0)); LOG(INFO) << "Stopping receiver, " << d_ncopied_items << " samples processed"; delete cmf; @@ -89,21 +90,16 @@ int gnss_sdr_valve::work(int noutput_items, { return -1; // Done! } - else - { - usleep(1000000); - return 0; // do not produce or consume - } + usleep(1000000); + return 0; // do not produce or consume } - unsigned long long n = std::min(d_nitems - d_ncopied_items, static_cast(noutput_items)); + uint64_t n = std::min(d_nitems - d_ncopied_items, static_cast(noutput_items)); if (n == 0) return 0; memcpy(output_items[0], input_items[0], n * input_signature()->sizeof_stream_item(0)); d_ncopied_items += n; return n; } - else - { - memcpy(output_items[0], input_items[0], noutput_items * input_signature()->sizeof_stream_item(0)); - return noutput_items; - } + + memcpy(output_items[0], input_items[0], noutput_items * input_signature()->sizeof_stream_item(0)); + return noutput_items; } diff --git a/src/algorithms/libs/gnss_sdr_valve.h b/src/algorithms/libs/gnss_sdr_valve.h index 8fe7140b6..19c104b99 100644 --- a/src/algorithms/libs/gnss_sdr_valve.h +++ b/src/algorithms/libs/gnss_sdr_valve.h @@ -34,16 +34,17 @@ #ifndef GNSS_SDR_GNSS_SDR_VALVE_H_ #define GNSS_SDR_GNSS_SDR_VALVE_H_ -#include -#include #include +#include +#include +#include boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, - unsigned long long nitems, + uint64_t nitems, gr::msg_queue::sptr queue); boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, - unsigned long long nitems, + uint64_t nitems, gr::msg_queue::sptr queue, bool stop_flowgraph); @@ -54,22 +55,22 @@ boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, class gnss_sdr_valve : public gr::sync_block { friend boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, - unsigned long long nitems, + uint64_t nitems, gr::msg_queue::sptr queue); friend boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, - unsigned long long nitems, + uint64_t nitems, gr::msg_queue::sptr queue, bool stop_flowgraph); - unsigned long long d_nitems; - unsigned long long d_ncopied_items; + uint64_t d_nitems; + uint64_t d_ncopied_items; gr::msg_queue::sptr d_queue; bool d_stop_flowgraph; bool d_open_valve; public: gnss_sdr_valve(size_t sizeof_stream_item, - unsigned long long nitems, + uint64_t nitems, gr::msg_queue::sptr queue, bool stop_flowgraph); void open_valve(); diff --git a/src/algorithms/libs/gps_l2c_signal.cc b/src/algorithms/libs/gps_l2c_signal.cc index 4f41e620f..b3b20be20 100644 --- a/src/algorithms/libs/gps_l2c_signal.cc +++ b/src/algorithms/libs/gps_l2c_signal.cc @@ -55,7 +55,7 @@ void gps_l2c_m_code(int32_t* _dest, uint32_t _prn) void gps_l2c_m_code_gen_complex(std::complex* _dest, uint32_t _prn) { - int32_t* _code = new int32_t[GPS_L2_M_CODE_LENGTH_CHIPS]; + auto* _code = new int32_t[GPS_L2_M_CODE_LENGTH_CHIPS]; if (_prn > 0 and _prn < 51) { @@ -73,7 +73,7 @@ void gps_l2c_m_code_gen_complex(std::complex* _dest, uint32_t _prn) void gps_l2c_m_code_gen_float(float* _dest, uint32_t _prn) { - int32_t* _code = new int32_t[GPS_L2_M_CODE_LENGTH_CHIPS]; + auto* _code = new int32_t[GPS_L2_M_CODE_LENGTH_CHIPS]; if (_prn > 0 and _prn < 51) { @@ -94,7 +94,7 @@ void gps_l2c_m_code_gen_float(float* _dest, uint32_t _prn) */ void gps_l2c_m_code_gen_complex_sampled(std::complex* _dest, uint32_t _prn, int32_t _fs) { - int32_t* _code = new int32_t[GPS_L2_M_CODE_LENGTH_CHIPS]; + auto* _code = new int32_t[GPS_L2_M_CODE_LENGTH_CHIPS]; if (_prn > 0 and _prn < 51) { gps_l2c_m_code(_code, _prn); diff --git a/src/algorithms/libs/gps_l5_signal.cc b/src/algorithms/libs/gps_l5_signal.cc index 26656d569..198aa27af 100644 --- a/src/algorithms/libs/gps_l5_signal.cc +++ b/src/algorithms/libs/gps_l5_signal.cc @@ -40,31 +40,25 @@ std::deque l5i_xa_shift(std::deque xa) { - if (xa == std::deque{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1}) + if (xa == std::deque{true, true, true, true, true, true, true, true, true, true, true, false, true}) { - return std::deque{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; - } - else - { - std::deque out(xa.begin(), xa.end() - 1); - out.push_front(xa[12] xor xa[11] xor xa[9] xor xa[8]); - return out; + return std::deque{true, true, true, true, true, true, true, true, true, true, true, true, true}; } + std::deque out(xa.begin(), xa.end() - 1); + out.push_front(xa[12] xor xa[11] xor xa[9] xor xa[8]); + return out; } std::deque l5q_xa_shift(std::deque xa) { - if (xa == std::deque{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1}) + if (xa == std::deque{true, true, true, true, true, true, true, true, true, true, true, false, true}) { - return std::deque{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; - } - else - { - std::deque out(xa.begin(), xa.end() - 1); - out.push_front(xa[12] xor xa[11] xor xa[9] xor xa[8]); - return out; + return std::deque{true, true, true, true, true, true, true, true, true, true, true, true, true}; } + std::deque out(xa.begin(), xa.end() - 1); + out.push_front(xa[12] xor xa[11] xor xa[9] xor xa[8]); + return out; } @@ -86,8 +80,8 @@ std::deque l5q_xb_shift(std::deque xb) std::deque make_l5i_xa() { - std::deque xa = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; - std::deque y(GPS_L5i_CODE_LENGTH_CHIPS, 0); + std::deque xa = {true, true, true, true, true, true, true, true, true, true, true, true, true}; + std::deque y(GPS_L5i_CODE_LENGTH_CHIPS, false); for (int32_t i = 0; i < GPS_L5i_CODE_LENGTH_CHIPS; i++) { @@ -100,8 +94,8 @@ std::deque make_l5i_xa() std::deque make_l5i_xb() { - std::deque xb = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; - std::deque y(GPS_L5i_CODE_LENGTH_CHIPS, 0); + std::deque xb = {true, true, true, true, true, true, true, true, true, true, true, true, true}; + std::deque y(GPS_L5i_CODE_LENGTH_CHIPS, false); for (int32_t i = 0; i < GPS_L5i_CODE_LENGTH_CHIPS; i++) { @@ -114,8 +108,8 @@ std::deque make_l5i_xb() std::deque make_l5q_xa() { - std::deque xa = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; - std::deque y(GPS_L5q_CODE_LENGTH_CHIPS, 0); + std::deque xa = {true, true, true, true, true, true, true, true, true, true, true, true, true}; + std::deque y(GPS_L5q_CODE_LENGTH_CHIPS, false); for (int32_t i = 0; i < GPS_L5q_CODE_LENGTH_CHIPS; i++) { @@ -128,8 +122,8 @@ std::deque make_l5q_xa() std::deque make_l5q_xb() { - std::deque xb = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; - std::deque y(GPS_L5q_CODE_LENGTH_CHIPS, 0); + std::deque xb = {true, true, true, true, true, true, true, true, true, true, true, true, true}; + std::deque y(GPS_L5q_CODE_LENGTH_CHIPS, false); for (int32_t i = 0; i < GPS_L5q_CODE_LENGTH_CHIPS; i++) { @@ -146,13 +140,13 @@ void make_l5i(int32_t* _dest, int32_t prn) std::deque xb = make_l5i_xb(); std::deque xa = make_l5i_xa(); - std::deque xb_shift(GPS_L5i_CODE_LENGTH_CHIPS, 0); + std::deque xb_shift(GPS_L5i_CODE_LENGTH_CHIPS, false); for (int32_t n = 0; n < GPS_L5i_CODE_LENGTH_CHIPS; n++) { xb_shift[n] = xb[(xb_offset + n) % GPS_L5i_CODE_LENGTH_CHIPS]; } - std::deque out_code(GPS_L5i_CODE_LENGTH_CHIPS, 0); + std::deque out_code(GPS_L5i_CODE_LENGTH_CHIPS, false); for (int32_t n = 0; n < GPS_L5i_CODE_LENGTH_CHIPS; n++) { _dest[n] = xa[n] xor xb_shift[n]; @@ -166,13 +160,13 @@ void make_l5q(int32_t* _dest, int32_t prn) std::deque xb = make_l5q_xb(); std::deque xa = make_l5q_xa(); - std::deque xb_shift(GPS_L5q_CODE_LENGTH_CHIPS, 0); + std::deque xb_shift(GPS_L5q_CODE_LENGTH_CHIPS, false); for (int32_t n = 0; n < GPS_L5q_CODE_LENGTH_CHIPS; n++) { xb_shift[n] = xb[(xb_offset + n) % GPS_L5q_CODE_LENGTH_CHIPS]; } - std::deque out_code(GPS_L5q_CODE_LENGTH_CHIPS, 0); + std::deque out_code(GPS_L5q_CODE_LENGTH_CHIPS, false); for (int32_t n = 0; n < GPS_L5q_CODE_LENGTH_CHIPS; n++) { _dest[n] = xa[n] xor xb_shift[n]; @@ -182,7 +176,7 @@ void make_l5q(int32_t* _dest, int32_t prn) void gps_l5i_code_gen_complex(std::complex* _dest, uint32_t _prn) { - int32_t* _code = new int32_t[GPS_L5i_CODE_LENGTH_CHIPS]; + auto* _code = new int32_t[GPS_L5i_CODE_LENGTH_CHIPS]; if (_prn > 0 and _prn < 51) { @@ -200,7 +194,7 @@ void gps_l5i_code_gen_complex(std::complex* _dest, uint32_t _prn) void gps_l5i_code_gen_float(float* _dest, uint32_t _prn) { - int32_t* _code = new int32_t[GPS_L5i_CODE_LENGTH_CHIPS]; + auto* _code = new int32_t[GPS_L5i_CODE_LENGTH_CHIPS]; if (_prn > 0 and _prn < 51) { @@ -221,7 +215,7 @@ void gps_l5i_code_gen_float(float* _dest, uint32_t _prn) */ void gps_l5i_code_gen_complex_sampled(std::complex* _dest, uint32_t _prn, int32_t _fs) { - int32_t* _code = new int32_t[GPS_L5i_CODE_LENGTH_CHIPS]; + auto* _code = new int32_t[GPS_L5i_CODE_LENGTH_CHIPS]; if (_prn > 0 and _prn < 51) { make_l5i(_code, _prn - 1); @@ -267,7 +261,7 @@ void gps_l5i_code_gen_complex_sampled(std::complex* _dest, uint32_t _prn, void gps_l5q_code_gen_complex(std::complex* _dest, uint32_t _prn) { - int32_t* _code = new int32_t[GPS_L5q_CODE_LENGTH_CHIPS]; + auto* _code = new int32_t[GPS_L5q_CODE_LENGTH_CHIPS]; if (_prn > 0 and _prn < 51) { @@ -285,7 +279,7 @@ void gps_l5q_code_gen_complex(std::complex* _dest, uint32_t _prn) void gps_l5q_code_gen_float(float* _dest, uint32_t _prn) { - int32_t* _code = new int32_t[GPS_L5q_CODE_LENGTH_CHIPS]; + auto* _code = new int32_t[GPS_L5q_CODE_LENGTH_CHIPS]; if (_prn > 0 and _prn < 51) { @@ -306,7 +300,7 @@ void gps_l5q_code_gen_float(float* _dest, uint32_t _prn) */ void gps_l5q_code_gen_complex_sampled(std::complex* _dest, uint32_t _prn, int32_t _fs) { - int32_t* _code = new int32_t[GPS_L5q_CODE_LENGTH_CHIPS]; + auto* _code = new int32_t[GPS_L5q_CODE_LENGTH_CHIPS]; if (_prn > 0 and _prn < 51) { make_l5q(_code, _prn - 1); diff --git a/src/algorithms/libs/gps_sdr_signal_processing.cc b/src/algorithms/libs/gps_sdr_signal_processing.cc index db3c33eff..e87593f6e 100644 --- a/src/algorithms/libs/gps_sdr_signal_processing.cc +++ b/src/algorithms/libs/gps_sdr_signal_processing.cc @@ -68,8 +68,8 @@ void gps_l1_ca_code_gen_int(int32_t* _dest, int32_t _prn, uint32_t _chip_shift) for (lcv = 0; lcv < 10; lcv++) { - G1_register[lcv] = 1; - G2_register[lcv] = 1; + G1_register[lcv] = true; + G2_register[lcv] = true; } /* Generate G1 & G2 Register */ diff --git a/src/algorithms/libs/opencl/cl.hpp b/src/algorithms/libs/opencl/cl.hpp index 62ba50cfc..b10828523 100644 --- a/src/algorithms/libs/opencl/cl.hpp +++ b/src/algorithms/libs/opencl/cl.hpp @@ -23,15 +23,15 @@ /*! \file * - * \brief C++ bindings for OpenCL 1.0 (rev 48), OpenCL 1.1 (rev 33) and - * OpenCL 1.2 (rev 15) + * \brief C++ bindings for OpenCL 1.0 (rev 48), OpenCL 1.1 (rev 33) and + * OpenCL 1.2 (rev 15) * \author Benedict R. Gaster, Laurent Morichetti and Lee Howes - * + * * Additions and fixes from: - * Brian Cole, March 3rd 2010 and April 2012 + * Brian Cole, March 3rd 2010 and April 2012 * Matt Gruenke, April 2012. * Bruce Merry, February 2013. - * + * * \version 1.2.5 * \date June 2013 * @@ -71,7 +71,7 @@ * * \code * #define __CL_ENABLE_EXCEPTIONS - * + * * #if defined(__APPLE__) || defined(__MACOSX) * #include * #else @@ -80,13 +80,13 @@ * #include * #include * #include - * + * * const char * helloStr = "__kernel void " * "hello(void) " * "{ " * " " * "} "; - * + * * int * main(void) * { @@ -100,33 +100,33 @@ * return -1; * } * - * cl_context_properties properties[] = + * cl_context_properties properties[] = * { CL_CONTEXT_PLATFORM, (cl_context_properties)(platforms[0])(), 0}; - * cl::Context context(CL_DEVICE_TYPE_CPU, properties); - * + * cl::Context context(CL_DEVICE_TYPE_CPU, properties); + * * std::vector devices = context.getInfo(); - * + * * cl::Program::Sources source(1, * std::make_pair(helloStr,strlen(helloStr))); * cl::Program program_ = cl::Program(context, source); * program_.build(devices); - * + * * cl::Kernel kernel(program_, "hello", &err); - * + * * cl::Event event; * cl::CommandQueue queue(context, devices[0], 0, &err); * queue.enqueueNDRangeKernel( - * kernel, - * cl::NullRange, + * kernel, + * cl::NullRange, * cl::NDRange(4,4), * cl::NullRange, * NULL, - * &event); - * + * &event); + * * event.wait(); * } * catch (cl::Error err) { - * std::cerr + * std::cerr * << "ERROR: " * << err.what() * << "(" @@ -134,10 +134,10 @@ * << ")" * << std::endl; * } - * + * * return EXIT_SUCCESS; * } - * + * * \endcode * */ @@ -146,10 +146,10 @@ #ifdef _WIN32 -#include -#include -#include #include +#include +#include +#include #if defined(__CL_ENABLE_EXCEPTIONS) #include @@ -169,12 +169,12 @@ #endif #if defined(__APPLE__) || defined(__MACOSX) -#include #include +#include #include #else -#include #include +#include #endif // !__APPLE__ // To avoid accidentally taking ownership of core OpenCL types @@ -199,8 +199,8 @@ #define CL_CALLBACK #endif //CL_CALLBACK -#include #include +#include #if !defined(__NO_STD_VECTOR) #include @@ -212,7 +212,6 @@ #if defined(linux) || defined(__APPLE__) || defined(__MACOSX) #include - #include #include #endif // linux @@ -264,8 +263,8 @@ class Memory; class Buffer; #if defined(__CL_ENABLE_EXCEPTIONS) -/*! \brief Exception class - * +/*! \brief Exception class + * * This may be thrown by API functions when __CL_ENABLE_EXCEPTIONS is defined. */ class Error : public std::exception @@ -277,7 +276,7 @@ private: public: /*! \brief Create a new CL error exception for a given error code * and corresponding message. - * + * * \param err error code value. * * \param errStr a descriptive string that must remain in scope until @@ -476,7 +475,7 @@ typedef std::string STRING_CLASS; /*! \class string * \brief Simple string class, that provides a limited subset of std::string * functionality but avoids many of the issues that come with that class. - + * \note Deprecated. Please use std::string as default or * re-define the string class to match the std::string * interface by defining STRING_CLASS @@ -495,10 +494,10 @@ public: /*! \brief Constructs a string populated from an arbitrary value of * specified size. - * + * * An extra '\0' is added, in case none was contained in str. * - * \param str the initial value of the string instance. Note that '\0' + * \param str the initial value of the string instance. Note that '\0' * characters receive no special treatment. If NULL, * the string is left empty, with a size of 0. * @@ -678,7 +677,7 @@ typedef cl::string STRING_CLASS; #endif /*! \class vector - * \brief Fixed sized vector implementation that mirroring + * \brief Fixed sized vector implementation that mirroring * * \note Deprecated. Please use std::vector as default or * re-define the vector class to match the std::vector @@ -738,7 +737,7 @@ public: } /*! \brief Appends an element after the last valid element. - * Calling this on a vector that has reached capacity will throw an + * Calling this on a vector that has reached capacity will throw an * exception if exceptions are enabled. */ void push_back(const T& x) @@ -921,7 +920,7 @@ public: /** * Internal iterator constructor to capture reference - * to the vector it iterates over rather than taking + * to the vector it iterates over rather than taking * the vector by copy. */ iterator(const vector& vec, int index) : vec_(&vec) @@ -1617,7 +1616,7 @@ struct ReferenceHandler /** * Retain the device. * \param device A valid device created using createSubDevices - * \return + * \return * CL_SUCCESS if the function executed successfully. * CL_INVALID_DEVICE if device was not a valid subdevice * CL_OUT_OF_RESOURCES @@ -1630,7 +1629,7 @@ struct ReferenceHandler /** * Retain the device. * \param device A valid device created using createSubDevices - * \return + * \return * CL_SUCCESS if the function executed successfully. * CL_INVALID_DEVICE if device was not a valid subdevice * CL_OUT_OF_RESOURCES @@ -2055,13 +2054,13 @@ public: Device() : detail::Wrapper() {} /*! \brief Copy constructor. - * + * * This simply copies the device ID value, which is an inexpensive operation. */ Device(const Device& device) : detail::Wrapper(device) {} /*! \brief Constructor from cl_device_id. - * + * * This simply copies the device ID value, which is an inexpensive operation. */ Device(const cl_device_id& device) : detail::Wrapper(device) {} @@ -2073,7 +2072,7 @@ public: static Device getDefault(cl_int* err = NULL); /*! \brief Assignment operator from Device. - * + * * This simply copies the device ID value, which is an inexpensive operation. */ Device& operator=(const Device& rhs) @@ -2086,7 +2085,7 @@ public: } /*! \brief Assignment operator from cl_device_id. - * + * * This simply copies the device ID value, which is an inexpensive operation. */ Device& operator=(const cl_device_id& rhs) @@ -2201,19 +2200,19 @@ public: Platform() : detail::Wrapper() {} /*! \brief Copy constructor. - * + * * This simply copies the platform ID value, which is an inexpensive operation. */ Platform(const Platform& platform) : detail::Wrapper(platform) {} /*! \brief Constructor from cl_platform_id. - * + * * This simply copies the platform ID value, which is an inexpensive operation. */ Platform(const cl_platform_id& platform) : detail::Wrapper(platform) {} /*! \brief Assignment operator from Platform. - * + * * This simply copies the platform ID value, which is an inexpensive operation. */ Platform& operator=(const Platform& rhs) @@ -2226,7 +2225,7 @@ public: } /*! \brief Assignment operator from cl_platform_id. - * + * * This simply copies the platform ID value, which is an inexpensive operation. */ Platform& operator=(const cl_platform_id& rhs) @@ -2259,7 +2258,7 @@ public: } /*! \brief Gets a list of devices for this platform. - * + * * Wraps clGetDeviceIDs(). */ cl_int getDevices( @@ -2369,7 +2368,7 @@ public: #endif /*! \brief Gets a list of available platforms. - * + * * Wraps clGetPlatformIDs(). */ static cl_int get( @@ -2401,7 +2400,7 @@ public: } /*! \brief Gets the first available platform. - * + * * Wraps clGetPlatformIDs(), returning the first result. */ static cl_int get( @@ -2433,7 +2432,7 @@ public: } /*! \brief Gets the first available platform, returning it by value. - * + * * Wraps clGetPlatformIDs(), returning the first result. */ static Platform get( @@ -2694,20 +2693,20 @@ public: Context() : detail::Wrapper() {} /*! \brief Copy constructor. - * + * * This calls clRetainContext() on the parameter's cl_context. */ Context(const Context& context) : detail::Wrapper(context) {} /*! \brief Constructor from cl_context - takes ownership. - * + * * This effectively transfers ownership of a refcount on the cl_context * into the new Context object. */ __CL_EXPLICIT_CONSTRUCTORS Context(const cl_context& context) : detail::Wrapper(context) {} /*! \brief Assignment operator from Context. - * + * * This calls clRetainContext() on the parameter and clReleaseContext() on * the previous value held by this instance. */ @@ -2721,7 +2720,7 @@ public: } /*! \brief Assignment operator from cl_context - takes ownership. - * + * * This effectively transfers ownership of a refcount on the rhs and calls * clReleaseContext() on the value previously held by this instance. */ @@ -2756,7 +2755,7 @@ public: } /*! \brief Gets a list of supported image formats. - * + * * Wraps clGetSupportedImageFormats(). */ cl_int getSupportedImageFormats( @@ -2855,13 +2854,13 @@ public: Event() : detail::Wrapper() {} /*! \brief Copy constructor. - * + * * This calls clRetainEvent() on the parameter's cl_event. */ Event(const Event& event) : detail::Wrapper(event) {} /*! \brief Constructor from cl_event - takes ownership. - * + * * This effectively transfers ownership of a refcount on the cl_event * into the new Event object. */ @@ -2882,7 +2881,7 @@ public: } /*! \brief Assignment operator from cl_event. - * + * * This calls clRetainEvent() on the parameter and clReleaseEvent() on * the previous value held by this instance. */ @@ -2941,7 +2940,7 @@ public: } /*! \brief Blocks the calling thread until this event completes. - * + * * Wraps clWaitForEvents(). */ cl_int wait() const @@ -2972,7 +2971,7 @@ public: #endif /*! \brief Blocks the calling thread until every event specified is complete. - * + * * Wraps clWaitForEvents(). */ static cl_int @@ -2987,7 +2986,7 @@ public: #if defined(CL_VERSION_1_1) /*! \brief Class interface for user events (a subset of cl_event's). - * + * * See Event for details about copy semantics, etc. */ class UserEvent : public Event @@ -3043,7 +3042,7 @@ public: #endif /*! \brief Blocks the calling thread until every event specified is complete. - * + * * Wraps clWaitForEvents(). */ inline static cl_int @@ -3076,20 +3075,20 @@ public: Memory() : detail::Wrapper() {} /*! \brief Copy constructor - performs shallow copy. - * + * * This calls clRetainMemObject() on the parameter's cl_mem. */ Memory(const Memory& memory) : detail::Wrapper(memory) {} /*! \brief Constructor from cl_mem - takes ownership. - * + * * This effectively transfers ownership of a refcount on the cl_mem * into the new Memory object. */ __CL_EXPLICIT_CONSTRUCTORS Memory(const cl_mem& memory) : detail::Wrapper(memory) {} /*! \brief Assignment operator from Memory. - * + * * This calls clRetainMemObject() on the parameter and clReleaseMemObject() * on the previous value held by this instance. */ @@ -3173,7 +3172,7 @@ template cl_int copy(const cl::Buffer& buffer, IteratorType startIterator, IteratorType endIterator); /*! \brief Class interface for Buffer Memory Objects. - * + * * See Memory for details about copy semantics, etc. * * \see Memory @@ -3365,7 +3364,7 @@ public: /*! \brief Class interface for creating OpenCL buffers from ID3D10Buffer's. * * This is provided to facilitate interoperability with Direct3D. - * + * * See Memory for details about copy semantics, etc. * * \see Memory @@ -3463,9 +3462,9 @@ public: /*! \brief Class interface for GL Buffer Memory Objects. * * This is provided to facilitate interoperability with OpenGL. - * + * * See Memory for details about copy semantics, etc. - * + * * \see Memory */ class BufferGL : public Buffer @@ -3548,9 +3547,9 @@ public: /*! \brief Class interface for GL Render Buffer Memory Objects. * * This is provided to facilitate interoperability with OpenGL. - * + * * See Memory for details about copy semantics, etc. - * + * * \see Memory */ class BufferRenderGL : public Buffer @@ -3633,7 +3632,7 @@ public: /*! \brief C++ base class for Image Memory objects. * * See Memory for details about copy semantics, etc. - * + * * \see Memory */ class Image : public Memory @@ -3707,7 +3706,7 @@ public: /*! \brief Class interface for 1D Image Memory objects. * * See Memory for details about copy semantics, etc. - * + * * \see Memory */ class Image1D : public Image @@ -3913,7 +3912,7 @@ public: /*! \brief Class interface for 2D Image Memory objects. * * See Memory for details about copy semantics, etc. - * + * * \see Memory */ class Image2D : public Image @@ -4033,9 +4032,9 @@ public: /*! \brief Class interface for GL 2D Image Memory objects. * * This is provided to facilitate interoperability with OpenGL. - * + * * See Memory for details about copy semantics, etc. - * + * * \see Memory * \note Deprecated for OpenCL 1.2. Please use ImageGL instead. */ @@ -4182,7 +4181,7 @@ public: /*! \brief Class interface for 3D Image Memory objects. * * See Memory for details about copy semantics, etc. - * + * * \see Memory */ class Image3D : public Image @@ -4306,9 +4305,9 @@ public: /*! \brief Class interface for GL 3D Image Memory objects. * * This is provided to facilitate interoperability with OpenGL. - * + * * See Memory for details about copy semantics, etc. - * + * * \see Memory */ class Image3DGL : public Image3D @@ -4446,7 +4445,7 @@ public: * to the same underlying cl_sampler as the original. For details, see * clRetainSampler() and clReleaseSampler(). * - * \see cl_sampler + * \see cl_sampler */ class Sampler : public detail::Wrapper { @@ -4487,20 +4486,20 @@ public: } /*! \brief Copy constructor - performs shallow copy. - * + * * This calls clRetainSampler() on the parameter's cl_sampler. */ Sampler(const Sampler& sampler) : detail::Wrapper(sampler) {} /*! \brief Constructor from cl_sampler - takes ownership. - * + * * This effectively transfers ownership of a refcount on the cl_sampler * into the new Sampler object. */ Sampler(const cl_sampler& sampler) : detail::Wrapper(sampler) {} /*! \brief Assignment operator from Sampler. - * + * * This calls clRetainSampler() on the parameter and clReleaseSampler() * on the previous value held by this instance. */ @@ -4592,7 +4591,7 @@ public: } /*! \brief Conversion operator to const ::size_t *. - * + * * \returns a pointer to the size of the first dimension. */ operator const ::size_t*() const @@ -4680,20 +4679,20 @@ public: Kernel() {} /*! \brief Copy constructor - performs shallow copy. - * + * * This calls clRetainKernel() on the parameter's cl_kernel. */ Kernel(const Kernel& kernel) : detail::Wrapper(kernel) {} /*! \brief Constructor from cl_kernel - takes ownership. - * + * * This effectively transfers ownership of a refcount on the cl_kernel * into the new Kernel object. */ __CL_EXPLICIT_CONSTRUCTORS Kernel(const cl_kernel& kernel) : detail::Wrapper(kernel) {} /*! \brief Assignment operator from Kernel. - * + * * This calls clRetainKernel() on the parameter and clReleaseKernel() * on the previous value held by this instance. */ @@ -4962,7 +4961,7 @@ public: * Set to CL_INVALID_BINARY if the binary provided is not valid for the matching device. * \param err if non-NULL will be set to CL_SUCCESS on successful operation or one of the following errors: * CL_INVALID_CONTEXT if context is not a valid context. - * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; + * CL_INVALID_VALUE if the length of devices is zero; or if the length of binaries does not match the length of devices; * or if any entry in binaries is NULL or has length 0. * CL_INVALID_DEVICE if OpenCL devices listed in devices are not in the list of devices associated with context. * CL_INVALID_BINARY if an invalid program binary was encountered for any device. binaryStatus will return specific status for each device. @@ -5688,7 +5687,7 @@ public: /** * Enqueue a command to fill a buffer object with a pattern * of a given size. The pattern is specified a as vector. - * \tparam PatternType The datatype of the pattern field. + * \tparam PatternType The datatype of the pattern field. * The pattern type must be an accepted OpenCL data type. */ template @@ -6033,14 +6032,14 @@ public: #if defined(CL_VERSION_1_2) /** - * Enqueues a marker command which waits for either a list of events to complete, + * Enqueues a marker command which waits for either a list of events to complete, * or all previously enqueued commands to complete. * - * Enqueues a marker command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command returns an event which can be waited on, - * i.e. this event can be waited on to insure that all events either in the event_wait_list - * or all previously enqueued commands, queued before this command to command_queue, + * Enqueues a marker command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command returns an event which can be waited on, + * i.e. this event can be waited on to insure that all events either in the event_wait_list + * or all previously enqueued commands, queued before this command to command_queue, * have completed. */ cl_int enqueueMarkerWithWaitList( @@ -6065,12 +6064,12 @@ public: /** * A synchronization point that enqueues a barrier operation. * - * Enqueues a barrier command which waits for either a list of events to complete, - * or if the list is empty it waits for all commands previously enqueued in command_queue - * to complete before it completes. This command blocks command execution, that is, any - * following commands enqueued after it do not execute until it completes. This command - * returns an event which can be waited on, i.e. this event can be waited on to insure that - * all events either in the event_wait_list or all previously enqueued commands, queued + * Enqueues a barrier command which waits for either a list of events to complete, + * or if the list is empty it waits for all commands previously enqueued in command_queue + * to complete before it completes. This command blocks command execution, that is, any + * following commands enqueued after it do not execute until it completes. This command + * returns an event which can be waited on, i.e. this event can be waited on to insure that + * all events either in the event_wait_list or all previously enqueued commands, queued * before this command to command_queue, have completed. */ cl_int enqueueBarrierWithWaitList( diff --git a/src/algorithms/libs/opencl/fft_execute.cc b/src/algorithms/libs/opencl/fft_execute.cc index baf3873be..23b2d1c83 100644 --- a/src/algorithms/libs/opencl/fft_execute.cc +++ b/src/algorithms/libs/opencl/fft_execute.cc @@ -46,11 +46,11 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -#include "fft_internal.h" #include "clFFT.h" -#include -#include -#include +#include "fft_internal.h" +#include +#include +#include #define max(a, b) (((a) > (b)) ? (a) : (b)) #define min(a, b) (((a) < (b)) ? (a) : (b)) @@ -67,7 +67,7 @@ allocateTemporaryBufferInterleaved(cl_fft_plan *plan, cl_uint batchSize) if (plan->tempmemobj) clReleaseMemObject(plan->tempmemobj); - plan->tempmemobj = clCreateBuffer(plan->context, CL_MEM_READ_WRITE, tmpLength, NULL, &err); + plan->tempmemobj = clCreateBuffer(plan->context, CL_MEM_READ_WRITE, tmpLength, nullptr, &err); } return err; } @@ -88,8 +88,8 @@ allocateTemporaryBufferPlannar(cl_fft_plan *plan, cl_uint batchSize) if (plan->tempmemobj_imag) clReleaseMemObject(plan->tempmemobj_imag); - plan->tempmemobj_real = clCreateBuffer(plan->context, CL_MEM_READ_WRITE, tmpLength, NULL, &err); - plan->tempmemobj_imag = clCreateBuffer(plan->context, CL_MEM_READ_WRITE, tmpLength, NULL, &terr); + plan->tempmemobj_real = clCreateBuffer(plan->context, CL_MEM_READ_WRITE, tmpLength, nullptr, &err); + plan->tempmemobj_imag = clCreateBuffer(plan->context, CL_MEM_READ_WRITE, tmpLength, nullptr, &terr); err |= terr; } return err; @@ -126,7 +126,7 @@ clFFT_ExecuteInterleaved(cl_command_queue queue, clFFT_Plan Plan, cl_int batchSi cl_int num_events, cl_event *event_list, cl_event *event) { int s; - cl_fft_plan *plan = (cl_fft_plan *)Plan; + auto *plan = (cl_fft_plan *)Plan; if (plan->format != clFFT_InterleavedComplexFormat) return CL_INVALID_VALUE; @@ -180,7 +180,7 @@ clFFT_ExecuteInterleaved(cl_command_queue queue, clFFT_Plan Plan, cl_int batchSi err |= clSetKernelArg(kernelInfo->kernel, 2, sizeof(cl_int), &dir); err |= clSetKernelArg(kernelInfo->kernel, 3, sizeof(cl_int), &s); - err |= clEnqueueNDRangeKernel(queue, kernelInfo->kernel, 1, NULL, &gWorkItems, &lWorkItems, 0, NULL, NULL); + err |= clEnqueueNDRangeKernel(queue, kernelInfo->kernel, 1, nullptr, &gWorkItems, &lWorkItems, 0, nullptr, nullptr); if (err) return err; @@ -203,7 +203,7 @@ clFFT_ExecuteInterleaved(cl_command_queue queue, clFFT_Plan Plan, cl_int batchSi err |= clSetKernelArg(kernelInfo->kernel, 2, sizeof(cl_int), &dir); err |= clSetKernelArg(kernelInfo->kernel, 3, sizeof(cl_int), &s); - err |= clEnqueueNDRangeKernel(queue, kernelInfo->kernel, 1, NULL, &gWorkItems, &lWorkItems, 0, NULL, NULL); + err |= clEnqueueNDRangeKernel(queue, kernelInfo->kernel, 1, nullptr, &gWorkItems, &lWorkItems, 0, nullptr, nullptr); if (err) return err; @@ -223,7 +223,7 @@ clFFT_ExecutePlannar(cl_command_queue queue, clFFT_Plan Plan, cl_int batchSize, cl_int num_events, cl_event *event_list, cl_event *event) { int s; - cl_fft_plan *plan = (cl_fft_plan *)Plan; + auto *plan = (cl_fft_plan *)Plan; if (plan->format != clFFT_SplitComplexFormat) return CL_INVALID_VALUE; @@ -285,7 +285,7 @@ clFFT_ExecutePlannar(cl_command_queue queue, clFFT_Plan Plan, cl_int batchSize, err |= clSetKernelArg(kernelInfo->kernel, 4, sizeof(cl_int), &dir); err |= clSetKernelArg(kernelInfo->kernel, 5, sizeof(cl_int), &s); - err |= clEnqueueNDRangeKernel(queue, kernelInfo->kernel, 1, NULL, &gWorkItems, &lWorkItems, 0, NULL, NULL); + err |= clEnqueueNDRangeKernel(queue, kernelInfo->kernel, 1, nullptr, &gWorkItems, &lWorkItems, 0, nullptr, nullptr); if (err) return err; @@ -309,7 +309,7 @@ clFFT_ExecutePlannar(cl_command_queue queue, clFFT_Plan Plan, cl_int batchSize, err |= clSetKernelArg(kernelInfo->kernel, 4, sizeof(cl_int), &dir); err |= clSetKernelArg(kernelInfo->kernel, 5, sizeof(cl_int), &s); - err |= clEnqueueNDRangeKernel(queue, kernelInfo->kernel, 1, NULL, &gWorkItems, &lWorkItems, 0, NULL, NULL); + err |= clEnqueueNDRangeKernel(queue, kernelInfo->kernel, 1, nullptr, &gWorkItems, &lWorkItems, 0, nullptr, nullptr); if (err) return err; @@ -327,7 +327,7 @@ cl_int clFFT_1DTwistInterleaved(clFFT_Plan Plan, cl_command_queue queue, cl_mem array, unsigned numRows, unsigned numCols, unsigned startRow, unsigned rowsToProcess, clFFT_Direction dir) { - cl_fft_plan *plan = (cl_fft_plan *)Plan; + auto *plan = (cl_fft_plan *)Plan; unsigned int N = numRows * numCols; unsigned int nCols = numCols; @@ -337,12 +337,12 @@ clFFT_1DTwistInterleaved(clFFT_Plan Plan, cl_command_queue queue, cl_mem array, int err = 0; cl_device_id device_id; - err = clGetCommandQueueInfo(queue, CL_QUEUE_DEVICE, sizeof(cl_device_id), &device_id, NULL); + err = clGetCommandQueueInfo(queue, CL_QUEUE_DEVICE, sizeof(cl_device_id), &device_id, nullptr); if (err) return err; size_t gSize; - err = clGetKernelWorkGroupInfo(plan->twist_kernel, device_id, CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &gSize, NULL); + err = clGetKernelWorkGroupInfo(plan->twist_kernel, device_id, CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &gSize, nullptr); if (err) return err; @@ -357,7 +357,7 @@ clFFT_1DTwistInterleaved(clFFT_Plan Plan, cl_command_queue queue, cl_mem array, err |= clSetKernelArg(plan->twist_kernel, 4, sizeof(unsigned int), &rToProcess); err |= clSetKernelArg(plan->twist_kernel, 5, sizeof(int), &d); - err |= clEnqueueNDRangeKernel(queue, plan->twist_kernel, 1, NULL, numGlobalThreads, numLocalThreads, 0, NULL, NULL); + err |= clEnqueueNDRangeKernel(queue, plan->twist_kernel, 1, nullptr, numGlobalThreads, numLocalThreads, 0, nullptr, nullptr); return err; } @@ -366,7 +366,7 @@ cl_int clFFT_1DTwistPlannar(clFFT_Plan Plan, cl_command_queue queue, cl_mem array_real, cl_mem array_imag, unsigned numRows, unsigned numCols, unsigned startRow, unsigned rowsToProcess, clFFT_Direction dir) { - cl_fft_plan *plan = (cl_fft_plan *)Plan; + auto *plan = (cl_fft_plan *)Plan; unsigned int N = numRows * numCols; unsigned int nCols = numCols; @@ -376,12 +376,12 @@ clFFT_1DTwistPlannar(clFFT_Plan Plan, cl_command_queue queue, cl_mem array_real, int err = 0; cl_device_id device_id; - err = clGetCommandQueueInfo(queue, CL_QUEUE_DEVICE, sizeof(cl_device_id), &device_id, NULL); + err = clGetCommandQueueInfo(queue, CL_QUEUE_DEVICE, sizeof(cl_device_id), &device_id, nullptr); if (err) return err; size_t gSize; - err = clGetKernelWorkGroupInfo(plan->twist_kernel, device_id, CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &gSize, NULL); + err = clGetKernelWorkGroupInfo(plan->twist_kernel, device_id, CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &gSize, nullptr); if (err) return err; @@ -397,7 +397,7 @@ clFFT_1DTwistPlannar(clFFT_Plan Plan, cl_command_queue queue, cl_mem array_real, err |= clSetKernelArg(plan->twist_kernel, 5, sizeof(unsigned int), &rToProcess); err |= clSetKernelArg(plan->twist_kernel, 6, sizeof(int), &d); - err |= clEnqueueNDRangeKernel(queue, plan->twist_kernel, 1, NULL, numGlobalThreads, numLocalThreads, 0, NULL, NULL); + err |= clEnqueueNDRangeKernel(queue, plan->twist_kernel, 1, nullptr, numGlobalThreads, numLocalThreads, 0, nullptr, nullptr); return err; } diff --git a/src/algorithms/libs/opencl/fft_internal.h b/src/algorithms/libs/opencl/fft_internal.h index 5e462f455..96a41c6de 100644 --- a/src/algorithms/libs/opencl/fft_internal.h +++ b/src/algorithms/libs/opencl/fft_internal.h @@ -51,8 +51,8 @@ #include "clFFT.h" #include -#include #include +#include using namespace std; diff --git a/src/algorithms/libs/opencl/fft_kernelstring.cc b/src/algorithms/libs/opencl/fft_kernelstring.cc index 733b60f42..33b3109e8 100644 --- a/src/algorithms/libs/opencl/fft_kernelstring.cc +++ b/src/algorithms/libs/opencl/fft_kernelstring.cc @@ -46,16 +46,16 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -#include -#include -#include +#include "clFFT.h" +#include "fft_internal.h" +#include +#include +#include +#include +#include #include #include #include -#include -#include -#include "fft_internal.h" -#include "clFFT.h" using namespace std; @@ -806,13 +806,13 @@ createLocalMemfftKernelString(cl_fft_plan *plan) kernelName = string("fft") + num2str(kCount); *kInfo = (cl_fft_kernel_info *)malloc(sizeof(cl_fft_kernel_info)); - (*kInfo)->kernel = 0; + (*kInfo)->kernel = nullptr; (*kInfo)->lmem_size = 0; (*kInfo)->num_workgroups = 0; (*kInfo)->num_workitems_per_workgroup = 0; (*kInfo)->dir = cl_fft_kernel_x; (*kInfo)->in_place_possible = 1; - (*kInfo)->next = NULL; + (*kInfo)->next = nullptr; (*kInfo)->kernel_name = (char *)malloc(sizeof(char) * (kernelName.size() + 1)); strcpy((*kInfo)->kernel_name, kernelName.c_str()); @@ -1015,7 +1015,7 @@ createGlobalFFTKernelString(cl_fft_plan *plan, int n, int BS, cl_fft_kernel_dir kernelName = string("fft") + num2str(kCount); *kInfo = (cl_fft_kernel_info *)malloc(sizeof(cl_fft_kernel_info)); - (*kInfo)->kernel = 0; + (*kInfo)->kernel = nullptr; if (R2 == 1) (*kInfo)->lmem_size = 0; else @@ -1033,7 +1033,7 @@ createGlobalFFTKernelString(cl_fft_plan *plan, int n, int BS, cl_fft_kernel_dir (*kInfo)->in_place_possible = 1; else (*kInfo)->in_place_possible = 0; - (*kInfo)->next = NULL; + (*kInfo)->next = nullptr; (*kInfo)->kernel_name = (char *)malloc(sizeof(char) * (kernelName.size() + 1)); strcpy((*kInfo)->kernel_name, kernelName.c_str()); diff --git a/src/algorithms/libs/opencl/fft_setup.cc b/src/algorithms/libs/opencl/fft_setup.cc index 1349d65f7..a56c05328 100644 --- a/src/algorithms/libs/opencl/fft_setup.cc +++ b/src/algorithms/libs/opencl/fft_setup.cc @@ -46,16 +46,16 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// -#include "fft_internal.h" #include "fft_base_kernels.h" -#include -#include -#include -#include +#include "fft_internal.h" +#include +#include #include -#include -#include #include +#include +#include +#include +#include using namespace std; @@ -128,37 +128,37 @@ destroy_plan(cl_fft_plan *Plan) kernel_info = tmp; } - Plan->kernel_info = NULL; + Plan->kernel_info = nullptr; if (Plan->kernel_string) { delete Plan->kernel_string; - Plan->kernel_string = NULL; + Plan->kernel_string = nullptr; } if (Plan->twist_kernel) { clReleaseKernel(Plan->twist_kernel); - Plan->twist_kernel = NULL; + Plan->twist_kernel = nullptr; } if (Plan->program) { clReleaseProgram(Plan->program); - Plan->program = NULL; + Plan->program = nullptr; } if (Plan->tempmemobj) { clReleaseMemObject(Plan->tempmemobj); - Plan->tempmemobj = NULL; + Plan->tempmemobj = nullptr; } if (Plan->tempmemobj_real) { clReleaseMemObject(Plan->tempmemobj_real); - Plan->tempmemobj_real = NULL; + Plan->tempmemobj_real = nullptr; } if (Plan->tempmemobj_imag) { clReleaseMemObject(Plan->tempmemobj_imag); - Plan->tempmemobj_imag = NULL; + Plan->tempmemobj_imag = nullptr; } } @@ -201,7 +201,7 @@ int getMaxKernelWorkGroupSize(cl_fft_plan *plan, unsigned int *max_wg_size, unsi cl_fft_kernel_info *kInfo = plan->kernel_info; while (kInfo) { - err = clGetKernelWorkGroupInfo(kInfo->kernel, devices[i], CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wg_size, NULL); + err = clGetKernelWorkGroupInfo(kInfo->kernel, devices[i], CL_KERNEL_WORK_GROUP_SIZE, sizeof(size_t), &wg_size, nullptr); if (err != CL_SUCCESS) return -1; @@ -235,7 +235,7 @@ clFFT_CreatePlan(cl_context context, clFFT_Dim3 n, clFFT_Dimension dim, clFFT_Da int i; cl_int err; int isPow2 = 1; - cl_fft_plan *plan = NULL; + cl_fft_plan *plan = nullptr; ostringstream kString; int num_devices; int gpu_found = 0; @@ -265,15 +265,15 @@ clFFT_CreatePlan(cl_context context, clFFT_Dim3 n, clFFT_Dimension dim, clFFT_Da plan->n = n; plan->dim = dim; plan->format = dataFormat; - plan->kernel_info = 0; + plan->kernel_info = nullptr; plan->num_kernels = 0; - plan->twist_kernel = 0; - plan->program = 0; + plan->twist_kernel = nullptr; + plan->program = nullptr; plan->temp_buffer_needed = 0; plan->last_batch_size = 0; - plan->tempmemobj = 0; - plan->tempmemobj_real = 0; - plan->tempmemobj_imag = 0; + plan->tempmemobj = nullptr; + plan->tempmemobj_real = nullptr; + plan->tempmemobj_imag = nullptr; plan->max_localmem_fft_size = 2048; plan->max_work_item_per_workgroup = 256; plan->max_radix = 16; @@ -289,7 +289,7 @@ patch_kernel_source: getBlockConfigAndKernelString(plan); const char *source_str = plan->kernel_string->c_str(); - plan->program = clCreateProgramWithSource(context, 1, (const char **)&source_str, NULL, &err); + plan->program = clCreateProgramWithSource(context, 1, (const char **)&source_str, nullptr, &err); ERR_MACRO(err); err = clGetContextInfo(context, CL_CONTEXT_DEVICES, sizeof(devices), devices, &ret_size); @@ -299,28 +299,28 @@ patch_kernel_source: for (i = 0; i < num_devices; i++) { - err = clGetDeviceInfo(devices[i], CL_DEVICE_TYPE, sizeof(device_type), &device_type, NULL); + err = clGetDeviceInfo(devices[i], CL_DEVICE_TYPE, sizeof(device_type), &device_type, nullptr); ERR_MACRO(err); if (device_type == CL_DEVICE_TYPE_GPU) { gpu_found = 1; - err = clBuildProgram(plan->program, 1, &devices[i], "-cl-mad-enable", NULL, NULL); + err = clBuildProgram(plan->program, 1, &devices[i], "-cl-mad-enable", nullptr, nullptr); if (err != CL_SUCCESS) { char *build_log; char devicename[200]; size_t log_size; - err = clGetProgramBuildInfo(plan->program, devices[i], CL_PROGRAM_BUILD_LOG, 0, NULL, &log_size); + err = clGetProgramBuildInfo(plan->program, devices[i], CL_PROGRAM_BUILD_LOG, 0, nullptr, &log_size); ERR_MACRO(err); build_log = (char *)malloc(log_size + 1); - err = clGetProgramBuildInfo(plan->program, devices[i], CL_PROGRAM_BUILD_LOG, log_size, build_log, NULL); + err = clGetProgramBuildInfo(plan->program, devices[i], CL_PROGRAM_BUILD_LOG, log_size, build_log, nullptr); ERR_MACRO(err); - err = clGetDeviceInfo(devices[i], CL_DEVICE_NAME, sizeof(devicename), devicename, NULL); + err = clGetDeviceInfo(devices[i], CL_DEVICE_NAME, sizeof(devicename), devicename, nullptr); ERR_MACRO(err); fprintf(stdout, "FFT program build log on device %s\n", devicename); @@ -370,7 +370,7 @@ patch_kernel_source: void clFFT_DestroyPlan(clFFT_Plan plan) { - cl_fft_plan *Plan = (cl_fft_plan *)plan; + auto *Plan = (cl_fft_plan *)plan; if (Plan) { destroy_plan(Plan); @@ -388,7 +388,7 @@ void clFFT_DumpPlan(clFFT_Plan Plan, FILE *file) else out = file; - cl_fft_plan *plan = (cl_fft_plan *)Plan; + auto *plan = (cl_fft_plan *)Plan; cl_fft_kernel_info *kInfo = plan->kernel_info; while (kInfo) diff --git a/src/algorithms/libs/pass_through.cc b/src/algorithms/libs/pass_through.cc index 3ac55e754..c2caa83db 100644 --- a/src/algorithms/libs/pass_through.cc +++ b/src/algorithms/libs/pass_through.cc @@ -38,7 +38,7 @@ using google::LogMessage; -Pass_Through::Pass_Through(ConfigurationInterface* configuration, std::string role, +Pass_Through::Pass_Through(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), @@ -47,7 +47,7 @@ Pass_Through::Pass_Through(ConfigurationInterface* configuration, std::string ro std::string default_item_type = "gr_complex"; std::string input_type = configuration->property(role + ".input_item_type", default_item_type); std::string output_type = configuration->property(role + ".output_item_type", default_item_type); - if (input_type.compare(output_type) != 0) + if (input_type != output_type) { LOG(WARNING) << "input_item_type and output_item_type are different in a Pass_Through implementation! Taking " << input_type @@ -57,11 +57,11 @@ Pass_Through::Pass_Through(ConfigurationInterface* configuration, std::string ro item_type_ = configuration->property(role + ".item_type", input_type); inverted_spectrum = configuration->property(role + ".inverted_spectrum", false); - if (item_type_.compare("float") == 0) + if (item_type_ == "float") { item_size_ = sizeof(float); } - else if (item_type_.compare("gr_complex") == 0) + else if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); if (inverted_spectrum) @@ -69,15 +69,15 @@ Pass_Through::Pass_Through(ConfigurationInterface* configuration, std::string ro conjugate_cc_ = make_conjugate_cc(); } } - else if (item_type_.compare("short") == 0) + else if (item_type_ == "short") { item_size_ = sizeof(int16_t); } - else if (item_type_.compare("ishort") == 0) + else if (item_type_ == "ishort") { item_size_ = sizeof(int16_t); } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { item_size_ = sizeof(lv_16sc_t); if (inverted_spectrum) @@ -85,15 +85,15 @@ Pass_Through::Pass_Through(ConfigurationInterface* configuration, std::string ro conjugate_sc_ = make_conjugate_sc(); } } - else if (item_type_.compare("byte") == 0) + else if (item_type_ == "byte") { item_size_ = sizeof(int8_t); } - else if (item_type_.compare("ibyte") == 0) + else if (item_type_ == "ibyte") { item_size_ = sizeof(int8_t); } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { item_size_ = sizeof(lv_8sc_t); if (inverted_spectrum) @@ -122,9 +122,7 @@ Pass_Through::Pass_Through(ConfigurationInterface* configuration, std::string ro } -Pass_Through::~Pass_Through() -{ -} +Pass_Through::~Pass_Through() = default; void Pass_Through::connect(gr::top_block_sptr top_block) @@ -149,23 +147,20 @@ gr::basic_block_sptr Pass_Through::get_left_block() { if (inverted_spectrum) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return conjugate_cc_; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return conjugate_sc_; } - else if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { return conjugate_ic_; } - else - { - LOG(WARNING) << "Setting inverted_spectrum to true with item_type " - << item_type_ << " is not defined and has no effect."; - } + LOG(WARNING) << "Setting inverted_spectrum to true with item_type " + << item_type_ << " is not defined and has no effect."; } return kludge_copy_; @@ -176,23 +171,20 @@ gr::basic_block_sptr Pass_Through::get_right_block() { if (inverted_spectrum) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return conjugate_cc_; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return conjugate_sc_; } - else if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { return conjugate_ic_; } - else - { - DLOG(WARNING) << "Setting inverted_spectrum to true with item_type " - << item_type_ << " is not defined and has no effect."; - } + DLOG(WARNING) << "Setting inverted_spectrum to true with item_type " + << item_type_ << " is not defined and has no effect."; } return kludge_copy_; diff --git a/src/algorithms/libs/pass_through.h b/src/algorithms/libs/pass_through.h index 83100eab2..7ef1838bf 100644 --- a/src/algorithms/libs/pass_through.h +++ b/src/algorithms/libs/pass_through.h @@ -34,11 +34,11 @@ #define GNSS_SDR_PASS_THROUGH_H_ #include "conjugate_cc.h" -#include "conjugate_sc.h" #include "conjugate_ic.h" +#include "conjugate_sc.h" #include "gnss_block_interface.h" -#include #include +#include #include @@ -51,7 +51,7 @@ class Pass_Through : public GNSSBlockInterface { public: Pass_Through(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_stream, unsigned int out_stream); diff --git a/src/algorithms/libs/rtklib/rtklib.h b/src/algorithms/libs/rtklib/rtklib.h index d6e0ccb66..3a7471e5e 100644 --- a/src/algorithms/libs/rtklib/rtklib.h +++ b/src/algorithms/libs/rtklib/rtklib.h @@ -56,13 +56,14 @@ #include "MATH_CONSTANTS.h" #include "gnss_frequencies.h" #include "gnss_obs_codes.h" -#include -#include #include #include #include +#include #include #include +#include +#include /* macros --------------------------------------------------------------------*/ @@ -1211,7 +1212,7 @@ typedef struct char local[1024]; /* local file path */ int topts[4]; /* time options {poff,tint,toff,tretry} (s) */ gtime_t tnext; /* next retry time (gpst) */ - pthread_t thread; /* download thread */ + pthread_t thread; /* download thread */ } ftp_t; @@ -1284,7 +1285,7 @@ typedef struct stream_t stream[8]; /* streams {rov,base,corr,sol1,sol2,logr,logb,logc} */ stream_t *moni; /* monitor stream */ unsigned int tick; /* start tick */ - pthread_t thread; /* server thread */ + pthread_t thread; /* server thread */ int cputime; /* CPU time (ms) for a processing cycle */ int prcout; /* missing observation data count */ lock_t lock; /* lock flag */ diff --git a/src/algorithms/libs/rtklib/rtklib_conversions.cc b/src/algorithms/libs/rtklib/rtklib_conversions.cc index d51fb7081..876dff92b 100644 --- a/src/algorithms/libs/rtklib/rtklib_conversions.cc +++ b/src/algorithms/libs/rtklib/rtklib_conversions.cc @@ -51,7 +51,7 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs, const Gnss_Synchro& gnss_synchro double CN0_dB_Hz_est = gnss_synchro.CN0_dB_hz; if (CN0_dB_Hz_est > 63.75) CN0_dB_Hz_est = 63.75; if (CN0_dB_Hz_est < 0.0) CN0_dB_Hz_est = 0.0; - unsigned char CN0_dB_Hz = static_cast(std::round(CN0_dB_Hz_est / 0.25)); + auto CN0_dB_Hz = static_cast(std::round(CN0_dB_Hz_est / 0.25)); rtklib_obs.SNR[band] = CN0_dB_Hz; //Galileo is the third satellite system for RTKLIB, so, add the required offset to discriminate Galileo ephemeris switch (gnss_synchro.System) @@ -165,7 +165,7 @@ eph_t eph_to_rtklib(const Galileo_Ephemeris& gal_eph) /* adjustment for week handover */ double tow, toc; tow = time2gpst(rtklib_sat.ttr, &rtklib_sat.week); - toc = time2gpst(rtklib_sat.toc, NULL); + toc = time2gpst(rtklib_sat.toc, nullptr); if (rtklib_sat.toes < tow - 302400.0) { rtklib_sat.week++; @@ -222,7 +222,7 @@ eph_t eph_to_rtklib(const Gps_Ephemeris& gps_eph) /* adjustment for week handover */ double tow, toc; tow = time2gpst(rtklib_sat.ttr, &rtklib_sat.week); - toc = time2gpst(rtklib_sat.toc, NULL); + toc = time2gpst(rtklib_sat.toc, nullptr); if (rtklib_sat.toes < tow - 302400.0) { rtklib_sat.week++; @@ -277,12 +277,15 @@ eph_t eph_to_rtklib(const Beidou_Dnav_Ephemeris& bei_eph) rtklib_sat.tgd[2] = 0.0; rtklib_sat.tgd[3] = 0.0; rtklib_sat.toes = bei_eph.d_Toe; + rtklib_sat.toe = bdt2gpst(bdt2time(rtklib_sat.week, bei_eph.d_Toe)); rtklib_sat.toc = bdt2gpst(bdt2time(rtklib_sat.week, bei_eph.d_Toc)); rtklib_sat.ttr = bdt2gpst(bdt2time(rtklib_sat.week, bei_eph.d_TOW)); /* adjustment for week handover */ - double tow, toc; + double tow, toc, toe; tow = time2gpst(rtklib_sat.ttr, &rtklib_sat.week); toc = time2gpst(rtklib_sat.toc, NULL); + toe = time2gpst(rtklib_sat.toe, NULL); + if (rtklib_sat.toes < tow - 302400.0) { rtklib_sat.week++; @@ -293,7 +296,7 @@ eph_t eph_to_rtklib(const Beidou_Dnav_Ephemeris& bei_eph) rtklib_sat.week--; tow += 604800.0; } - rtklib_sat.toe = gpst2time(rtklib_sat.week, rtklib_sat.toes); + rtklib_sat.toe = gpst2time(rtklib_sat.week, toe); rtklib_sat.toc = gpst2time(rtklib_sat.week, toc); rtklib_sat.ttr = gpst2time(rtklib_sat.week, tow); @@ -348,7 +351,7 @@ eph_t eph_to_rtklib(const Gps_CNAV_Ephemeris& gps_cnav_eph) /* adjustment for week handover */ double tow, toc; tow = time2gpst(rtklib_sat.ttr, &rtklib_sat.week); - toc = time2gpst(rtklib_sat.toc, NULL); + toc = time2gpst(rtklib_sat.toc, nullptr); if (rtklib_sat.toes < tow - 302400.0) { rtklib_sat.week++; diff --git a/src/algorithms/libs/rtklib/rtklib_conversions.h b/src/algorithms/libs/rtklib/rtklib_conversions.h index 25cedd828..8f88442ef 100644 --- a/src/algorithms/libs/rtklib/rtklib_conversions.h +++ b/src/algorithms/libs/rtklib/rtklib_conversions.h @@ -31,16 +31,16 @@ #ifndef GNSS_SDR_RTKLIB_CONVERSIONS_H_ #define GNSS_SDR_RTKLIB_CONVERSIONS_H_ -#include "rtklib.h" -#include "gnss_synchro.h" +#include "galileo_almanac.h" #include "galileo_ephemeris.h" -#include "gps_ephemeris.h" -#include "gps_cnav_ephemeris.h" #include "glonass_gnav_ephemeris.h" #include "glonass_gnav_utc_model.h" -#include "beidou_dnav_ephemeris.h" +#include "gnss_synchro.h" #include "gps_almanac.h" -#include "galileo_almanac.h" +#include "gps_cnav_ephemeris.h" +#include "gps_ephemeris.h" +#include "beidou_dnav_ephemeris.h" +#include "rtklib.h" eph_t eph_to_rtklib(const Galileo_Ephemeris& gal_eph); eph_t eph_to_rtklib(const Gps_Ephemeris& gps_eph); diff --git a/src/algorithms/libs/rtklib/rtklib_ephemeris.cc b/src/algorithms/libs/rtklib/rtklib_ephemeris.cc index eff182fbd..c942c0d2c 100644 --- a/src/algorithms/libs/rtklib/rtklib_ephemeris.cc +++ b/src/algorithms/libs/rtklib/rtklib_ephemeris.cc @@ -51,9 +51,9 @@ *----------------------------------------------------------------------------*/ #include "rtklib_ephemeris.h" +#include "rtklib_preceph.h" #include "rtklib_rtkcmn.h" #include "rtklib_sbas.h" -#include "rtklib_preceph.h" /* constants ------------------------------------------------------*/ @@ -129,7 +129,7 @@ void alm2pos(gtime_t time, const alm_t *alm, double *rs, double *dts) rs[0] = rs[1] = rs[2] = *dts = 0.0; return; } - mu = satsys(alm->sat, NULL) == SYS_GAL ? MU_GAL : MU_GPS; + mu = satsys(alm->sat, nullptr) == SYS_GAL ? MU_GAL : MU_GPS; M = alm->M0 + sqrt(mu / (alm->A * alm->A * alm->A)) * tk; for (n = 0, E = M, Ek = 0.0; fabs(E - Ek) > RTOL_KEPLER && n < MAX_ITER_KEPLER; n++) @@ -457,7 +457,7 @@ eph_t *seleph(gtime_t time, int sat, int iode, const nav_t *nav) trace(4, "seleph : time=%s sat=%2d iode=%d\n", time_str(time, 3), sat, iode); - switch (satsys(sat, NULL)) + switch (satsys(sat, nullptr)) { case SYS_QZS: tmax = MAXDTOE_QZS + 1.0; @@ -490,7 +490,7 @@ eph_t *seleph(gtime_t time, int sat, int iode, const nav_t *nav) { trace(3, "no broadcast ephemeris: %s sat=%2d iode=%3d\n", time_str(time, 0), sat, iode); - return NULL; + return nullptr; } return nav->eph + j; } @@ -520,7 +520,7 @@ geph_t *selgeph(gtime_t time, int sat, int iode, const nav_t *nav) { trace(3, "no glonass ephemeris : %s sat=%2d iode=%2d\n", time_str(time, 0), sat, iode); - return NULL; + return nullptr; } return nav->geph + j; } @@ -547,7 +547,7 @@ seph_t *selseph(gtime_t time, int sat, const nav_t *nav) if (j < 0) { trace(3, "no sbas ephemeris : %s sat=%2d\n", time_str(time, 0), sat); - return NULL; + return nullptr; } return nav->seph + j; } @@ -564,7 +564,7 @@ int ephclk(gtime_t time, gtime_t teph, int sat, const nav_t *nav, trace(4, "ephclk : time=%s sat=%2d\n", time_str(time, 3), sat); - sys = satsys(sat, NULL); + sys = satsys(sat, nullptr); if (sys == SYS_GPS || sys == SYS_GAL || sys == SYS_QZS || sys == SYS_BDS) { @@ -600,7 +600,7 @@ int ephpos(gtime_t time, gtime_t teph, int sat, const nav_t *nav, trace(4, "ephpos : time=%s sat=%2d iode=%d\n", time_str(time, 3), sat, iode); - sys = satsys(sat, NULL); + sys = satsys(sat, nullptr); *svh = -1; @@ -738,7 +738,7 @@ int satpos_ssr(gtime_t time, gtime_t teph, int sat, const nav_t *nav, if (!ephpos(time, teph, sat, nav, ssr->iode, rs, dts, var, svh)) return 0; /* satellite clock for gps, galileo and qzss */ - sys = satsys(sat, NULL); + sys = satsys(sat, nullptr); if (sys == SYS_GPS || sys == SYS_GAL || sys == SYS_QZS || sys == SYS_BDS) { if (!(eph = seleph(teph, sat, ssr->iode, nav))) return 0; diff --git a/src/algorithms/libs/rtklib/rtklib_ionex.cc b/src/algorithms/libs/rtklib/rtklib_ionex.cc index 7790943fa..162778f9a 100644 --- a/src/algorithms/libs/rtklib/rtklib_ionex.cc +++ b/src/algorithms/libs/rtklib/rtklib_ionex.cc @@ -66,7 +66,7 @@ int getindex(double value, const double *range) if (range[2] == 0.0) return 0; if (range[1] > 0.0 && (value < range[0] || range[1] < value)) return -1; if (range[1] < 0.0 && (value < range[1] || range[0] < value)) return -1; - return (int)floor((value - range[0]) / range[2] + 0.5); + return static_cast(floor((value - range[0]) / range[2] + 0.5)); } @@ -98,18 +98,18 @@ tec_t *addtec(const double *lats, const double *lons, const double *hgts, ndata[0] = nitem(lats); ndata[1] = nitem(lons); ndata[2] = nitem(hgts); - if (ndata[0] <= 1 || ndata[1] <= 1 || ndata[2] <= 0) return NULL; + if (ndata[0] <= 1 || ndata[1] <= 1 || ndata[2] <= 0) return nullptr; if (nav->nt >= nav->ntmax) { nav->ntmax += 256; - if (!(nav_tec = (tec_t *)realloc(nav->tec, sizeof(tec_t) * nav->ntmax))) + if (!(nav_tec = static_cast(realloc(nav->tec, sizeof(tec_t) * nav->ntmax)))) { trace(1, "readionex malloc error ntmax=%d\n", nav->ntmax); free(nav->tec); - nav->tec = NULL; + nav->tec = nullptr; nav->nt = nav->ntmax = 0; - return NULL; + return nullptr; } nav->tec = nav_tec; } @@ -125,10 +125,10 @@ tec_t *addtec(const double *lats, const double *lons, const double *hgts, } n = ndata[0] * ndata[1] * ndata[2]; - if (!(p->data = (double *)malloc(sizeof(double) * n)) || - !(p->rms = (float *)malloc(sizeof(float) * n))) + if (!(p->data = static_cast(malloc(sizeof(double) * n))) || + !(p->rms = static_cast(malloc(sizeof(float) * n)))) { - return NULL; + return nullptr; } for (i = 0; i < n; i++) { @@ -236,7 +236,7 @@ double readionexh(FILE *fp, double *lats, double *lons, double *hgts, int readionexb(FILE *fp, const double *lats, const double *lons, const double *hgts, double rb, double nexp, nav_t *nav) { - tec_t *p = NULL; + tec_t *p = nullptr; gtime_t time = {0, 0}; double lat, lon[3], hgt, x; int i, j, k, n, m, index, type = 0; @@ -255,17 +255,17 @@ int readionexb(FILE *fp, const double *lats, const double *lons, else if (strstr(label, "END OF TEC MAP") == label) { type = 0; - p = NULL; + p = nullptr; } else if (strstr(label, "START OF RMS MAP") == label) { type = 2; - p = NULL; + p = nullptr; } else if (strstr(label, "END OF RMS MAP") == label) { type = 0; - p = NULL; + p = nullptr; } else if (strstr(label, "EPOCH OF CURRENT MAP") == label) { @@ -310,7 +310,7 @@ int readionexb(FILE *fp, const double *lats, const double *lons, if (type == 1) p->data[index] = x * std::pow(10.0, nexp); else - p->rms[index] = (float)(x * std::pow(10.0, nexp)); + p->rms[index] = static_cast(x * std::pow(10.0, nexp)); } } } @@ -379,12 +379,12 @@ void readtec(const char *file, nav_t *nav, int opt) if (!opt) { free(nav->tec); - nav->tec = NULL; + nav->tec = nullptr; nav->nt = nav->ntmax = 0; } for (i = 0; i < MAXEXFILE; i++) { - if (!(efiles[i] = (char *)malloc(1024))) + if (!(efiles[i] = static_cast(malloc(1024)))) { for (i--; i >= 0; i--) free(efiles[i]); return; @@ -395,23 +395,22 @@ void readtec(const char *file, nav_t *nav, int opt) for (i = 0; i < n; i++) { - if (!(fp = fopen(efiles[i], "r"))) + if (!(fp = fopen(efiles[i], "re"))) { trace(2, "ionex file open error %s\n", efiles[i]); continue; } - else + + /* read ionex header */ + if (readionexh(fp, lats, lons, hgts, &rb, &nexp, dcb, rms) <= 0.0) { - /* read ionex header */ - if (readionexh(fp, lats, lons, hgts, &rb, &nexp, dcb, rms) <= 0.0) - { - trace(2, "ionex file format error %s\n", efiles[i]); - fclose(fp); - continue; - } - /* read ionex body */ - readionexb(fp, lats, lons, hgts, rb, nexp, nav); + trace(2, "ionex file format error %s\n", efiles[i]); + fclose(fp); + continue; } + + /* read ionex body */ + readionexb(fp, lats, lons, hgts, rb, nexp, nav); fclose(fp); } for (i = 0; i < MAXEXFILE; i++) free(efiles[i]); @@ -448,9 +447,9 @@ int interptec(const tec_t *tec, int k, const double *posp, double *value, a = dlat / tec->lats[2]; b = dlon / tec->lons[2]; - i = (int)floor(a); + i = static_cast(floor(a)); a -= i; - j = (int)floor(b); + j = static_cast(floor(b)); b -= j; /* get gridded tec data */ diff --git a/src/algorithms/libs/rtklib/rtklib_lambda.cc b/src/algorithms/libs/rtklib/rtklib_lambda.cc index 3130b0e21..e96efb39a 100644 --- a/src/algorithms/libs/rtklib/rtklib_lambda.cc +++ b/src/algorithms/libs/rtklib/rtklib_lambda.cc @@ -84,10 +84,10 @@ void gauss(int n, double *L, double *Z, int i, int j) { int k, mu; - if ((mu = (int)ROUND_LAMBDA(L[i + j * n])) != 0) + if ((mu = static_cast ROUND_LAMBDA(L[i + j * n])) != 0) { - for (k = i; k < n; k++) L[k + n * j] -= (double)mu * L[k + i * n]; - for (k = 0; k < n; k++) Z[k + n * j] -= (double)mu * Z[k + i * n]; + for (k = i; k < n; k++) L[k + n * j] -= static_cast(mu) * L[k + i * n]; + for (k = 0; k < n; k++) Z[k + n * j] -= static_cast(mu) * Z[k + i * n]; } } @@ -197,13 +197,11 @@ int search(int n, int m, const double *L, const double *D, { if (k == n - 1) break; - else - { - k++; - z[k] += step[k]; - y = zb[k] - z[k]; - step[k] = -step[k] - SGN_LAMBDA(step[k]); - } + + k++; + z[k] += step[k]; + y = zb[k] - z[k]; + step[k] = -step[k] - SGN_LAMBDA(step[k]); } } for (i = 0; i < m - 1; i++) diff --git a/src/algorithms/libs/rtklib/rtklib_pntpos.cc b/src/algorithms/libs/rtklib/rtklib_pntpos.cc index 6473b98a0..016037f77 100644 --- a/src/algorithms/libs/rtklib/rtklib_pntpos.cc +++ b/src/algorithms/libs/rtklib/rtklib_pntpos.cc @@ -138,7 +138,7 @@ double prange(const obsd_t *obs, const nav_t *nav, const double *azel, double gamma_ = 0.0; int i = 0; int j = 1; - int sys = satsys(obs->sat, NULL); + int sys = satsys(obs->sat, nullptr); *var = 0.0; if (sys == SYS_NONE) @@ -243,7 +243,7 @@ double prange(const obsd_t *obs, const nav_t *nav, const double *azel, return 0.0; } - else if (obs->code[i] != CODE_NONE and obs->code[j] == CODE_NONE) + if (obs->code[i] != CODE_NONE and obs->code[j] == CODE_NONE) { P1 += P1_C1; /* C1->P1 */ PC = P1 - P1_P2; @@ -416,7 +416,7 @@ int rescode(int iter, const obsd_t *obs, int n, const double *rs, vsat[i] = 0; azel[i * 2] = azel[1 + i * 2] = resp[i] = 0.0; - if (!(sys = satsys(obs[i].sat, NULL))) continue; + if (!(sys = satsys(obs[i].sat, nullptr))) continue; /* reject duplicated observation data */ if (i < n - 1 && i < MAXOBS - 1 && obs[i].sat == obs[i + 1].sat) @@ -609,11 +609,11 @@ int estpos(const obsd_t *obs, int n, const double *rs, const double *dts, sol->dtr[2] = x[5] / SPEED_OF_LIGHT; /* gal-gps time offset (s) */ sol->dtr[3] = x[6] / SPEED_OF_LIGHT; /* bds-gps time offset (s) */ for (j = 0; j < 6; j++) sol->rr[j] = j < 3 ? x[j] : 0.0; - for (j = 0; j < 3; j++) sol->qr[j] = (float)Q[j + j * NX]; - sol->qr[3] = (float)Q[1]; /* cov xy */ - sol->qr[4] = (float)Q[2 + NX]; /* cov yz */ - sol->qr[5] = (float)Q[2]; /* cov zx */ - sol->ns = (unsigned char)ns; + for (j = 0; j < 3; j++) sol->qr[j] = static_cast(Q[j + j * NX]); + sol->qr[3] = static_cast(Q[1]); /* cov xy */ + sol->qr[4] = static_cast(Q[2 + NX]); /* cov yz */ + sol->qr[5] = static_cast(Q[2]); /* cov zx */ + sol->ns = static_cast(ns); sol->age = sol->ratio = 0.0; /* validate solution */ @@ -652,7 +652,7 @@ int raim_fde(const obsd_t *obs, int n, const double *rs, trace(3, "raim_fde: %s n=%2d\n", time_str(obs[0].time, 0), n); - if (!(obs_e = (obsd_t *)malloc(sizeof(obsd_t) * n))) return 0; + if (!(obs_e = static_cast(malloc(sizeof(obsd_t) * n)))) return 0; rs_e = mat(6, n); dts_e = mat(2, n); vare_e = mat(1, n); diff --git a/src/algorithms/libs/rtklib/rtklib_ppp.cc b/src/algorithms/libs/rtklib/rtklib_ppp.cc index 7ac193643..3589ab522 100644 --- a/src/algorithms/libs/rtklib/rtklib_ppp.cc +++ b/src/algorithms/libs/rtklib/rtklib_ppp.cc @@ -51,12 +51,12 @@ *----------------------------------------------------------------------------*/ #include "rtklib_ppp.h" -#include "rtklib_rtkcmn.h" -#include "rtklib_sbas.h" #include "rtklib_ephemeris.h" #include "rtklib_ionex.h" -#include "rtklib_tides.h" #include "rtklib_lambda.h" +#include "rtklib_rtkcmn.h" +#include "rtklib_sbas.h" +#include "rtklib_tides.h" /* wave length of LC (m) -----------------------------------------------------*/ double lam_LC(int i, int j, int k) @@ -187,7 +187,7 @@ void average_LC(rtk_t *rtk, const obsd_t *obs, int n, const nav_t *nav __attribu if (azel[1 + 2 * i] < rtk->opt.elmin) continue; - if (satsys(sat, NULL) != SYS_GPS) continue; + if (satsys(sat, nullptr) != SYS_GPS) continue; /* triple-freq carrier and code LC (m) */ LC1 = L_LC(1, -1, 0, obs[i].L) - P_LC(1, 1, 0, obs[i].P); @@ -518,7 +518,7 @@ int fix_amb_ILS(rtk_t *rtk, int *sat1, int *sat2, int *NW, int n) return 0; } - rtk->sol.ratio = (float)(MIN_PPP(s[1] / s[0], 999.9)); + rtk->sol.ratio = static_cast(MIN_PPP(s[1] / s[0], 999.9)); /* varidation by ratio-test */ if (rtk->opt.thresar[0] > 0.0 && rtk->sol.ratio < rtk->opt.thresar[0]) @@ -683,7 +683,7 @@ void testeclipse(const obsd_t *obs, int n, const nav_t *nav, double *rs) trace(3, "testeclipse:\n"); /* unit vector of sun direction (ecef) */ - sunmoonpos(gpst2utc(obs[0].time), erpv, rsun, NULL, NULL); + sunmoonpos(gpst2utc(obs[0].time), erpv, rsun, nullptr, nullptr); if (normv3(rsun, esun) == 0) trace(1, "Error computing the norm"); for (i = 0; i < n; i++) @@ -779,7 +779,7 @@ int ifmeas(const obsd_t *obs, const nav_t *nav, const double *azel, trace(4, "ifmeas :\n"); /* L1-L2 for GPS/GLO/QZS, L1-L5 for GAL/SBS */ - if (NFREQ >= 3 && (satsys(obs->sat, NULL) & (SYS_GAL | SYS_SBS))) j = 2; + if (NFREQ >= 3 && (satsys(obs->sat, nullptr) & (SYS_GAL | SYS_SBS))) j = 2; if (NFREQ < 2 || lam[i] == 0.0 || lam[j] == 0.0) return 0; @@ -817,7 +817,7 @@ int ifmeas(const obsd_t *obs, const nav_t *nav, const double *azel, if (opt->sateph == EPHOPT_SBAS) meas[1] -= P1_C1; /* sbas clock based C1 */ /* gps-glonass h/w bias correction for code */ - if (opt->exterr.ena[3] && satsys(obs->sat, NULL) == SYS_GLO) + if (opt->exterr.ena[3] && satsys(obs->sat, nullptr) == SYS_GLO) { meas[1] += c1 * opt->exterr.gpsglob[0] + c2 * opt->exterr.gpsglob[1]; } @@ -913,7 +913,7 @@ int corrmeas(const obsd_t *obs, const nav_t *nav, const double *pos, gamma = std::pow(lam[1] / lam[0], 2.0); /* f1^2/f2^2 */ P1_P2 = nav->cbias[obs->sat - 1][0]; P1_C1 = nav->cbias[obs->sat - 1][1]; - if (P1_P2 == 0.0 && (satsys(obs->sat, NULL) & (SYS_GPS | SYS_GAL | SYS_QZS))) + if (P1_P2 == 0.0 && (satsys(obs->sat, nullptr) & (SYS_GPS | SYS_GAL | SYS_QZS))) { P1_P2 = (1.0 - gamma) * gettgd_ppp(obs->sat, nav); } @@ -1113,7 +1113,7 @@ void udbias_ppp(rtk_t *rtk, const obsd_t *obs, int n, const nav_t *nav) /* reset phase-bias if expire obs outage counter */ for (i = 0; i < MAXSAT; i++) { - if (++rtk->ssat[i].outc[0] > (unsigned int)rtk->opt.maxout) + if (++rtk->ssat[i].outc[0] > static_cast(rtk->opt.maxout)) { initx(rtk, 0.0, 0.0, IB_PPP(i + 1, &rtk->opt)); } @@ -1124,7 +1124,7 @@ void udbias_ppp(rtk_t *rtk, const obsd_t *obs, int n, const nav_t *nav) { sat = obs[i].sat; j = IB_PPP(sat, &rtk->opt); - if (!corrmeas(obs + i, nav, pos, rtk->ssat[sat - 1].azel, &rtk->opt, NULL, NULL, + if (!corrmeas(obs + i, nav, pos, rtk->ssat[sat - 1].azel, &rtk->opt, nullptr, nullptr, 0.0, meas, var, &brk)) continue; if (brk) @@ -1273,7 +1273,7 @@ int res_ppp(int iter __attribute__((unused)), const obsd_t *obs, int n, const do for (i = 0; i < n && i < MAXOBS; i++) { sat = obs[i].sat; - if (!(sys = satsys(sat, NULL)) || !rtk->ssat[sat - 1].vs) continue; + if (!(sys = satsys(sat, nullptr)) || !rtk->ssat[sat - 1].vs) continue; /* geometric distance/azimuth/elevation angle */ if ((r = geodist(rs + i * 6, rr, e)) <= 0.0 || @@ -1492,11 +1492,11 @@ void pppos(rtk_t *rtk, const obsd_t *obs, int n, const nav_t *nav) for (i = 0; i < 3; i++) { rtk->sol.rr[i] = rtk->x[i]; - rtk->sol.qr[i] = (float)rtk->P[i + i * rtk->nx]; + rtk->sol.qr[i] = static_cast(rtk->P[i + i * rtk->nx]); } - rtk->sol.qr[3] = (float)rtk->P[1]; - rtk->sol.qr[4] = (float)rtk->P[2 + rtk->nx]; - rtk->sol.qr[5] = (float)rtk->P[2]; + rtk->sol.qr[3] = static_cast(rtk->P[1]); + rtk->sol.qr[4] = static_cast(rtk->P[2 + rtk->nx]); + rtk->sol.qr[5] = static_cast(rtk->P[2]); rtk->sol.dtr[0] = rtk->x[IC_PPP(0, opt)]; rtk->sol.dtr[1] = rtk->x[IC_PPP(1, opt)] - rtk->x[IC_PPP(0, opt)]; for (i = 0; i < n && i < MAXOBS; i++) diff --git a/src/algorithms/libs/rtklib/rtklib_preceph.cc b/src/algorithms/libs/rtklib/rtklib_preceph.cc index 293d86543..72c62fbf1 100644 --- a/src/algorithms/libs/rtklib/rtklib_preceph.cc +++ b/src/algorithms/libs/rtklib/rtklib_preceph.cc @@ -98,12 +98,12 @@ int readsp3h(FILE *fp, gtime_t *time, char *type, int *sats, { if (i == 2) { - ns = (int)str2num(buff, 4, 2); + ns = static_cast(str2num(buff, 4, 2)); } for (j = 0; j < 17 && k < ns; j++) { sys = code2sys(buff[9 + 3 * j]); - prn = (int)str2num(buff, 10 + 3 * j, 2); + prn = static_cast(str2num(buff, 10 + 3 * j, 2)); if (k < MAXSAT) sats[k++] = satno(sys, prn); } } @@ -130,11 +130,11 @@ int addpeph(nav_t *nav, peph_t *peph) if (nav->ne >= nav->nemax) { nav->nemax += 256; - if (!(nav_peph = (peph_t *)realloc(nav->peph, sizeof(peph_t) * nav->nemax))) + if (!(nav_peph = static_cast(realloc(nav->peph, sizeof(peph_t) * nav->nemax)))) { trace(1, "readsp3b malloc error n=%d\n", nav->nemax); free(nav->peph); - nav->peph = NULL; + nav->peph = nullptr; nav->ne = nav->nemax = 0; return 0; } @@ -146,7 +146,7 @@ int addpeph(nav_t *nav, peph_t *peph) /* read sp3 body -------------------------------------------------------------*/ -void readsp3b(FILE *fp, char type, int *sats __attribute__((unused)), int ns, double *bfact, +void readsp3b(FILE *fp, char type, int *sats __attribute__((unused)), int ns, const double *bfact, char *tsys, int index, int opt, nav_t *nav) { peph_t peph; @@ -190,7 +190,7 @@ void readsp3b(FILE *fp, char type, int *sats __attribute__((unused)), int ns, do if (strlen(buff) < 4 || (buff[0] != 'P' && buff[0] != 'V')) continue; sys = buff[1] == ' ' ? SYS_GPS : code2sys(buff[1]); - prn = (int)str2num(buff, 2, 2); + prn = static_cast(str2num(buff, 2, 2)); if (sys == SYS_SBS) prn += 100; else if (sys == SYS_QZS) @@ -223,7 +223,7 @@ void readsp3b(FILE *fp, char type, int *sats __attribute__((unused)), int ns, do } if ((base = bfact[j < 3 ? 0 : 1]) > 0.0 && std > 0.0) { - peph.std[sat - 1][j] = (float)(std::pow(base, std) * (j < 3 ? 1e-3 : 1e-12)); + peph.std[sat - 1][j] = static_cast(std::pow(base, std) * (j < 3 ? 1e-3 : 1e-12)); } } else if (v) @@ -234,7 +234,7 @@ void readsp3b(FILE *fp, char type, int *sats __attribute__((unused)), int ns, do } if ((base = bfact[j < 3 ? 0 : 1]) > 0.0 && std > 0.0) { - peph.vst[sat - 1][j] = (float)(std::pow(base, std) * (j < 3 ? 1e-7 : 1e-16)); + peph.vst[sat - 1][j] = static_cast(std::pow(base, std) * (j < 3 ? 1e-7 : 1e-16)); } } } @@ -250,7 +250,7 @@ void readsp3b(FILE *fp, char type, int *sats __attribute__((unused)), int ns, do /* compare precise ephemeris -------------------------------------------------*/ int cmppeph(const void *p1, const void *p2) { - peph_t *q1 = (peph_t *)p1, *q2 = (peph_t *)p2; + auto *q1 = (peph_t *)p1, *q2 = (peph_t *)p2; double tt = timediff(q1->time, q2->time); return tt < -1e-9 ? -1 : (tt > 1e-9 ? 1 : q1->index - q2->index); } @@ -315,7 +315,7 @@ void readsp3(const char *file, nav_t *nav, int opt) for (i = 0; i < MAXEXFILE; i++) { - if (!(efiles[i] = (char *)malloc(1024))) + if (!(efiles[i] = static_cast(malloc(1024)))) { for (i--; i >= 0; i--) free(efiles[i]); return; @@ -331,7 +331,7 @@ void readsp3(const char *file, nav_t *nav, int opt) if (!strstr(ext + 1, "sp3") && !strstr(ext + 1, ".SP3") && !strstr(ext + 1, "eph") && !strstr(ext + 1, ".EPH")) continue; - if (!(fp = fopen(efiles[i], "r"))) + if (!(fp = fopen(efiles[i], "re"))) { trace(2, "sp3 file open error %s\n", efiles[i]); continue; @@ -361,7 +361,7 @@ void readsp3(const char *file, nav_t *nav, int opt) *-----------------------------------------------------------------------------*/ int readsap(const char *file, gtime_t time, nav_t *nav) { - pcvs_t pcvs = {0, 0, (pcv_t *){0}}; + pcvs_t pcvs = {0, 0, (pcv_t *){nullptr}}; pcv_t pcv0 = {0, {}, {}, {0, 0}, {0, 0}, {{}, {}}, {{}, {}}}, *pcv; int i; @@ -389,7 +389,7 @@ int readdcbf(const char *file, nav_t *nav, const sta_t *sta) trace(3, "readdcbf: file=%s\n", file); - if (!(fp = fopen(file, "r"))) + if (!(fp = fopen(file, "re"))) { trace(2, "dcb parameters file open error: %s\n", file); return 0; @@ -453,7 +453,7 @@ int readdcb(const char *file, nav_t *nav, const sta_t *sta) } for (i = 0; i < MAXEXFILE; i++) { - if (!(efiles[i] = (char *)malloc(1024))) + if (!(efiles[i] = static_cast(malloc(1024)))) { for (i--; i >= 0; i--) free(efiles[i]); return 0; @@ -490,7 +490,7 @@ int addfcb(nav_t *nav, gtime_t ts, gtime_t te, int sat, if (nav->nf >= nav->nfmax) { nav->nfmax = nav->nfmax <= 0 ? 2048 : nav->nfmax * 2; - if (!(nav_fcb = (fcbd_t *)realloc(nav->fcb, sizeof(fcbd_t) * nav->nfmax))) + if (!(nav_fcb = static_cast(realloc(nav->fcb, sizeof(fcbd_t) * nav->nfmax)))) { free(nav->fcb); nav->nf = nav->nfmax = 0; @@ -525,7 +525,7 @@ int readfcbf(const char *file, nav_t *nav) trace(3, "readfcbf: file=%s\n", file); - if (!(fp = fopen(file, "r"))) + if (!(fp = fopen(file, "re"))) { trace(2, "fcb parameters file open error: %s\n", file); return 0; @@ -556,7 +556,7 @@ int readfcbf(const char *file, nav_t *nav) /* compare satellite fcb -----------------------------------------------------*/ int cmpfcb(const void *p1, const void *p2) { - fcbd_t *q1 = (fcbd_t *)p1, *q2 = (fcbd_t *)p2; + auto *q1 = (fcbd_t *)p1, *q2 = (fcbd_t *)p2; double tt = timediff(q1->ts, q2->ts); return tt < -1e-3 ? -1 : (tt > 1e-3 ? 1 : 0); } @@ -578,7 +578,7 @@ int readfcb(const char *file, nav_t *nav) for (i = 0; i < MAXEXFILE; i++) { - if (!(efiles[i] = (char *)malloc(1024))) + if (!(efiles[i] = static_cast(malloc(1024)))) { for (i--; i >= 0; i--) free(efiles[i]); return 0; @@ -809,7 +809,7 @@ void satantoff(gtime_t time, const double *rs, int sat, const nav_t *nav, trace(4, "satantoff: time=%s sat=%2d\n", time_str(time, 3), sat); /* sun position in ecef */ - sunmoonpos(gpst2utc(time), erpv, rsun, NULL, &gmst); + sunmoonpos(gpst2utc(time), erpv, rsun, nullptr, &gmst); /* unit vectors of satellite fixed coordinates */ for (i = 0; i < 3; i++) r[i] = -rs[i]; @@ -820,7 +820,7 @@ void satantoff(gtime_t time, const double *rs, int sat, const nav_t *nav, if (!normv3(r, ey)) return; cross3(ey, ez, ex); - if (NFREQ >= 3 && (satsys(sat, NULL) & (SYS_GAL | SYS_SBS))) k = 2; + if (NFREQ >= 3 && (satsys(sat, nullptr) & (SYS_GAL | SYS_SBS))) k = 2; if (NFREQ < 2 || lam[j] == 0.0 || lam[k] == 0.0) return; @@ -871,8 +871,8 @@ int peph2pos(gtime_t time, int sat, const nav_t *nav, int opt, !pephclk(time, sat, nav, dtss, &varc)) return 0; time = timeadd(time, tt); - if (!pephpos(time, sat, nav, rst, dtst, NULL, NULL) || - !pephclk(time, sat, nav, dtst, NULL)) return 0; + if (!pephpos(time, sat, nav, rst, dtst, nullptr, nullptr) || + !pephclk(time, sat, nav, dtst, nullptr)) return 0; /* satellite antenna offset correction */ if (opt) diff --git a/src/algorithms/libs/rtklib/rtklib_preceph.h b/src/algorithms/libs/rtklib/rtklib_preceph.h index 24b0b610c..1186b6a88 100644 --- a/src/algorithms/libs/rtklib/rtklib_preceph.h +++ b/src/algorithms/libs/rtklib/rtklib_preceph.h @@ -75,7 +75,7 @@ int code2sys(char code); int readsp3h(FILE *fp, gtime_t *time, char *type, int *sats, double *bfact, char *tsys); int addpeph(nav_t *nav, peph_t *peph); -void readsp3b(FILE *fp, char type, int *sats, int ns, double *bfact, +void readsp3b(FILE *fp, char type, int *sats, int ns, const double *bfact, char *tsys, int index, int opt, nav_t *nav); int cmppeph(const void *p1, const void *p2); void combpeph(nav_t *nav, int opt); diff --git a/src/algorithms/libs/rtklib/rtklib_rtcm.cc b/src/algorithms/libs/rtklib/rtklib_rtcm.cc index e122ebead..c82065d2c 100644 --- a/src/algorithms/libs/rtklib/rtklib_rtcm.cc +++ b/src/algorithms/libs/rtklib/rtklib_rtcm.cc @@ -88,7 +88,7 @@ int init_rtcm(rtcm_t *rtcm) rtcm->sta.pos[i] = rtcm->sta.del[i] = 0.0; } rtcm->sta.hgt = 0.0; - rtcm->dgps = NULL; + rtcm->dgps = nullptr; for (i = 0; i < MAXSAT; i++) { rtcm->ssr[i] = ssr0; @@ -108,14 +108,14 @@ int init_rtcm(rtcm_t *rtcm) for (i = 0; i < 100; i++) rtcm->nmsg2[i] = 0; for (i = 0; i < 300; i++) rtcm->nmsg3[i] = 0; - rtcm->obs.data = NULL; - rtcm->nav.eph = NULL; - rtcm->nav.geph = NULL; + rtcm->obs.data = nullptr; + rtcm->nav.eph = nullptr; + rtcm->nav.geph = nullptr; /* reallocate memory for observation and ephemris buffer */ - if (!(rtcm->obs.data = (obsd_t *)malloc(sizeof(obsd_t) * MAXOBS)) || - !(rtcm->nav.eph = (eph_t *)malloc(sizeof(eph_t) * MAXSAT)) || - !(rtcm->nav.geph = (geph_t *)malloc(sizeof(geph_t) * MAXPRNGLO))) + if (!(rtcm->obs.data = static_cast(malloc(sizeof(obsd_t) * MAXOBS))) || + !(rtcm->nav.eph = static_cast(malloc(sizeof(eph_t) * MAXSAT))) || + !(rtcm->nav.geph = static_cast(malloc(sizeof(geph_t) * MAXPRNGLO)))) { free_rtcm(rtcm); return 0; @@ -141,13 +141,13 @@ void free_rtcm(rtcm_t *rtcm) /* free memory for observation and ephemeris buffer */ free(rtcm->obs.data); - rtcm->obs.data = NULL; + rtcm->obs.data = nullptr; rtcm->obs.n = 0; free(rtcm->nav.eph); - rtcm->nav.eph = NULL; + rtcm->nav.eph = nullptr; rtcm->nav.n = 0; free(rtcm->nav.geph); - rtcm->nav.geph = NULL; + rtcm->nav.geph = nullptr; rtcm->nav.ng = 0; } @@ -182,7 +182,7 @@ int input_rtcm2(rtcm_t *rtcm, unsigned char data) /* synchronize frame */ if (rtcm->nbyte == 0) { - preamb = (unsigned char)(rtcm->word >> 22); + preamb = static_cast(rtcm->word >> 22); if (rtcm->word & 0x40000000) preamb ^= 0xFF; /* decode preamble */ if (preamb != RTCM2PREAMB) continue; @@ -194,8 +194,8 @@ int input_rtcm2(rtcm_t *rtcm, unsigned char data) } if (++rtcm->nbit < 30) continue; - else - rtcm->nbit = 0; + + rtcm->nbit = 0; /* check parity */ if (!decode_word(rtcm->word, rtcm->buff + rtcm->nbyte)) @@ -330,7 +330,7 @@ int input_rtcm2f(rtcm_t *rtcm, FILE *fp) for (i = 0; i < 4096; i++) { if ((data = fgetc(fp)) == EOF) return -2; - if ((ret = input_rtcm2(rtcm, (unsigned char)data))) return ret; + if ((ret = input_rtcm2(rtcm, static_cast(data)))) return ret; } return 0; /* return at every 4k bytes */ } @@ -352,7 +352,7 @@ int input_rtcm3f(rtcm_t *rtcm, FILE *fp) for (i = 0; i < 4096; i++) { if ((data = fgetc(fp)) == EOF) return -2; - if ((ret = input_rtcm3(rtcm, (unsigned char)data))) return ret; + if ((ret = input_rtcm3(rtcm, static_cast(data)))) return ret; } return 0; /* return at every 4k bytes */ } diff --git a/src/algorithms/libs/rtklib/rtklib_rtcm3.cc b/src/algorithms/libs/rtklib/rtklib_rtcm3.cc index babc88f5f..ef11206a5 100644 --- a/src/algorithms/libs/rtklib/rtklib_rtcm3.cc +++ b/src/algorithms/libs/rtklib/rtklib_rtcm3.cc @@ -173,7 +173,7 @@ double adjcp(rtcm_t *rtcm, int sat, int freq, double cp) int lossoflock(rtcm_t *rtcm, int sat, int freq, int lock) { int lli = (!lock && !rtcm->lock[sat - 1][freq]) || lock < rtcm->lock[sat - 1][freq]; - rtcm->lock[sat - 1][freq] = (unsigned short)lock; + rtcm->lock[sat - 1][freq] = static_cast(lock); return lli; } @@ -181,7 +181,7 @@ int lossoflock(rtcm_t *rtcm, int sat, int freq, int lock) /* s/n ratio -----------------------------------------------------------------*/ unsigned char snratio(double snr) { - return (unsigned char)(snr <= 0.0 || 255.5 <= snr ? 0.0 : snr * 4.0 + 0.5); + return static_cast(snr <= 0.0 || 255.5 <= snr ? 0.0 : snr * 4.0 + 0.5); } @@ -337,7 +337,7 @@ int decode_type1002(rtcm_t *rtcm) } if ((index = obsindex3(&rtcm->obs, rtcm->time, sat)) < 0) continue; pr1 = pr1 * 0.02 + amb * PRUNIT_GPS; - if (ppr1 != (int)0xFFF80000) + if (ppr1 != static_cast(0xFFF80000)) { rtcm->obs.data[index].P[0] = pr1; cp1 = adjcp(rtcm, sat, 0, ppr1 * 0.0005 / lam_carr[0]); @@ -418,7 +418,7 @@ int decode_type1004(rtcm_t *rtcm) } if ((index = obsindex3(&rtcm->obs, rtcm->time, sat)) < 0) continue; pr1 = pr1 * 0.02 + amb * PRUNIT_GPS; - if (ppr1 != (int)0xFFF80000) + if (ppr1 != static_cast(0xFFF80000)) { rtcm->obs.data[index].P[0] = pr1; cp1 = adjcp(rtcm, sat, 0, ppr1 * 0.0005 / lam_carr[0]); @@ -428,11 +428,11 @@ int decode_type1004(rtcm_t *rtcm) rtcm->obs.data[index].SNR[0] = snratio(cnr1 * 0.25); rtcm->obs.data[index].code[0] = code1 ? CODE_L1P : CODE_L1C; - if (pr21 != (int)0xFFFFE000) + if (pr21 != static_cast(0xFFFFE000)) { rtcm->obs.data[index].P[1] = pr1 + pr21 * 0.02; } - if (ppr2 != (int)0xFFF80000) + if (ppr2 != static_cast(0xFFF80000)) { cp2 = adjcp(rtcm, sat, 1, ppr2 * 0.0005 / lam_carr[1]); rtcm->obs.data[index].L[1] = pr1 / lam_carr[1] + cp2; @@ -449,7 +449,7 @@ int decode_type1004(rtcm_t *rtcm) /* get signed 38bit field ----------------------------------------------------*/ double getbits_38(const unsigned char *buff, int pos) { - return (double)getbits(buff, pos, 32) * 64.0 + getbitu(buff, pos + 32, 6); + return static_cast(getbits(buff, pos, 32)) * 64.0 + getbitu(buff, pos + 32, 6); } @@ -564,7 +564,7 @@ int decode_type1007(rtcm_t *rtcm) i += 12 + 8; for (j = 0; j < n && j < 31; j++) { - des[j] = (char)getbitu(rtcm->buff, i, 8); + des[j] = static_cast(getbitu(rtcm->buff, i, 8)); i += 8; } setup = getbitu(rtcm->buff, i, 8); @@ -606,14 +606,14 @@ int decode_type1008(rtcm_t *rtcm) i += 12 + 8; for (j = 0; j < n && j < 31; j++) { - des[j] = (char)getbitu(rtcm->buff, i, 8); + des[j] = static_cast(getbitu(rtcm->buff, i, 8)); i += 8; } setup = getbitu(rtcm->buff, i, 8); i += 8 + 8; for (j = 0; j < m && j < 31; j++) { - sno[j] = (char)getbitu(rtcm->buff, i, 8); + sno[j] = static_cast(getbitu(rtcm->buff, i, 8)); i += 8; } } @@ -730,7 +730,7 @@ int decode_type1010(rtcm_t *rtcm) } if ((index = obsindex3(&rtcm->obs, rtcm->time, sat)) < 0) continue; pr1 = pr1 * 0.02 + amb * PRUNIT_GLO; - if (ppr1 != (int)0xFFF80000) + if (ppr1 != static_cast(0xFFF80000)) { rtcm->obs.data[index].P[0] = pr1; lam1 = SPEED_OF_LIGHT / (FREQ1_GLO + DFRQ1_GLO * (freq - 7)); @@ -804,7 +804,7 @@ int decode_type1012(rtcm_t *rtcm) } if ((index = obsindex3(&rtcm->obs, rtcm->time, sat)) < 0) continue; pr1 = pr1 * 0.02 + amb * PRUNIT_GLO; - if (ppr1 != (int)0xFFF80000) + if (ppr1 != static_cast(0xFFF80000)) { lam1 = SPEED_OF_LIGHT / (FREQ1_GLO + DFRQ1_GLO * (freq - 7)); rtcm->obs.data[index].P[0] = pr1; @@ -815,11 +815,11 @@ int decode_type1012(rtcm_t *rtcm) rtcm->obs.data[index].SNR[0] = snratio(cnr1 * 0.25); rtcm->obs.data[index].code[0] = code1 ? CODE_L1P : CODE_L1C; - if (pr21 != (int)0xFFFFE000) + if (pr21 != static_cast(0xFFFFE000)) { rtcm->obs.data[index].P[1] = pr1 + pr21 * 0.02; } - if (ppr2 != (int)0xFFF80000) + if (ppr2 != static_cast(0xFFF80000)) { lam2 = SPEED_OF_LIGHT / (FREQ2_GLO + DFRQ2_GLO * (freq - 7)); cp2 = adjcp(rtcm, sat, 1, ppr2 * 0.0005 / lam2); @@ -1189,32 +1189,32 @@ int decode_type1033(rtcm_t *rtcm) i += 12 + 8; for (j = 0; j < n && j < 31; j++) { - des[j] = (char)getbitu(rtcm->buff, i, 8); + des[j] = static_cast(getbitu(rtcm->buff, i, 8)); i += 8; } setup = getbitu(rtcm->buff, i, 8); i += 8 + 8; for (j = 0; j < m && j < 31; j++) { - sno[j] = (char)getbitu(rtcm->buff, i, 8); + sno[j] = static_cast(getbitu(rtcm->buff, i, 8)); i += 8; } i += 8; for (j = 0; j < n1 && j < 31; j++) { - rec[j] = (char)getbitu(rtcm->buff, i, 8); + rec[j] = static_cast(getbitu(rtcm->buff, i, 8)); i += 8; } i += 8; for (j = 0; j < n2 && j < 31; j++) { - ver[j] = (char)getbitu(rtcm->buff, i, 8); + ver[j] = static_cast(getbitu(rtcm->buff, i, 8)); i += 8; } i += 8; for (j = 0; j < n3 && j < 31; j++) { - rsn[j] = (char)getbitu(rtcm->buff, i, 8); + rsn[j] = static_cast(getbitu(rtcm->buff, i, 8)); i += 8; } } @@ -2222,7 +2222,7 @@ int decode_ssr3(rtcm_t *rtcm, int sys) i += 14; if (mode <= ncode) { - cbias[codes[mode] - 1] = (float)bias; + cbias[codes[mode] - 1] = static_cast(bias); } else { @@ -2240,7 +2240,7 @@ int decode_ssr3(rtcm_t *rtcm, int sys) for (k = 0; k < MAXCODE; k++) { - rtcm->ssr[sat - 1].cbias[k] = (float)cbias[k]; + rtcm->ssr[sat - 1].cbias[k] = static_cast(cbias[k]); } rtcm->ssr[sat - 1].update = 1; } @@ -2579,7 +2579,7 @@ int decode_ssr7(rtcm_t *rtcm, int sys) for (k = 0; k < MAXCODE; k++) { rtcm->ssr[sat - 1].pbias[k] = pbias[k]; - rtcm->ssr[sat - 1].stdpb[k] = (float)stdpb[k]; + rtcm->ssr[sat - 1].stdpb[k] = static_cast(stdpb[k]); } } return 20; @@ -2643,7 +2643,7 @@ void save_msm_obs(rtcm_t *rtcm, int sys, msm_h_t *h, const double *r, const char *sig[32]; double tt, wl; unsigned char code[32]; - char *msm_type = (char *)"", *q = NULL; + char *msm_type = (char *)"", *q = nullptr; int i, j, k, type, prn, sat, fn, index = 0, freq[32], ind[32]; type = getbitu(rtcm->buff, 24, 12); @@ -2773,11 +2773,11 @@ void save_msm_obs(rtcm_t *rtcm, int sys, msm_h_t *h, const double *r, /* doppler (hz) */ if (rr && rrf && rrf[j] > -1E12 && wl > 0.0) { - rtcm->obs.data[index].D[ind[k]] = (float)(-(rr[i] + rrf[j]) / wl); + rtcm->obs.data[index].D[ind[k]] = static_cast(-(rr[i] + rrf[j]) / wl); } rtcm->obs.data[index].LLI[ind[k]] = lossoflock(rtcm, sat, ind[k], lock[j]) + (half[j] ? 3 : 0); - rtcm->obs.data[index].SNR[ind[k]] = (unsigned char)(cnr[j] * 4.0); + rtcm->obs.data[index].SNR[ind[k]] = static_cast(cnr[j] * 4.0); rtcm->obs.data[index].code[ind[k]] = code[k]; } j++; @@ -2966,7 +2966,7 @@ int decode_msm4(rtcm_t *rtcm, int sys) i += 6; } /* save obs data in msm message */ - save_msm_obs(rtcm, sys, &h, r, pr, cp, NULL, NULL, cnr, lock, NULL, half); + save_msm_obs(rtcm, sys, &h, r, pr, cp, nullptr, nullptr, cnr, lock, nullptr, half); rtcm->obsflag = !sync; return sync ? 0 : 1; @@ -3128,7 +3128,7 @@ int decode_msm6(rtcm_t *rtcm, int sys) i += 10; } /* save obs data in msm message */ - save_msm_obs(rtcm, sys, &h, r, pr, cp, NULL, NULL, cnr, lock, NULL, half); + save_msm_obs(rtcm, sys, &h, r, pr, cp, nullptr, nullptr, cnr, lock, nullptr, half); rtcm->obsflag = !sync; return sync ? 0 : 1; diff --git a/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc b/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc index f7e4e76c5..9eea3a0b2 100644 --- a/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc +++ b/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc @@ -54,10 +54,10 @@ //#include #include #include -#include #include -#include +#include #include +#include #include @@ -111,7 +111,7 @@ const char *formatstrs[32] = {/* stream format strings */ "RINEX CLK", /* 18 */ "SBAS", /* 19 */ "NMEA 0183", /* 20 */ - NULL}; + nullptr}; char obscodes[][3] = { @@ -150,10 +150,10 @@ char codepris[7][MAXFREQ][16] = { }; -fatalfunc_t *fatalfunc = NULL; /* fatal callback function */ +fatalfunc_t *fatalfunc = nullptr; /* fatal callback function */ /* crc tables generated by util/gencrc ---------------------------------------*/ -const unsigned short tbl_CRC16[] = { +const uint16_t tbl_CRC16[] = { 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, @@ -469,7 +469,7 @@ void satno2id(int sat, char *id) *-----------------------------------------------------------------------------*/ int satexclude(int sat, int svh, const prcopt_t *opt) { - int sys = satsys(sat, NULL); + int sys = satsys(sat, nullptr); if (svh < 0) { @@ -519,7 +519,7 @@ int testsnr(int base, int freq, double el, double snr, if (!mask->ena[base] || freq < 0 || freq >= NFREQ) return 0; a = (el * R2D + 5.0) / 10.0; - i = (int)floor(a); + i = static_cast(floor(a)); a -= i; if (i < 1) minsnr = mask->mask[freq][0]; @@ -546,9 +546,9 @@ unsigned char obs2code(const char *obs, int *freq) if (freq) *freq = 0; for (i = 1; *obscodes[i]; i++) { - if (strcmp(obscodes[i], obs)) continue; + if (strcmp(obscodes[i], obs) != 0) continue; if (freq) *freq = obsfreqs[i]; - return (unsigned char)i; + return static_cast(i); } return CODE_NONE; } @@ -657,7 +657,7 @@ int getcodepri(int sys, unsigned char code, const char *opt) return str[1] == obs[1] ? 15 : 0; } /* search code priority */ - return (p = strchr(codepris[i][j - 1], obs[1])) ? 14 - (int)(p - codepris[i][j - 1]) : 0; + return (p = strchr(codepris[i][j - 1], obs[1])) ? 14 - static_cast(p - codepris[i][j - 1]) : 0; } @@ -680,8 +680,8 @@ unsigned int getbitu(const unsigned char *buff, int pos, int len) int getbits(const unsigned char *buff, int pos, int len) { unsigned int bits = getbitu(buff, pos, len); - if (len <= 0 || 32 <= len || !(bits & (1u << (len - 1)))) return (int)bits; - return (int)(bits | (~0u << len)); /* extend sign */ + if (len <= 0 || 32 <= len || !(bits & (1u << (len - 1)))) return static_cast(bits); + return static_cast(bits | (~0u << len)); /* extend sign */ } @@ -714,7 +714,7 @@ void setbits(unsigned char *buff, int pos, int len, int data) data |= 1 << (len - 1); else data &= ~(1 << (len - 1)); /* set sign bit */ - setbitu(buff, pos, len, (unsigned int)data); + setbitu(buff, pos, len, static_cast(data)); } @@ -773,9 +773,9 @@ unsigned int rtk_crc24q(const unsigned char *buff, int len) * return : crc-16 parity * notes : see reference [10] A.3. *-----------------------------------------------------------------------------*/ -unsigned short rtk_crc16(const unsigned char *buff, int len) +uint16_t rtk_crc16(const unsigned char *buff, int len) { - unsigned short crc = 0; + uint16_t crc = 0; int i; trace(4, "rtk_crc16: len=%d\n", len); @@ -815,7 +815,7 @@ int decode_word(unsigned int word, unsigned char *data) } if (parity != (word & 0x3F)) return 0; - for (i = 0; i < 3; i++) data[i] = (unsigned char)(word >> (22 - i * 8)); + for (i = 0; i < 3; i++) data[i] = static_cast(word >> (22 - i * 8)); return 1; } @@ -829,8 +829,8 @@ double *mat(int n, int m) { double *p; - if (n <= 0 || m <= 0) return NULL; - if (!(p = (double *)malloc(sizeof(double) * n * m))) + if (n <= 0 || m <= 0) return nullptr; + if (!(p = static_cast(malloc(sizeof(double) * n * m)))) { fatalerr("matrix memory allocation error: n=%d,m=%d\n", n, m); } @@ -847,8 +847,8 @@ int *imat(int n, int m) { int *p; - if (n <= 0 || m <= 0) return NULL; - if (!(p = (int *)malloc(sizeof(int) * n * m))) + if (n <= 0 || m <= 0) return nullptr; + if (!(p = static_cast(malloc(sizeof(int) * n * m)))) { fatalerr("integer matrix memory allocation error: n=%d,m=%d\n", n, m); } @@ -869,8 +869,8 @@ double *zeros(int n, int m) if ((p = mat(n, m))) for (n = n * m - 1; n >= 0; n--) p[n] = 0.0; #else - if (n <= 0 || m <= 0) return NULL; - if (!(p = (double *)calloc(sizeof(double), n * m))) + if (n <= 0 || m <= 0) return nullptr; + if (!(p = static_cast(calloc(sizeof(double), n * m)))) { fatalerr("matrix memory allocation error: n=%d,m=%d\n", n, m); } @@ -983,7 +983,7 @@ void matmul(const char *tr, int n, int k, int m, double alpha, { int lda = tr[0] == 'T' ? m : n, ldb = tr[1] == 'T' ? k : m; - dgemm_((char *)tr, (char *)tr + 1, &n, &k, &m, &alpha, (double *)A, &lda, (double *)B, + dgemm_(const_cast(tr), const_cast(tr) + 1, &n, &k, &m, &alpha, const_cast(A), &lda, const_cast(B), &ldb, &beta, C, &n); } @@ -1028,7 +1028,7 @@ int solve(const char *tr, const double *A, const double *Y, int n, matcpy(B, A, n, n); matcpy(X, Y, n, m); dgetrf_(&n, &n, B, &n, ipiv, &info); - if (!info) dgetrs_((char *)tr, &n, &m, B, &n, ipiv, X, &n, &info); + if (!info) dgetrs_(const_cast(tr), &n, &m, B, &n, ipiv, X, &n, &info); free(ipiv); free(B); return info; @@ -1239,7 +1239,7 @@ double str2num(const char *s, int i, int n) double value; char str[256], *p = str; - if (i < 0 || (int)strlen(s) < i || (int)sizeof(str) - 1 < n) return 0.0; + if (i < 0 || static_cast(strlen(s)) < i || static_cast(sizeof(str)) - 1 < n) return 0.0; for (s += i; *s && --n >= 0; s++) { *p++ = *s == 'd' || *s == 'D' ? 'E' : *s; @@ -1261,7 +1261,7 @@ int str2time(const char *s, int i, int n, gtime_t *t) double ep[6]; char str[256], *p = str; - if (i < 0 || (int)strlen(s) < i || (int)sizeof(str) - 1 < i) return -1; + if (i < 0 || static_cast(strlen(s)) < i || static_cast(sizeof(str)) - 1 < i) return -1; for (s += i; *s && --n >= 0;) { *p++ = *s++; @@ -1285,14 +1285,14 @@ gtime_t epoch2time(const double *ep) { const int doy[] = {1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335}; gtime_t time = {0, 0}; - int days, sec, year = (int)ep[0], mon = (int)ep[1], day = (int)ep[2]; + int days, sec, year = static_cast(ep[0]), mon = static_cast(ep[1]), day = static_cast(ep[2]); if (year < 1970 || 2099 < year || mon < 1 || 12 < mon) return time; /* leap year if year%4==0 in 1901-2099 */ days = (year - 1970) * 365 + (year - 1969) / 4 + doy[mon - 1] + day - 2 + (year % 4 == 0 && mon >= 3 ? 1 : 0); - sec = (int)floor(ep[5]); - time.time = (time_t)days * 86400 + (int)ep[3] * 3600 + (int)ep[4] * 60 + sec; + sec = static_cast(floor(ep[5])); + time.time = static_cast(days) * 86400 + static_cast(ep[3]) * 3600 + static_cast(ep[4]) * 60 + sec; time.sec = ep[5] - sec; return time; } @@ -1313,8 +1313,8 @@ void time2epoch(gtime_t t, double *ep) int days, sec, mon, day; /* leap year if year%4==0 in 1901-2099 */ - days = (int)(t.time / 86400); - sec = (int)(t.time - (time_t)days * 86400); + days = static_cast(t.time / 86400); + sec = static_cast(t.time - static_cast(days) * 86400); for (day = days % 1461, mon = 0; mon < 48; mon++) { if (day >= mday[mon]) @@ -1342,8 +1342,8 @@ gtime_t gpst2time(int week, double sec) gtime_t t = epoch2time(gpst0); if (sec < -1e9 || 1e9 < sec) sec = 0.0; - t.time += (time_t)86400 * 7 * week + (int)sec; - t.sec = sec - (int)sec; + t.time += static_cast(86400) * 7 * week + static_cast(sec); + t.sec = sec - static_cast(sec); return t; } @@ -1376,8 +1376,8 @@ gtime_t gst2time(int week, double sec) gtime_t t = epoch2time(gst0); if (sec < -1e9 || 1e9 < sec) sec = 0.0; - t.time += (time_t)86400 * 7 * week + (int)sec; - t.sec = sec - (int)sec; + t.time += static_cast(86400) * 7 * week + static_cast(sec); + t.sec = sec - static_cast(sec); return t; } @@ -1392,10 +1392,10 @@ double time2gst(gtime_t t, int *week) { gtime_t t0 = epoch2time(gst0); time_t sec = t.time - t0.time; - int w = (int)(sec / (86400 * 7)); + int w = static_cast(sec / (86400 * 7)); if (week) *week = w; - return (double)(sec - (double)w * 86400 * 7) + t.sec; + return (sec - static_cast(w) * 86400 * 7) + t.sec; } @@ -1410,8 +1410,8 @@ gtime_t bdt2time(int week, double sec) gtime_t t = epoch2time(bdt0); if (sec < -1e9 || 1e9 < sec) sec = 0.0; - t.time += (time_t)86400 * 7 * week + (int)sec; - t.sec = sec - (int)sec; + t.time += static_cast(86400) * 7 * week + static_cast(sec); + t.sec = sec - static_cast(sec); return t; } @@ -1426,10 +1426,10 @@ double time2bdt(gtime_t t, int *week) { gtime_t t0 = epoch2time(bdt0); time_t sec = t.time - t0.time; - int w = (int)(sec / (86400 * 7)); + int w = static_cast(sec / (86400 * 7)); if (week) *week = w; - return (double)(sec - (double)w * 86400 * 7) + t.sec; + return (sec - static_cast(w) * 86400 * 7) + t.sec; } @@ -1445,7 +1445,7 @@ gtime_t timeadd(gtime_t t, double sec) t.sec += sec; tt = floor(t.sec); - t.time += (int)tt; + t.time += static_cast(tt); t.sec -= tt; return t; } @@ -1471,10 +1471,12 @@ gtime_t timeget(void) { gtime_t time; double ep[6] = {}; - struct timeval tv; + struct timeval tv + { + }; struct tm *tt; - if (!gettimeofday(&tv, NULL) && (tt = gmtime(&tv.tv_sec))) + if (!gettimeofday(&tv, nullptr) && (tt = gmtime(&tv.tv_sec))) { ep[0] = tt->tm_year + 1900; ep[1] = tt->tm_mon + 1; @@ -1547,7 +1549,7 @@ int read_leaps_usno(FILE *fp) ls[n][0] = y; ls[n][1] = m; ls[n][2] = d; - ls[n++][6] = (char)(19.0 - tai_utc); + ls[n++][6] = static_cast(19.0 - tai_utc); } for (i = 0; i < n; i++) for (j = 0; j < 7; j++) @@ -1574,7 +1576,7 @@ int read_leaps(const char *file) FILE *fp; int i, n; - if (!(fp = fopen(file, "r"))) return 0; + if (!(fp = fopen(file, "re"))) return 0; /* read leap seconds table by text or usno */ if (!(n = read_leaps_text(fp)) && !(n = read_leaps_usno(fp))) @@ -1775,11 +1777,9 @@ unsigned int tickget(void) { return tp.tv_sec * 1000u + tp.tv_nsec / 1000000u; } - else - { - gettimeofday(&tv, NULL); - return tv.tv_sec * 1000u + tv.tv_usec / 1000u; - } + gettimeofday(&tv, nullptr); + return tv.tv_sec * 1000u + tv.tv_usec / 1000u; + #else gettimeofday(&tv, NULL); return tv.tv_sec * 1000u + tv.tv_usec / 1000u; @@ -1796,9 +1796,9 @@ void sleepms(int ms) { struct timespec ts = {0, 0}; if (ms <= 0) return; - ts.tv_sec = (time_t)(ms / 1000); - ts.tv_nsec = (long)(ms % 1000 * 1000000); - nanosleep(&ts, NULL); + ts.tv_sec = static_cast(ms / 1000); + ts.tv_nsec = static_cast(ms % 1000 * 1000000); + nanosleep(&ts, nullptr); } @@ -2228,7 +2228,7 @@ int decodef(char *p, int n, double *v) int i; for (i = 0; i < n; i++) v[i] = 0.0; - for (i = 0, p = strtok(p, " "); p && i < n; p = strtok(NULL, " ")) + for (i = 0, p = strtok(p, " "); p && i < n; p = strtok(nullptr, " ")) { v[i++] = atof(p) * 1e-3; } @@ -2244,11 +2244,11 @@ void addpcv(const pcv_t *pcv, pcvs_t *pcvs) if (pcvs->nmax <= pcvs->n) { pcvs->nmax += 256; - if (!(pcvs_pcv = (pcv_t *)realloc(pcvs->pcv, sizeof(pcv_t) * pcvs->nmax))) + if (!(pcvs_pcv = static_cast(realloc(pcvs->pcv, sizeof(pcv_t) * pcvs->nmax)))) { trace(1, "addpcv: memory allocation error\n"); free(pcvs->pcv); - pcvs->pcv = NULL; + pcvs->pcv = nullptr; pcvs->n = pcvs->nmax = 0; return; } @@ -2268,7 +2268,7 @@ int readngspcv(const char *file, pcvs_t *pcvs) int n = 0; char buff[256]; - if (!(fp = fopen(file, "r"))) + if (!(fp = fopen(file, "re"))) { trace(2, "ngs pcv file open error: %s\n", file); return 0; @@ -2329,7 +2329,7 @@ int readantex(const char *file, pcvs_t *pcvs) trace(3, "readantex: file=%s\n", file); - if (!(fp = fopen(file, "r"))) + if (!(fp = fopen(file, "re"))) { trace(2, "antex pcv file open error: %s\n", file); return 0; @@ -2479,8 +2479,8 @@ pcv_t *searchpcv(int sat, const char *type, gtime_t time, { trace(1, "type array is too long"); } - for (p = strtok(buff, " "); p && n < 2; p = strtok(NULL, " ")) types[n++] = p; - if (n <= 0) return NULL; + for (p = strtok(buff, " "); p && n < 2; p = strtok(nullptr, " ")) types[n++] = p; + if (n <= 0) return nullptr; /* search receiver antenna with radome at first */ for (i = 0; i < pcvs->n; i++) @@ -2500,7 +2500,7 @@ pcv_t *searchpcv(int sat, const char *type, gtime_t time, return pcv; } } - return NULL; + return nullptr; } @@ -2523,7 +2523,7 @@ void readpos(const char *file, const char *rcv, double *pos) trace(3, "readpos: file=%s\n", file); - if (!(fp = fopen(file, "r"))) + if (!(fp = fopen(file, "re"))) { fprintf(stderr, "reference position file open error : %s\n", file); return; @@ -2538,10 +2538,10 @@ void readpos(const char *file, const char *rcv, double *pos) stas[np++][15] = '\0'; } fclose(fp); - len = (int)strlen(rcv); + len = static_cast(strlen(rcv)); for (i = 0; i < np; i++) { - if (strncmp(stas[i], rcv, len)) continue; + if (strncmp(stas[i], rcv, len) != 0) continue; for (j = 0; j < 3; j++) pos[j] = poss[i][j]; pos[0] *= D2R; pos[1] *= D2R; @@ -2584,10 +2584,10 @@ int readblq(const char *file, const char *sta, double *odisp) /* station name to upper case */ sscanf(sta, "%16s", staname); - for (p = staname; (*p = (char)toupper((int)(*p))); p++) + for (p = staname; (*p = static_cast(toupper(static_cast(*p)))); p++) ; - if (!(fp = fopen(file, "r"))) + if (!(fp = fopen(file, "re"))) { trace(2, "blq file open error: file=%s\n", file); return 0; @@ -2597,9 +2597,9 @@ int readblq(const char *file, const char *sta, double *odisp) if (!strncmp(buff, "$$", 2) || strlen(buff) < 2) continue; if (sscanf(buff + 2, "%16s", name) < 1) continue; - for (p = name; (*p = (char)toupper((int)(*p))); p++) + for (p = name; (*p = static_cast(toupper(static_cast(*p)))); p++) ; - if (strcmp(name, staname)) continue; + if (strcmp(name, staname) != 0) continue; /* read blq record */ if (readblqrecord(fp, odisp)) @@ -2629,7 +2629,7 @@ int readerp(const char *file, erp_t *erp) trace(3, "readerp: file=%s\n", file); - if (!(fp = fopen(file, "r"))) + if (!(fp = fopen(file, "re"))) { trace(2, "erp file open error: file=%s\n", file); return 0; @@ -2644,11 +2644,11 @@ int readerp(const char *file, erp_t *erp) if (erp->n >= erp->nmax) { erp->nmax = erp->nmax <= 0 ? 128 : erp->nmax * 2; - erp_data = (erpd_t *)realloc(erp->data, sizeof(erpd_t) * erp->nmax); + erp_data = static_cast(realloc(erp->data, sizeof(erpd_t) * erp->nmax)); if (!erp_data) { free(erp->data); - erp->data = NULL; + erp->data = nullptr; erp->n = erp->nmax = 0; fclose(fp); return 0; @@ -2731,8 +2731,8 @@ int geterp(const erp_t *erp, gtime_t time, double *erpv) /* compare ephemeris ---------------------------------------------------------*/ int cmpeph(const void *p1, const void *p2) { - eph_t *q1 = (eph_t *)p1, *q2 = (eph_t *)p2; - return q1->ttr.time != q2->ttr.time ? (int)(q1->ttr.time - q2->ttr.time) : (q1->toe.time != q2->toe.time ? (int)(q1->toe.time - q2->toe.time) : q1->sat - q2->sat); + auto *q1 = (eph_t *)p1, *q2 = (eph_t *)p2; + return q1->ttr.time != q2->ttr.time ? static_cast(q1->ttr.time - q2->ttr.time) : (q1->toe.time != q2->toe.time ? static_cast(q1->toe.time - q2->toe.time) : q1->sat - q2->sat); } @@ -2758,11 +2758,11 @@ void uniqeph(nav_t *nav) } nav->n = j + 1; - if (!(nav_eph = (eph_t *)realloc(nav->eph, sizeof(eph_t) * nav->n))) + if (!(nav_eph = static_cast(realloc(nav->eph, sizeof(eph_t) * nav->n)))) { trace(1, "uniqeph malloc error n=%d\n", nav->n); free(nav->eph); - nav->eph = NULL; + nav->eph = nullptr; nav->n = nav->nmax = 0; return; } @@ -2776,8 +2776,8 @@ void uniqeph(nav_t *nav) /* compare glonass ephemeris -------------------------------------------------*/ int cmpgeph(const void *p1, const void *p2) { - geph_t *q1 = (geph_t *)p1, *q2 = (geph_t *)p2; - return q1->tof.time != q2->tof.time ? (int)(q1->tof.time - q2->tof.time) : (q1->toe.time != q2->toe.time ? (int)(q1->toe.time - q2->toe.time) : q1->sat - q2->sat); + auto *q1 = (geph_t *)p1, *q2 = (geph_t *)p2; + return q1->tof.time != q2->tof.time ? static_cast(q1->tof.time - q2->tof.time) : (q1->toe.time != q2->toe.time ? static_cast(q1->toe.time - q2->toe.time) : q1->sat - q2->sat); } @@ -2804,11 +2804,11 @@ void uniqgeph(nav_t *nav) } nav->ng = j + 1; - if (!(nav_geph = (geph_t *)realloc(nav->geph, sizeof(geph_t) * nav->ng))) + if (!(nav_geph = static_cast(realloc(nav->geph, sizeof(geph_t) * nav->ng)))) { trace(1, "uniqgeph malloc error ng=%d\n", nav->ng); free(nav->geph); - nav->geph = NULL; + nav->geph = nullptr; nav->ng = nav->ngmax = 0; return; } @@ -2822,8 +2822,8 @@ void uniqgeph(nav_t *nav) /* compare sbas ephemeris ----------------------------------------------------*/ int cmpseph(const void *p1, const void *p2) { - seph_t *q1 = (seph_t *)p1, *q2 = (seph_t *)p2; - return q1->tof.time != q2->tof.time ? (int)(q1->tof.time - q2->tof.time) : (q1->t0.time != q2->t0.time ? (int)(q1->t0.time - q2->t0.time) : q1->sat - q2->sat); + auto *q1 = (seph_t *)p1, *q2 = (seph_t *)p2; + return q1->tof.time != q2->tof.time ? static_cast(q1->tof.time - q2->tof.time) : (q1->t0.time != q2->t0.time ? static_cast(q1->t0.time - q2->t0.time) : q1->sat - q2->sat); } @@ -2849,11 +2849,11 @@ void uniqseph(nav_t *nav) } nav->ns = j + 1; - if (!(nav_seph = (seph_t *)realloc(nav->seph, sizeof(seph_t) * nav->ns))) + if (!(nav_seph = static_cast(realloc(nav->seph, sizeof(seph_t) * nav->ns)))) { trace(1, "uniqseph malloc error ns=%d\n", nav->ns); free(nav->seph); - nav->seph = NULL; + nav->seph = nullptr; nav->ns = nav->nsmax = 0; return; } @@ -2892,11 +2892,11 @@ void uniqnav(nav_t *nav) /* compare observation data -------------------------------------------------*/ int cmpobs(const void *p1, const void *p2) { - obsd_t *q1 = (obsd_t *)p1, *q2 = (obsd_t *)p2; + auto *q1 = (obsd_t *)p1, *q2 = (obsd_t *)p2; double tt = timediff(q1->time, q2->time); if (fabs(tt) > DTTOL) return tt < 0 ? -1 : 1; - if (q1->rcv != q2->rcv) return (int)q1->rcv - (int)q2->rcv; - return (int)q1->sat - (int)q2->sat; + if (q1->rcv != q2->rcv) return static_cast(q1->rcv) - static_cast(q2->rcv); + return static_cast(q1->sat) - static_cast(q2->sat); } @@ -2948,7 +2948,7 @@ int sortobs(obs_t *obs) *-----------------------------------------------------------------------------*/ int screent(gtime_t time, gtime_t ts, gtime_t te, double tint) { - return (tint <= 0.0 || fmod(time2gpst(time, NULL) + DTTOL, tint) <= DTTOL * 2.0) && + return (tint <= 0.0 || fmod(time2gpst(time, nullptr) + DTTOL, tint) <= DTTOL * 2.0) && (ts.time == 0 || timediff(time, ts) >= -DTTOL) && (te.time == 0 || timediff(time, te) < DTTOL); } @@ -2967,12 +2967,12 @@ int readnav(const char *file, nav_t *nav) 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, {}, 0.0, 0.0}; geph_t geph0 = {0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {}, {}, {}, 0.0, 0.0, 0.0}; char buff[4096], *p; - long toe_time, tof_time, toc_time, ttr_time; + int32_t toe_time, tof_time, toc_time, ttr_time; int i, sat, prn; trace(3, "loadnav: file=%s\n", file); - if (!(fp = fopen(file, "r"))) return 0; + if (!(fp = fopen(file, "re"))) return 0; while (fgets(buff, sizeof(buff), fp)) { @@ -2999,7 +2999,7 @@ int readnav(const char *file, nav_t *nav) nav->geph[prn - 1].sat = sat; toe_time = tof_time = 0; sscanf(p + 1, - "%d,%d,%d,%d,%d,%ld,%ld,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf," + "%d,%d,%d,%d,%d,%d,%d,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf," "%lf,%lf,%lf,%lf", &nav->geph[prn - 1].iode, &nav->geph[prn - 1].frq, &nav->geph[prn - 1].svh, &nav->geph[prn - 1].sva, &nav->geph[prn - 1].age, @@ -3017,7 +3017,7 @@ int readnav(const char *file, nav_t *nav) nav->eph[sat - 1].sat = sat; toe_time = toc_time = ttr_time = 0; sscanf(p + 1, - "%d,%d,%d,%d,%ld,%ld,%ld,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf," + "%d,%d,%d,%d,%d,%d,%d,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf," "%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%d,%d", &nav->eph[sat - 1].iode, &nav->eph[sat - 1].iodc, &nav->eph[sat - 1].sva, &nav->eph[sat - 1].svh, @@ -3048,7 +3048,7 @@ int savenav(const char *file, const nav_t *nav) trace(3, "savenav: file=%s\n", file); - if (!(fp = fopen(file, "w"))) return 0; + if (!(fp = fopen(file, "we"))) return 0; for (i = 0; i < MAXSAT; i++) { @@ -3059,8 +3059,8 @@ int savenav(const char *file, const nav_t *nav) "%.14E,%.14E,%.14E,%.14E,%.14E,%.14E,%.14E,%.14E,%.14E,%.14E," "%.14E,%.14E,%.14E,%.14E,%.14E,%d,%d\n", id, nav->eph[i].iode, nav->eph[i].iodc, nav->eph[i].sva, - nav->eph[i].svh, (int)nav->eph[i].toe.time, - (int)nav->eph[i].toc.time, (int)nav->eph[i].ttr.time, + nav->eph[i].svh, static_cast(nav->eph[i].toe.time), + static_cast(nav->eph[i].toc.time), static_cast(nav->eph[i].ttr.time), nav->eph[i].A, nav->eph[i].e, nav->eph[i].i0, nav->eph[i].OMG0, nav->eph[i].omg, nav->eph[i].M0, nav->eph[i].deln, nav->eph[i].OMGd, nav->eph[i].idot, nav->eph[i].crc, nav->eph[i].crs, nav->eph[i].cuc, @@ -3076,8 +3076,8 @@ int savenav(const char *file, const nav_t *nav) "%s,%d,%d,%d,%d,%d,%d,%d,%.14E,%.14E,%.14E,%.14E,%.14E,%.14E," "%.14E,%.14E,%.14E,%.14E,%.14E,%.14E\n", id, nav->geph[i].iode, nav->geph[i].frq, nav->geph[i].svh, - nav->geph[i].sva, nav->geph[i].age, (int)nav->geph[i].toe.time, - (int)nav->geph[i].tof.time, + nav->geph[i].sva, nav->geph[i].age, static_cast(nav->geph[i].toe.time), + static_cast(nav->geph[i].tof.time), nav->geph[i].pos[0], nav->geph[i].pos[1], nav->geph[i].pos[2], nav->geph[i].vel[0], nav->geph[i].vel[1], nav->geph[i].vel[2], nav->geph[i].acc[0], nav->geph[i].acc[1], nav->geph[i].acc[2], @@ -3104,7 +3104,7 @@ int savenav(const char *file, const nav_t *nav) void freeobs(obs_t *obs) { free(obs->data); - obs->data = NULL; + obs->data = nullptr; obs->n = obs->nmax = 0; } @@ -3124,49 +3124,49 @@ void freenav(nav_t *nav, int opt) if (opt & 0x01) { free(nav->eph); - nav->eph = NULL; + nav->eph = nullptr; nav->n = nav->nmax = 0; } if (opt & 0x02) { free(nav->geph); - nav->geph = NULL; + nav->geph = nullptr; nav->ng = nav->ngmax = 0; } if (opt & 0x04) { free(nav->seph); - nav->seph = NULL; + nav->seph = nullptr; nav->ns = nav->nsmax = 0; } if (opt & 0x08) { free(nav->peph); - nav->peph = NULL; + nav->peph = nullptr; nav->ne = nav->nemax = 0; } if (opt & 0x10) { free(nav->pclk); - nav->pclk = NULL; + nav->pclk = nullptr; nav->nc = nav->ncmax = 0; } if (opt & 0x20) { free(nav->alm); - nav->alm = NULL; + nav->alm = nullptr; nav->na = nav->namax = 0; } if (opt & 0x40) { free(nav->tec); - nav->tec = NULL; + nav->tec = nullptr; nav->nt = nav->ntmax = 0; } if (opt & 0x80) { free(nav->fcb); - nav->fcb = NULL; + nav->fcb = nullptr; nav->nf = nav->nfmax = 0; } } @@ -3175,7 +3175,7 @@ void freenav(nav_t *nav, int opt) /* debug trace functions -----------------------------------------------------*/ //#ifdef TRACE // -FILE *fp_trace = NULL; /* file pointer of trace */ +FILE *fp_trace = nullptr; /* file pointer of trace */ char file_trace[1024]; /* trace file */ static int level_trace = 0; /* level of trace */ unsigned int tick_trace = 0; /* tick time at traceopen (ms) */ @@ -3189,8 +3189,8 @@ void traceswap(void) rtk_lock(&lock_trace); - if ((int)(time2gpst(time, NULL) / INT_SWAP_TRAC) == - (int)(time2gpst(time_trace, NULL) / INT_SWAP_TRAC)) + if (static_cast(time2gpst(time, nullptr) / INT_SWAP_TRAC) == + static_cast(time2gpst(time_trace, nullptr) / INT_SWAP_TRAC)) { rtk_unlock(&lock_trace); return; @@ -3204,7 +3204,7 @@ void traceswap(void) } if (fp_trace) fclose(fp_trace); - if (!(fp_trace = fopen(path, "w"))) + if (!(fp_trace = fopen(path, "we"))) { fp_trace = stderr; } @@ -3218,7 +3218,7 @@ void traceopen(const char *file) char path[1024]; reppath(file, path, time, "", ""); - if (!*path || !(fp_trace = fopen(path, "w"))) fp_trace = stderr; + if (!*path || !(fp_trace = fopen(path, "we"))) fp_trace = stderr; if (strlen(file) < 1025) strcpy(file_trace, file); else @@ -3232,7 +3232,7 @@ void traceopen(const char *file) void traceclose(void) { if (fp_trace && fp_trace != stderr) fclose(fp_trace); - fp_trace = NULL; + fp_trace = nullptr; file_trace[0] = '\0'; } @@ -3449,7 +3449,7 @@ void createdir(const char *path) /* replace string ------------------------------------------------------------*/ int repstr(char *str, const char *pat, const char *rep) { - int len = (int)strlen(pat); + int len = static_cast(strlen(pat)); char buff[1024], *p, *q, *r; for (p = str, r = buff; *p; p = q + len) @@ -3514,13 +3514,13 @@ int reppath(const char *path, char *rpath, gtime_t time, const char *rov, { time2epoch(time, ep); ep0[0] = ep[0]; - dow = (int)floor(time2gpst(time, &week) / 86400.0); - doy = (int)floor(timediff(time, epoch2time(ep0)) / 86400.0) + 1; - sprintf(rep, "%02d", ((int)ep[3] / 3) * 3); + dow = static_cast(floor(time2gpst(time, &week) / 86400.0)); + doy = static_cast(floor(timediff(time, epoch2time(ep0)) / 86400.0)) + 1; + sprintf(rep, "%02d", (static_cast(ep[3]) / 3) * 3); stat |= repstr(rpath, "%ha", rep); - sprintf(rep, "%02d", ((int)ep[3] / 6) * 6); + sprintf(rep, "%02d", (static_cast(ep[3]) / 6) * 6); stat |= repstr(rpath, "%hb", rep); - sprintf(rep, "%02d", ((int)ep[3] / 12) * 12); + sprintf(rep, "%02d", (static_cast(ep[3]) / 12) * 12); stat |= repstr(rpath, "%hc", rep); sprintf(rep, "%04.0f", ep[0]); stat |= repstr(rpath, "%Y", rep); @@ -3542,9 +3542,9 @@ int reppath(const char *path, char *rpath, gtime_t time, const char *rov, stat |= repstr(rpath, "%W", rep); sprintf(rep, "%d", dow); stat |= repstr(rpath, "%D", rep); - sprintf(rep, "%c", 'a' + (int)ep[3]); + sprintf(rep, "%c", 'a' + static_cast(ep[3])); stat |= repstr(rpath, "%H", rep); - sprintf(rep, "%02d", ((int)ep[4] / 15) * 15); + sprintf(rep, "%02d", (static_cast(ep[4]) / 15) * 15); stat |= repstr(rpath, "%t", rep); } else if (strstr(rpath, "%ha") || strstr(rpath, "%hb") || strstr(rpath, "%hc") || @@ -3595,7 +3595,7 @@ int reppaths(const char *path, char *rpath[], int nmax, gtime_t ts, while (timediff(time, te) <= 0.0 && n < nmax) { reppath(path, rpath[n], time, rov, base); - if (n == 0 || strcmp(rpath[n], rpath[n - 1])) n++; + if (n == 0 || strcmp(rpath[n], rpath[n - 1]) != 0) n++; time = timeadd(time, tint); } for (i = 0; i < n; i++) trace(3, "reppaths: rpath=%s\n", rpath[i]); @@ -3614,7 +3614,7 @@ double satwavelen(int sat, int frq, const nav_t *nav) { const double freq_glo[] = {FREQ1_GLO, FREQ2_GLO}; const double dfrq_glo[] = {DFRQ1_GLO, DFRQ2_GLO}; - int i, sys = satsys(sat, NULL); + int i, sys = satsys(sat, nullptr); if (sys == SYS_GLO) { @@ -3635,22 +3635,22 @@ double satwavelen(int sat, int frq, const nav_t *nav) { if (frq == 0) return SPEED_OF_LIGHT / FREQ1_BDS; /* B1 */ - else if (frq == 1) + if (frq == 1) return SPEED_OF_LIGHT / FREQ2_BDS; /* B2 */ - else if (frq == 2) + if (frq == 2) return SPEED_OF_LIGHT / FREQ3_BDS; /* B3 */ } else { if (frq == 0) return SPEED_OF_LIGHT / FREQ1; /* L1/E1 */ - else if (frq == 1) + if (frq == 1) return SPEED_OF_LIGHT / FREQ2; /* L2 */ - else if (frq == 2) + if (frq == 2) return SPEED_OF_LIGHT / FREQ5; /* L5/E5a */ - else if (frq == 3) + if (frq == 3) return SPEED_OF_LIGHT / FREQ6; /* L6/LEX */ - else if (frq == 4) + if (frq == 4) return SPEED_OF_LIGHT / FREQ7; /* E5b */ else if (frq == 5) return SPEED_OF_LIGHT / FREQ8; /* E5a+b */ @@ -3883,10 +3883,10 @@ double tropmodel(gtime_t time __attribute__((unused)), const double *pos, const double interpc(const double coef[], double lat) { - int i = (int)(lat / 15.0); + int i = static_cast(lat / 15.0); if (i < 1) return coef[0]; - else if (i > 4) + if (i > 4) return coef[4]; return coef[i - 1] * (1.0 - lat / 15.0 + i) + coef[i] * (lat / 15.0 - i); } @@ -3996,10 +3996,10 @@ double tropmapf(gtime_t time, const double pos[], const double azel[], double interpvar(double ang, const double *var) { double a = ang / 5.0; /* ang=0-90 */ - int i = (int)a; + int i = static_cast(a); if (i < 0) return var[0]; - else if (i >= 18) + if (i >= 18) return var[18]; return var[i] * (1.0 - a + i) + var[i + 1] * (a - i); } @@ -4132,7 +4132,7 @@ void sunmoonpos(gtime_t tutc, const double *erpv, double *rsun, tut = timeadd(tutc, erpv[2]); /* utc -> ut1 */ /* sun and moon position in eci */ - sunmoonpos_eci(tut, rsun ? rs : NULL, rmoon ? rm : NULL); + sunmoonpos_eci(tut, rsun ? rs : nullptr, rmoon ? rm : nullptr); /* eci to ecef transformation matrix */ eci2ecef(tutc, erpv, U, &gmst_); @@ -4213,7 +4213,7 @@ int rtk_uncompress(const char *file, char *uncfile) { strcpy(uncfile, tmpfile); uncfile[p - tmpfile] = '\0'; - sprintf(cmd, "gzip -f -d -c \"%s\" > \"%s\"", tmpfile, uncfile); + sprintf(cmd, R"(gzip -f -d -c "%s" > "%s")", tmpfile, uncfile); if (execcmd(cmd)) { @@ -4262,7 +4262,7 @@ int rtk_uncompress(const char *file, char *uncfile) { strcpy(uncfile, tmpfile); uncfile[p - tmpfile + 3] = *(p + 3) == 'D' ? 'O' : 'o'; - sprintf(cmd, "crx2rnx < \"%s\" > \"%s\"", tmpfile, uncfile); + sprintf(cmd, R"(crx2rnx < "%s" > "%s")", tmpfile, uncfile); if (execcmd(cmd)) { @@ -4309,10 +4309,10 @@ int expath(const char *path, char *paths[], int nmax) if (*(d->d_name) == '.') continue; sprintf(s1, "^%s$", d->d_name); sprintf(s2, "^%s$", file); - for (p = s1; *p; p++) *p = (char)tolower((int)*p); - for (p = s2; *p; p++) *p = (char)tolower((int)*p); + for (p = s1; *p; p++) *p = static_cast(tolower(static_cast(*p))); + for (p = s2; *p; p++) *p = static_cast(tolower(static_cast(*p))); - for (p = s1, q = strtok_r(s2, "*", &r); q; q = strtok_r(NULL, "*", &r)) + for (p = s1, q = strtok_r(s2, "*", &r); q; q = strtok_r(nullptr, "*", &r)) { if ((p = strstr(p, q))) p += strlen(q); @@ -4355,7 +4355,7 @@ void windupcorr(gtime_t time, const double *rs, const double *rr, double *phw) trace(4, "windupcorr: time=%s\n", time_str(time, 0)); /* sun position in ecef */ - sunmoonpos(gpst2utc(time), erpv, rsun, NULL, NULL); + sunmoonpos(gpst2utc(time), erpv, rsun, nullptr, nullptr); /* unit vector satellite to receiver */ for (i = 0; i < 3; i++) r[i] = rr[i] - rs[i]; diff --git a/src/algorithms/libs/rtklib/rtklib_rtkpos.cc b/src/algorithms/libs/rtklib/rtklib_rtkpos.cc index 80c1e0f0c..1634b8fcb 100644 --- a/src/algorithms/libs/rtklib/rtklib_rtkpos.cc +++ b/src/algorithms/libs/rtklib/rtklib_rtkpos.cc @@ -52,11 +52,11 @@ *----------------------------------------------------------------------------*/ #include "rtklib_rtkpos.h" -#include "rtklib_pntpos.h" #include "rtklib_ephemeris.h" +#include "rtklib_lambda.h" +#include "rtklib_pntpos.h" #include "rtklib_ppp.h" #include "rtklib_tides.h" -#include "rtklib_lambda.h" static int resamb_WLNL(rtk_t *rtk __attribute((unused)), const obsd_t *obs __attribute((unused)), const int *sat __attribute((unused)), const int *iu __attribute((unused)), const int *ir __attribute((unused)), int ns __attribute__((unused)), const nav_t *nav __attribute((unused)), @@ -67,7 +67,7 @@ static int resamb_TCAR(rtk_t *rtk __attribute((unused)), const obsd_t *obs __att /* global variables ----------------------------------------------------------*/ static int statlevel = 0; /* rtk status output level (0:off) */ -static FILE *fp_stat = NULL; /* rtk status file pointer */ +static FILE *fp_stat = nullptr; /* rtk status file pointer */ static char file_stat[1024] = ""; /* rtk status file original path */ static gtime_t time_stat = {0, 0}; /* rtk status file time */ @@ -151,7 +151,7 @@ int rtkopenstat(const char *file, int level) reppath(file, path, time, "", ""); - if (!(fp_stat = fopen(path, "w"))) + if (!(fp_stat = fopen(path, "we"))) { trace(1, "rtkopenstat: file open error path=%s\n", path); return 0; @@ -176,7 +176,7 @@ void rtkclosestat(void) trace(3, "rtkclosestat:\n"); if (fp_stat) fclose(fp_stat); - fp_stat = NULL; + fp_stat = nullptr; file_stat[0] = '\0'; statlevel = 0; } @@ -301,8 +301,8 @@ void swapsolstat(void) gtime_t time = utc2gpst(timeget()); char path[1024]; - if ((int)(time2gpst(time, NULL) / INT_SWAP_STAT) == - (int)(time2gpst(time_stat, NULL) / INT_SWAP_STAT)) + if (static_cast(time2gpst(time, nullptr) / INT_SWAP_STAT) == + static_cast(time2gpst(time_stat, nullptr) / INT_SWAP_STAT)) { return; } @@ -314,7 +314,7 @@ void swapsolstat(void) } if (fp_stat) fclose(fp_stat); - if (!(fp_stat = fopen(path, "w"))) + if (!(fp_stat = fopen(path, "we"))) { trace(2, "swapsolstat: file open error path=%s\n", path); return; @@ -541,7 +541,7 @@ void initx_rtk(rtk_t *rtk, double xi, double var, int i) /* select common satellites between rover and reference station --------------*/ -int selsat(const obsd_t *obs, double *azel, int nu, int nr, +int selsat(const obsd_t *obs, const double *azel, int nu, int nr, const prcopt_t *opt, int *sat, int *iu, int *ir) { int i, j, k = 0; @@ -795,7 +795,7 @@ void detslp_ll(rtk_t *rtk, const obsd_t *obs, int i, int rcv) setbitu(&rtk->ssat[sat - 1].slip[f], 2, 2, obs[i].LLI[f]); /* save slip and half-cycle valid flag */ - rtk->ssat[sat - 1].slip[f] |= (unsigned char)slip; + rtk->ssat[sat - 1].slip[f] |= static_cast(slip); rtk->ssat[sat - 1].half[f] = (obs[i].LLI[f] & 2) ? 0 : 1; } } @@ -923,7 +923,7 @@ void udbias(rtk_t *rtk, double tt, const obsd_t *obs, const int *sat, /* reset phase-bias if instantaneous AR or expire obs outage counter */ for (i = 1; i <= MAXSAT; i++) { - reset = ++rtk->ssat[i - 1].outc[f] > (unsigned int)rtk->opt.maxout; + reset = ++rtk->ssat[i - 1].outc[f] > static_cast(rtk->opt.maxout); if (rtk->opt.modear == ARMODE_INST && rtk->x[IB_RTK(i, f, &rtk->opt)] != 0.0) { @@ -1130,7 +1130,7 @@ int zdres(int base, const obsd_t *obs, int n, const double *rs, /* troposphere delay model (hydrostatic) */ zhd = tropmodel(obs[0].time, pos, zazel, 0.0); - r += tropmapf(obs[i].time, pos, azel + i * 2, NULL) * zhd; + r += tropmapf(obs[i].time, pos, azel + i * 2, nullptr) * zhd; /* receiver antenna phase center correction */ antmodel(opt->pcvr + index, opt->antdel[index], azel + i * 2, opt->posopt[1], @@ -1155,7 +1155,7 @@ int zdres(int base, const obsd_t *obs, int n, const double *rs, /* test valid observation data -----------------------------------------------*/ -int validobs(int i, int j, int f, int nf, double *y) +int validobs(int i, int j, int f, int nf, const double *y) { /* if no phase observable, psudorange is also unusable */ return y[f + i * nf * 2] != 0.0 && y[f + j * nf * 2] != 0.0 && @@ -1302,13 +1302,13 @@ int test_sys(int sys, int m) /* double-differenced phase/code residuals -----------------------------------*/ int ddres(rtk_t *rtk, const nav_t *nav, double dt, const double *x, - const double *P, const int *sat, double *y, double *e, + const double *P, const int *sat, double *y, const double *e, double *azel, const int *iu, const int *ir, int ns, double *v, double *H, double *R, int *vflg) { prcopt_t *opt = &rtk->opt; double bl, dr[3], posu[3], posr[3], didxi = 0.0, didxj = 0.0, *im; - double *tropr, *tropu, *dtdxr, *dtdxu, *Ri, *Rj, lami, lamj, fi, fj, df, *Hi = NULL; + double *tropr, *tropu, *dtdxr, *dtdxu, *Ri, *Rj, lami, lamj, fi, fj, df, *Hi = nullptr; int i, j, k, m, f, ff, nv = 0, nb[NFREQ * 4 * 2 + 2] = {0}, b = 0, sysi, sysj, nf = NF_RTK(opt); trace(3, "ddres : dt=%.1f nx=%d ns=%d\n", dt, rtk->nx, ns); @@ -1616,8 +1616,7 @@ int ddmat(rtk_t *rtk, double *D) rtk->ssat[i - k].fix[f] = 2; /* fix */ break; } - else - rtk->ssat[i - k].fix[f] = 1; + rtk->ssat[i - k].fix[f] = 1; } for (j = k; j < k + MAXSAT; j++) { @@ -1787,7 +1786,7 @@ int resamb_LAMBDA(rtk_t *rtk, double *bias, double *xa) trace(4, "N(2)="); tracemat(4, b + nb, 1, nb, 10, 3); - rtk->sol.ratio = s[0] > 0 ? (float)(s[1] / s[0]) : 0.0f; + rtk->sol.ratio = s[0] > 0 ? static_cast(s[1] / s[0]) : 0.0f; if (rtk->sol.ratio > 999.9) rtk->sol.ratio = 999.9f; /* validation by popular ratio-test */ @@ -1921,7 +1920,7 @@ int relpos(rtk_t *rtk, const obsd_t *obs, int nu, int nr, for (i = 0; i < MAXSAT; i++) { - rtk->ssat[i].sys = satsys(i + 1, NULL); + rtk->ssat[i].sys = satsys(i + 1, nullptr); for (j = 0; j < NFREQ; j++) rtk->ssat[i].vsat[j] = rtk->ssat[i].snr[j] = 0; } /* satellite positions/clocks */ @@ -2009,7 +2008,7 @@ int relpos(rtk_t *rtk, const obsd_t *obs, int nu, int nr, if (stat != SOLQ_NONE && zdres(0, obs, nu, rs, dts, svh, nav, xp, opt, 0, y, e, azel)) { /* post-fit residuals for float solution */ - nv = ddres(rtk, nav, dt, xp, Pp, sat, y, e, azel, iu, ir, ns, v, NULL, R, vflg); + nv = ddres(rtk, nav, dt, xp, Pp, sat, y, e, azel, iu, ir, ns, v, nullptr, R, vflg); /* validation of float solution */ if (valpos(rtk, v, R, vflg, nv, 4.0)) @@ -2056,7 +2055,7 @@ int relpos(rtk_t *rtk, const obsd_t *obs, int nu, int nr, if (zdres(0, obs, nu, rs, dts, svh, nav, xa, opt, 0, y, e, azel)) { /* post-fit reisiduals for fixed solution */ - nv = ddres(rtk, nav, dt, xa, NULL, sat, y, e, azel, iu, ir, ns, v, NULL, R, vflg); + nv = ddres(rtk, nav, dt, xa, nullptr, sat, y, e, azel, iu, ir, ns, v, nullptr, R, vflg); /* validation of fixed solution */ if (valpos(rtk, v, R, vflg, nv, 4.0)) @@ -2078,22 +2077,22 @@ int relpos(rtk_t *rtk, const obsd_t *obs, int nu, int nr, for (i = 0; i < 3; i++) { rtk->sol.rr[i] = rtk->xa[i]; - rtk->sol.qr[i] = (float)rtk->Pa[i + i * rtk->na]; + rtk->sol.qr[i] = static_cast(rtk->Pa[i + i * rtk->na]); } - rtk->sol.qr[3] = (float)rtk->Pa[1]; - rtk->sol.qr[4] = (float)rtk->Pa[1 + 2 * rtk->na]; - rtk->sol.qr[5] = (float)rtk->Pa[2]; + rtk->sol.qr[3] = static_cast(rtk->Pa[1]); + rtk->sol.qr[4] = static_cast(rtk->Pa[1 + 2 * rtk->na]); + rtk->sol.qr[5] = static_cast(rtk->Pa[2]); } else { for (i = 0; i < 3; i++) { rtk->sol.rr[i] = rtk->x[i]; - rtk->sol.qr[i] = (float)rtk->P[i + i * rtk->nx]; + rtk->sol.qr[i] = static_cast(rtk->P[i + i * rtk->nx]); } - rtk->sol.qr[3] = (float)rtk->P[1]; - rtk->sol.qr[4] = (float)rtk->P[1 + 2 * rtk->nx]; - rtk->sol.qr[5] = (float)rtk->P[2]; + rtk->sol.qr[3] = static_cast(rtk->P[1]); + rtk->sol.qr[4] = static_cast(rtk->P[1 + 2 * rtk->nx]); + rtk->sol.qr[5] = static_cast(rtk->P[2]); rtk->nfix = 0; } for (i = 0; i < n; i++) @@ -2181,13 +2180,13 @@ void rtkfree(rtk_t *rtk) rtk->nx = rtk->na = 0; free(rtk->x); - rtk->x = NULL; + rtk->x = nullptr; free(rtk->P); - rtk->P = NULL; + rtk->P = nullptr; free(rtk->xa); - rtk->xa = NULL; + rtk->xa = nullptr; free(rtk->Pa); - rtk->Pa = NULL; + rtk->Pa = nullptr; } @@ -2277,7 +2276,7 @@ int rtkpos(rtk_t *rtk, const obsd_t *obs, int n, const nav_t *nav) time = rtk->sol.time; /* previous epoch */ /* rover position by single point positioning */ - if (!pntpos(obs, nu, nav, &rtk->opt, &rtk->sol, NULL, rtk->ssat, msg)) + if (!pntpos(obs, nu, nav, &rtk->opt, &rtk->sol, nullptr, rtk->ssat, msg)) { errmsg(rtk, "point pos error (%s)\n", msg); if (!rtk->opt.dynamics) @@ -2317,12 +2316,12 @@ int rtkpos(rtk_t *rtk, const obsd_t *obs, int n, const nav_t *nav) { /* moving baseline */ /* estimate position/velocity of base station */ - if (!pntpos(obs + nu, nr, nav, &rtk->opt, &solb, NULL, NULL, msg)) + if (!pntpos(obs + nu, nr, nav, &rtk->opt, &solb, nullptr, nullptr, msg)) { errmsg(rtk, "base station position error (%s)\n", msg); return 0; } - rtk->sol.age = (float)timediff(rtk->sol.time, solb.time); + rtk->sol.age = static_cast(timediff(rtk->sol.time, solb.time)); if (fabs(rtk->sol.age) > TTOL_MOVEB) { @@ -2336,7 +2335,7 @@ int rtkpos(rtk_t *rtk, const obsd_t *obs, int n, const nav_t *nav) } else { - rtk->sol.age = (float)timediff(obs[0].time, obs[nu].time); + rtk->sol.age = static_cast(timediff(obs[0].time, obs[nu].time)); if (fabs(rtk->sol.age) > opt->maxtdiff) { diff --git a/src/algorithms/libs/rtklib/rtklib_rtkpos.h b/src/algorithms/libs/rtklib/rtklib_rtkpos.h index 81234a634..3cac6b4d0 100644 --- a/src/algorithms/libs/rtklib/rtklib_rtkpos.h +++ b/src/algorithms/libs/rtklib/rtklib_rtkpos.h @@ -108,7 +108,7 @@ double baseline(const double *ru, const double *rb, double *dr); void initx_rtk(rtk_t *rtk, double xi, double var, int i); -int selsat(const obsd_t *obs, double *azel, int nu, int nr, +int selsat(const obsd_t *obs, const double *azel, int nu, int nr, const prcopt_t *opt, int *sat, int *iu, int *ir); void udpos(rtk_t *rtk, double tt); @@ -144,7 +144,7 @@ int zdres(int base, const obsd_t *obs, int n, const double *rs, const double *rr, const prcopt_t *opt, int index, double *y, double *e, double *azel); -int validobs(int i, int j, int f, int nf, double *y); +int validobs(int i, int j, int f, int nf, const double *y); void ddcov(const int *nb, int n, const double *Ri, const double *Rj, int nv, double *R); @@ -162,7 +162,7 @@ double gloicbcorr(int sat1, int sat2, const prcopt_t *opt, double lam1, int test_sys(int sys, int m); int ddres(rtk_t *rtk, const nav_t *nav, double dt, const double *x, - const double *P, const int *sat, double *y, double *e, + const double *P, const int *sat, double *y, const double *e, double *azel, const int *iu, const int *ir, int ns, double *v, double *H, double *R, int *vflg); diff --git a/src/algorithms/libs/rtklib/rtklib_rtksvr.cc b/src/algorithms/libs/rtklib/rtklib_rtksvr.cc index 052de403b..ac047012a 100644 --- a/src/algorithms/libs/rtklib/rtklib_rtksvr.cc +++ b/src/algorithms/libs/rtklib/rtklib_rtksvr.cc @@ -1,12 +1,12 @@ #include "rtklib_rtksvr.h" +#include "rtklib_preceph.h" +#include "rtklib_rtcm.h" #include "rtklib_rtkcmn.h" #include "rtklib_rtkpos.h" -#include "rtklib_solution.h" #include "rtklib_sbas.h" -#include "rtklib_preceph.h" +#include "rtklib_solution.h" #include "rtklib_stream.h" -#include "rtklib_rtcm.h" /* write solution header to output stream ------------------------------------*/ void writesolhead(stream_t *stream, const solopt_t *solopt) @@ -129,7 +129,7 @@ void updatesvr(rtksvr_t *svr, int ret, obs_t *obs, nav_t *nav, int sat, for (i = 0; i < obs->n; i++) { if (svr->rtk.opt.exsats[obs->data[i].sat - 1] == 1 || - !(satsys(obs->data[i].sat, NULL) & svr->rtk.opt.navsys)) continue; + !(satsys(obs->data[i].sat, nullptr) & svr->rtk.opt.navsys)) continue; svr->obs[index][iobs].data[n] = obs->data[i]; svr->obs[index][iobs].data[n++].rcv = index + 1; } @@ -291,7 +291,7 @@ int decoderaw(rtksvr_t *svr, int index) { obs_t *obs; nav_t *nav; - sbsmsg_t *sbsmsg = NULL; + sbsmsg_t *sbsmsg = nullptr; int i, ret = 0, sat, fobs = 0; tracet(4, "decoderaw: index=%d\n", index); @@ -373,8 +373,8 @@ void decodefile(rtksvr_t *svr, int index) trop_t trop0[MAXSTA] = {{{0, 0.0}, {0.0}, {0.0}}}; pppcorr_t pppcorr0 = {0, {{0}, {0}}, {{0.0}, {0.0}}, {0}, {0}, {0}, {0}, {stec0}, {trop0}}; - nav_t nav = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - {0, 0, (erpd_t *){0}}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, + nav_t nav = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, + {0, 0, (erpd_t *){nullptr}}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, 0, {{0.0}, {0.0}}, {{0.0}, {0.0}}, {{{0.0}}, {{0.0}}, {{0.0}}}, {0.0}, {0.0}, {*glo_fcn}, {*pcvt0}, sbssat0, {*sbsion0}, {*dgps0}, {*ssr0}, {*lexeph0}, {{0, 0.0}, 0.0, {0.0}, {{0.0}, {0.0}}}, pppcorr0}; @@ -393,7 +393,7 @@ void decodefile(rtksvr_t *svr, int index) rtksvrunlock(svr); return; } - strncpy(file, (char *)svr->buff[index], nb - 2); + strncpy(file, reinterpret_cast(svr->buff[index]), nb - 2); file[nb - 2] = '\0'; svr->nb[index] = 0; @@ -424,7 +424,7 @@ void decodefile(rtksvr_t *svr, int index) { /* precise clock */ /* read rinex clock */ // Disabled!! - if (1 /*readrnxc(file, &nav)<=0 */) + if (true /*readrnxc(file, &nav)<=0 */) { tracet(1, "rinex clock file read error: %s\n", file); return; @@ -446,7 +446,7 @@ void decodefile(rtksvr_t *svr, int index) /* rtk server thread ---------------------------------------------------------*/ void *rtksvrthread(void *arg) { - rtksvr_t *svr = (rtksvr_t *)arg; + auto *svr = static_cast(arg); obs_t obs; obsd_t data[MAXOBS * 2]; double tt; @@ -518,14 +518,14 @@ void *rtksvrthread(void *arg) if (svr->rtk.sol.stat != SOLQ_NONE) { /* adjust current time */ - tt = (int)(tickget() - tick) / 1000.0 + DTTOL; + tt = static_cast(tickget() - tick) / 1000.0 + DTTOL; timeset(gpst2utc(timeadd(svr->rtk.sol.time, tt))); /* write solution */ writesol(svr, i); } /* if cpu overload, inclement obs outage counter and break */ - if ((int)(tickget() - tick) >= svr->cycle) + if (static_cast(tickget() - tick) >= svr->cycle) { svr->prcout += fobs[0] - i - 1; #if 0 /* omitted v.2.4.1 */ @@ -539,7 +539,7 @@ void *rtksvrthread(void *arg) writesol(svr, 0); } /* send nmea request to base/nrtk input stream */ - if (svr->nmeacycle > 0 && (int)(tick - ticknmea) >= svr->nmeacycle) + if (svr->nmeacycle > 0 && static_cast(tick - ticknmea) >= svr->nmeacycle) { if (svr->stream[1].state == 1) { @@ -554,7 +554,7 @@ void *rtksvrthread(void *arg) } ticknmea = tick; } - if ((cputime = (int)(tickget() - tick)) > 0) svr->cputime = cputime; + if ((cputime = static_cast(tickget() - tick)) > 0) svr->cputime = cputime; /* sleep until next cycle */ sleepms(svr->cycle - cputime); @@ -564,9 +564,9 @@ void *rtksvrthread(void *arg) { svr->nb[i] = svr->npb[i] = 0; free(svr->buff[i]); - svr->buff[i] = NULL; + svr->buff[i] = nullptr; free(svr->pbuf[i]); - svr->pbuf[i] = NULL; + svr->pbuf[i] = nullptr; //free_raw (svr->raw +i); free_rtcm(svr->rtcm + i); } @@ -574,9 +574,9 @@ void *rtksvrthread(void *arg) { svr->nsb[i] = 0; free(svr->sbuf[i]); - svr->sbuf[i] = NULL; + svr->sbuf[i] = nullptr; } - return 0; + return nullptr; } @@ -610,22 +610,22 @@ int rtksvrinit(rtksvr_t *svr) for (i = 0; i < 3; i++) svr->nb[i] = 0; for (i = 0; i < 2; i++) svr->nsb[i] = 0; for (i = 0; i < 3; i++) svr->npb[i] = 0; - for (i = 0; i < 3; i++) svr->buff[i] = NULL; - for (i = 0; i < 2; i++) svr->sbuf[i] = NULL; - for (i = 0; i < 3; i++) svr->pbuf[i] = NULL; + for (i = 0; i < 3; i++) svr->buff[i] = nullptr; + for (i = 0; i < 2; i++) svr->sbuf[i] = nullptr; + for (i = 0; i < 3; i++) svr->pbuf[i] = nullptr; for (i = 0; i < MAXSOLBUF; i++) svr->solbuf[i] = sol0; for (i = 0; i < 3; i++) for (j = 0; j < 10; j++) svr->nmsg[i][j] = 0; for (i = 0; i < 3; i++) svr->ftime[i] = time0; for (i = 0; i < 3; i++) svr->files[i][0] = '\0'; - svr->moni = NULL; + svr->moni = nullptr; svr->tick = 0; - svr->thread = 0; + svr->thread = 0; // NOLINT svr->cputime = svr->prcout = 0; - if (!(svr->nav.eph = (eph_t *)malloc(sizeof(eph_t) * MAXSAT * 2)) || - !(svr->nav.geph = (geph_t *)malloc(sizeof(geph_t) * NSATGLO * 2)) || - !(svr->nav.seph = (seph_t *)malloc(sizeof(seph_t) * NSATSBS * 2))) + if (!(svr->nav.eph = static_cast(malloc(sizeof(eph_t) * MAXSAT * 2))) || + !(svr->nav.geph = static_cast(malloc(sizeof(geph_t) * NSATGLO * 2))) || + !(svr->nav.seph = static_cast(malloc(sizeof(seph_t) * NSATSBS * 2)))) { tracet(1, "rtksvrinit: malloc error\n"); return 0; @@ -640,7 +640,7 @@ int rtksvrinit(rtksvr_t *svr) for (i = 0; i < 3; i++) for (j = 0; j < MAXOBSBUF; j++) { - if (!(svr->obs[i][j].data = (obsd_t *)malloc(sizeof(obsd_t) * MAXOBS))) + if (!(svr->obs[i][j].data = static_cast(malloc(sizeof(obsd_t) * MAXOBS)))) { tracet(1, "rtksvrinit: malloc error\n"); return 0; @@ -730,7 +730,7 @@ void rtksvrunlock(rtksvr_t *svr) { rtk_unlock(&svr->lock); } * return : status (1:ok 0:error) *-----------------------------------------------------------------------------*/ int rtksvrstart(rtksvr_t *svr, int cycle, int buffsize, int *strs, - char **paths, int *formats, int navsel, char **cmds, + char **paths, const int *formats, int navsel, char **cmds, char **rcvopts, int nmeacycle, int nmeareq, const double *nmeapos, prcopt_t *prcopt, solopt_t *solopt, stream_t *moni) @@ -760,8 +760,8 @@ int rtksvrstart(rtksvr_t *svr, int cycle, int buffsize, int *strs, for (i = 0; i < 3; i++) { /* input/log streams */ svr->nb[i] = svr->npb[i] = 0; - if (!(svr->buff[i] = (unsigned char *)malloc(buffsize)) || - !(svr->pbuf[i] = (unsigned char *)malloc(buffsize))) + if (!(svr->buff[i] = static_cast(malloc(buffsize))) || + !(svr->pbuf[i] = static_cast(malloc(buffsize)))) { tracet(1, "rtksvrstart: malloc error\n"); return 0; @@ -782,7 +782,7 @@ int rtksvrstart(rtksvr_t *svr, int cycle, int buffsize, int *strs, } for (i = 0; i < 2; i++) { /* output peek buffer */ - if (!(svr->sbuf[i] = (unsigned char *)malloc(buffsize))) + if (!(svr->sbuf[i] = static_cast(malloc(buffsize)))) { tracet(1, "rtksvrstart: malloc error\n"); return 0; @@ -840,7 +840,7 @@ int rtksvrstart(rtksvr_t *svr, int cycle, int buffsize, int *strs, writesolhead(svr->stream + i, svr->solopt + i - 3); } /* create rtk server thread */ - if (pthread_create(&svr->thread, NULL, rtksvrthread, svr)) + if (pthread_create(&svr->thread, nullptr, rtksvrthread, svr)) { for (i = 0; i < MAXSTRRTK; i++) strclose(svr->stream + i); return 0; @@ -876,7 +876,7 @@ void rtksvrstop(rtksvr_t *svr, char **cmds) svr->state = 0; /* free rtk server thread */ - pthread_join(svr->thread, NULL); + pthread_join(svr->thread, nullptr); } @@ -979,7 +979,7 @@ int rtksvrostat(rtksvr_t *svr, int rcv, gtime_t *time, int *sat, el[i] = svr->rtk.ssat[sat[i] - 1].azel[1]; for (j = 0; j < NFREQ; j++) { - snr[i][j] = (int)(svr->obs[rcv][0].data[i].SNR[j] * 0.25); + snr[i][j] = static_cast(svr->obs[rcv][0].data[i].SNR[j] * 0.25); } if (svr->rtk.sol.stat == SOLQ_NONE || svr->rtk.sol.stat == SOLQ_SINGLE) { diff --git a/src/algorithms/libs/rtklib/rtklib_rtksvr.h b/src/algorithms/libs/rtklib/rtklib_rtksvr.h index 0e6eb65e7..d5edbd252 100644 --- a/src/algorithms/libs/rtklib/rtklib_rtksvr.h +++ b/src/algorithms/libs/rtklib/rtklib_rtksvr.h @@ -116,7 +116,7 @@ void rtksvrlock(rtksvr_t *svr); void rtksvrunlock(rtksvr_t *svr); int rtksvrstart(rtksvr_t *svr, int cycle, int buffsize, int *strs, - char **paths, int *formats, int navsel, char **cmds, + char **paths, const int *formats, int navsel, char **cmds, char **rcvopts, int nmeacycle, int nmeareq, const double *nmeapos, prcopt_t *prcopt, solopt_t *solopt, stream_t *moni); diff --git a/src/algorithms/libs/rtklib/rtklib_sbas.cc b/src/algorithms/libs/rtklib/rtklib_sbas.cc index 3bd809d10..d4c45aad8 100644 --- a/src/algorithms/libs/rtklib/rtklib_sbas.cc +++ b/src/algorithms/libs/rtklib/rtklib_sbas.cc @@ -66,7 +66,7 @@ char *getfield(char *p, int pos) { for (pos--; pos > 0; pos--, p++) - if (!(p = strchr(p, ','))) return NULL; + if (!(p = strchr(p, ','))) return nullptr; return p; } @@ -148,7 +148,7 @@ int decode_sbstype2(const sbsmsg_t *msg, sbssat_t *sbssat) trace(4, "decode_sbstype2:\n"); - if (sbssat->iodp != (int)getbitu(msg->msg, 16, 2)) return 0; + if (sbssat->iodp != static_cast(getbitu(msg->msg, 16, 2))) return 0; type = getbitu(msg->msg, 8, 6); iodf = getbitu(msg->msg, 14, 2); @@ -209,7 +209,7 @@ int decode_sbstype7(const sbsmsg_t *msg, sbssat_t *sbssat) trace(4, "decode_sbstype7\n"); - if (sbssat->iodp != (int)getbitu(msg->msg, 18, 2)) return 0; + if (sbssat->iodp != static_cast(getbitu(msg->msg, 18, 2))) return 0; sbssat->tlat = getbitu(msg->msg, 14, 4); @@ -234,7 +234,7 @@ int decode_sbstype9(const sbsmsg_t *msg, nav_t *nav) trace(2, "invalid prn in sbas type 9: prn=%3d\n", msg->prn); return 0; } - t = (int)getbitu(msg->msg, 22, 13) * 16 - (int)msg->tow % 86400; + t = static_cast(getbitu(msg->msg, 22, 13)) * 16 - msg->tow % 86400; if (t <= -43200) t += 86400; else if (t > 43200) @@ -292,7 +292,7 @@ int decode_sbstype18(const sbsmsg_t *msg, sbsion_t *sbsion) else return 0; - sbsion[band].iodi = (short)getbitu(msg->msg, 22, 2); + sbsion[band].iodi = static_cast(getbitu(msg->msg, 22, 2)); for (i = 1, n = 0; i <= 201; i++) { @@ -355,7 +355,7 @@ int decode_longcorr1(const sbsmsg_t *msg, int p, sbssat_t *sbssat) } sbssat->sat[n - 1].lcorr.daf0 = getbits(msg->msg, p + 47, 11) * TWO_N31; sbssat->sat[n - 1].lcorr.daf1 = getbits(msg->msg, p + 82, 8) * TWO_N39; - t = (int)getbitu(msg->msg, p + 90, 13) * 16 - (int)msg->tow % 86400; + t = static_cast(getbitu(msg->msg, p + 90, 13)) * 16 - msg->tow % 86400; if (t <= -43200) t += 86400; else if (t > 43200) @@ -374,13 +374,13 @@ int decode_longcorrh(const sbsmsg_t *msg, int p, sbssat_t *sbssat) if (getbitu(msg->msg, p, 1) == 0) { /* vel code=0 */ - if (sbssat->iodp == (int)getbitu(msg->msg, p + 103, 2)) + if (sbssat->iodp == static_cast(getbitu(msg->msg, p + 103, 2))) { return decode_longcorr0(msg, p + 1, sbssat) && decode_longcorr0(msg, p + 52, sbssat); } } - else if (sbssat->iodp == (int)getbitu(msg->msg, p + 104, 2)) + else if (sbssat->iodp == static_cast(getbitu(msg->msg, p + 104, 2))) { return decode_longcorr1(msg, p + 1, sbssat); } @@ -395,7 +395,7 @@ int decode_sbstype24(const sbsmsg_t *msg, sbssat_t *sbssat) trace(4, "decode_sbstype24:\n"); - if (sbssat->iodp != (int)getbitu(msg->msg, 110, 2)) return 0; /* check IODP */ + if (sbssat->iodp != static_cast(getbitu(msg->msg, 110, 2))) return 0; /* check IODP */ blk = getbitu(msg->msg, 112, 2); iodf = getbitu(msg->msg, 114, 2); @@ -430,7 +430,7 @@ int decode_sbstype26(const sbsmsg_t *msg, sbsion_t *sbsion) trace(4, "decode_sbstype26:\n"); - if (band > MAXBAND || sbsion[band].iodi != (int)getbitu(msg->msg, 217, 2)) return 0; + if (band > MAXBAND || sbsion[band].iodi != static_cast(getbitu(msg->msg, 217, 2))) return 0; block = getbitu(msg->msg, 18, 4); @@ -529,7 +529,7 @@ void readmsgs(const char *file, int sel, gtime_t ts, gtime_t te, trace(3, "readmsgs: file=%s sel=%d\n", file, sel); - if (!(fp = fopen(file, "r"))) + if (!(fp = fopen(file, "re"))) { trace(2, "sbas message file open error: %s\n", file); return; @@ -575,11 +575,11 @@ void readmsgs(const char *file, int sel, gtime_t ts, gtime_t te, if (sbs->n >= sbs->nmax) { sbs->nmax = sbs->nmax == 0 ? 1024 : sbs->nmax * 2; - if (!(sbs_msgs = (sbsmsg_t *)realloc(sbs->msgs, sbs->nmax * sizeof(sbsmsg_t)))) + if (!(sbs_msgs = static_cast(realloc(sbs->msgs, sbs->nmax * sizeof(sbsmsg_t))))) { trace(1, "readsbsmsg malloc error: nmax=%d\n", sbs->nmax); free(sbs->msgs); - sbs->msgs = NULL; + sbs->msgs = nullptr; sbs->n = sbs->nmax = 0; fclose(fp); return; @@ -587,12 +587,12 @@ void readmsgs(const char *file, int sel, gtime_t ts, gtime_t te, sbs->msgs = sbs_msgs; } sbs->msgs[sbs->n].week = week; - sbs->msgs[sbs->n].tow = (int)(tow + 0.5); + sbs->msgs[sbs->n].tow = static_cast(tow + 0.5); sbs->msgs[sbs->n].prn = prn; for (i = 0; i < 29; i++) sbs->msgs[sbs->n].msg[i] = 0; for (i = 0; *(p - 1) && *p && i < 29; p += 2, i++) { - if (sscanf(p, "%2X", &b) == 1) sbs->msgs[sbs->n].msg[i] = (unsigned char)b; + if (sscanf(p, "%2X", &b) == 1) sbs->msgs[sbs->n].msg[i] = static_cast(b); } sbs->msgs[sbs->n++].msg[28] &= 0xC0; } @@ -603,7 +603,7 @@ void readmsgs(const char *file, int sel, gtime_t ts, gtime_t te, /* compare sbas messages -----------------------------------------------------*/ int cmpmsgs(const void *p1, const void *p2) { - sbsmsg_t *q1 = (sbsmsg_t *)p1, *q2 = (sbsmsg_t *)p2; + auto *q1 = (sbsmsg_t *)p1, *q2 = (sbsmsg_t *)p2; return q1->week != q2->week ? q1->week - q2->week : (q1->tow < q2->tow ? -1 : (q1->tow > q2->tow ? 1 : q1->prn - q2->prn)); } @@ -633,7 +633,7 @@ int sbsreadmsgt(const char *file, int sel, gtime_t ts, gtime_t te, for (i = 0; i < MAXEXFILE; i++) { - if (!(efiles[i] = (char *)malloc(1024))) + if (!(efiles[i] = static_cast(malloc(1024)))) { for (i--; i >= 0; i--) free(efiles[i]); return 0; @@ -645,8 +645,8 @@ int sbsreadmsgt(const char *file, int sel, gtime_t ts, gtime_t te, for (i = 0; i < n; i++) { if (!(ext = strrchr(efiles[i], '.'))) continue; - if (strcmp(ext, ".sbs") && strcmp(ext, ".SBS") && - strcmp(ext, ".ems") && strcmp(ext, ".EMS")) continue; + if (strcmp(ext, ".sbs") != 0 && strcmp(ext, ".SBS") != 0 && + strcmp(ext, ".ems") != 0 && strcmp(ext, ".EMS") != 0) continue; readmsgs(efiles[i], sel, ts, te, sbs); } @@ -702,38 +702,38 @@ void searchigp(gtime_t time __attribute__((unused)), const double *pos, const sb if (lon >= 180.0) lon -= 360.0; if (-55.0 <= lat && lat < 55.0) { - latp[0] = (int)floor(lat / 5.0) * 5; + latp[0] = static_cast(floor(lat / 5.0)) * 5; latp[1] = latp[0] + 5; - lonp[0] = lonp[1] = (int)floor(lon / 5.0) * 5; + lonp[0] = lonp[1] = static_cast(floor(lon / 5.0)) * 5; lonp[2] = lonp[3] = lonp[0] + 5; *x = (lon - lonp[0]) / 5.0; *y = (lat - latp[0]) / 5.0; } else { - latp[0] = (int)floor((lat - 5.0) / 10.0) * 10 + 5; + latp[0] = static_cast(floor((lat - 5.0) / 10.0)) * 10 + 5; latp[1] = latp[0] + 10; - lonp[0] = lonp[1] = (int)floor(lon / 10.0) * 10; + lonp[0] = lonp[1] = static_cast(floor(lon / 10.0)) * 10; lonp[2] = lonp[3] = lonp[0] + 10; *x = (lon - lonp[0]) / 10.0; *y = (lat - latp[0]) / 10.0; if (75.0 <= lat && lat < 85.0) { - lonp[1] = (int)floor(lon / 90.0) * 90; + lonp[1] = static_cast(floor(lon / 90.0)) * 90; lonp[3] = lonp[1] + 90; } else if (-85.0 <= lat && lat < -75.0) { - lonp[0] = (int)floor((lon - 50.0) / 90.0) * 90 + 40; + lonp[0] = static_cast(floor((lon - 50.0) / 90.0)) * 90 + 40; lonp[2] = lonp[0] + 90; } else if (lat >= 85.0) { - for (i = 0; i < 4; i++) lonp[i] = (int)floor(lon / 90.0) * 90; + for (i = 0; i < 4; i++) lonp[i] = static_cast(floor(lon / 90.0)) * 90; } else if (lat < -85.0) { - for (i = 0; i < 4; i++) lonp[i] = (int)floor((lon - 50.0) / 90.0) * 90 + 40; + for (i = 0; i < 4; i++) lonp[i] = static_cast(floor((lon - 50.0) / 90.0)) * 90 + 40; } } for (i = 0; i < 4; i++) @@ -864,7 +864,7 @@ void getmet(double lat, double *met) for (i = 0; i < 10; i++) met[i] = metprm[4][i]; else { - j = (int)(lat / 15.0); + j = static_cast(lat / 15.0); a = (lat - j * 15.0) / 15.0; for (i = 0; i < 10; i++) met[i] = (1.0 - a) * metprm[j - 1][i] + a * metprm[j][i]; } @@ -942,7 +942,7 @@ int sbslongcorr(gtime_t time, int sat, const sbssat_t *sbssat, return 1; } /* if sbas satellite without correction, no correction applied */ - if (satsys(sat, NULL) == SYS_SBS) return 1; + if (satsys(sat, nullptr) == SYS_SBS) return 1; trace(2, "no sbas long-term correction: %s sat=%2d\n", time_str(time, 0), sat); return 0; @@ -1049,14 +1049,14 @@ int sbsdecodemsg(gtime_t time, int prn, const unsigned int *words, if (time.time == 0) return 0; tow = time2gpst(time, &sbsmsg->week); - sbsmsg->tow = (int)(tow + DTTOL); + sbsmsg->tow = static_cast(tow + DTTOL); sbsmsg->prn = prn; for (i = 0; i < 7; i++) for (j = 0; j < 4; j++) { - sbsmsg->msg[i * 4 + j] = (unsigned char)(words[i] >> ((3 - j) * 8)); + sbsmsg->msg[i * 4 + j] = static_cast(words[i] >> ((3 - j) * 8)); } - sbsmsg->msg[28] = (unsigned char)(words[7] >> 18) & 0xC0; + sbsmsg->msg[28] = static_cast(words[7] >> 18) & 0xC0; for (i = 28; i > 0; i--) f[i] = (sbsmsg->msg[i] >> 6) + (sbsmsg->msg[i - 1] << 2); f[0] = sbsmsg->msg[0] >> 6; diff --git a/src/algorithms/libs/rtklib/rtklib_solution.cc b/src/algorithms/libs/rtklib/rtklib_solution.cc index 71a25f105..e2c19cecd 100644 --- a/src/algorithms/libs/rtklib/rtklib_solution.cc +++ b/src/algorithms/libs/rtklib/rtklib_solution.cc @@ -51,10 +51,10 @@ * *----------------------------------------------------------------------------*/ -#include #include "rtklib_solution.h" #include "rtklib_rtkcmn.h" #include "rtklib_rtksvr.h" +#include /* constants and macros ------------------------------------------------------*/ @@ -79,7 +79,7 @@ const char *opt2sep(const solopt_t *opt) { if (!*opt->sep) return " "; - else if (!strcmp(opt->sep, "\\t")) + if (!strcmp(opt->sep, "\\t")) return "\t"; return opt->sep; } @@ -88,7 +88,7 @@ const char *opt2sep(const solopt_t *opt) /* separate fields -----------------------------------------------------------*/ int tonum(char *buff, const char *sep, double *v) { - int n, len = (int)strlen(sep); + int n, len = static_cast(strlen(sep)); char *p, *q; for (p = buff, n = 0; n < MAXFIELD; p = q + len) @@ -140,12 +140,12 @@ void soltocov(const sol_t *sol, double *P) /* covariance to solution ----------------------------------------------------*/ void covtosol(const double *P, sol_t *sol) { - sol->qr[0] = (float)P[0]; /* xx or ee */ - sol->qr[1] = (float)P[4]; /* yy or nn */ - sol->qr[2] = (float)P[8]; /* zz or uu */ - sol->qr[3] = (float)P[1]; /* xy or en */ - sol->qr[4] = (float)P[5]; /* yz or nu */ - sol->qr[5] = (float)P[2]; /* zx or ue */ + sol->qr[0] = static_cast(P[0]); /* xx or ee */ + sol->qr[1] = static_cast(P[4]); /* yy or nn */ + sol->qr[2] = static_cast(P[8]); /* zz or uu */ + sol->qr[3] = static_cast(P[1]); /* xy or en */ + sol->qr[4] = static_cast(P[5]); /* yz or nu */ + sol->qr[5] = static_cast(P[2]); /* zx or ue */ } @@ -322,7 +322,7 @@ int decode_nmeagga(char **val, int n, sol_t *sol) /* decode nmea ---------------------------------------------------------------*/ int decode_nmea(char *buff, sol_t *sol) { - char *p, *q, *val[MAXFIELD] = {0}; + char *p, *q, *val[MAXFIELD] = {nullptr}; int n = 0; trace(4, "decode_nmea: buff=%s\n", buff); @@ -343,7 +343,7 @@ int decode_nmea(char *buff, sol_t *sol) { return decode_nmearmc(val + 1, n - 1, sol); } - else if (!strcmp(val[0], "$GPGGA")) + if (!strcmp(val[0], "$GPGGA")) { return decode_nmeagga(val + 1, n - 1, sol); } @@ -364,7 +364,7 @@ char *decode_soltime(char *buff, const solopt_t *opt, gtime_t *time) strcpy(s, "\t"); else if (*opt->sep) strcpy(s, opt->sep); - len = (int)strlen(s); + len = static_cast(strlen(s)); /* yyyy/mm/dd hh:mm:ss or yyyy mm dd hh:mm:ss */ if (sscanf(buff, "%lf/%lf/%lf %lf:%lf:%lf", v, v + 1, v + 2, v + 3, v + 4, v + 5) >= 6) @@ -382,19 +382,19 @@ char *decode_soltime(char *buff, const solopt_t *opt, gtime_t *time) { *time = utc2gpst(timeadd(*time, -9 * 3600.0)); } - if (!(p = strchr(buff, ':')) || !(p = strchr(p + 1, ':'))) return NULL; - for (p++; isdigit((int)*p) || *p == '.';) p++; + if (!(p = strchr(buff, ':')) || !(p = strchr(p + 1, ':'))) return nullptr; + for (p++; isdigit(static_cast(*p)) || *p == '.';) p++; return p + len; } if (opt->posf == SOLF_GSIF) { if (sscanf(buff, "%lf %lf %lf %lf:%lf:%lf", v, v + 1, v + 2, v + 3, v + 4, v + 5) < 6) { - return NULL; + return nullptr; } *time = timeadd(epoch2time(v), -12.0 * 3600.0); - if (!(p = strchr(buff, ':')) || !(p = strchr(p + 1, ':'))) return NULL; - for (p++; isdigit((int)*p) || *p == '.';) p++; + if (!(p = strchr(buff, ':')) || !(p = strchr(p + 1, ':'))) return nullptr; + for (p++; isdigit(static_cast(*p)) || *p == '.';) p++; return p + len; } /* wwww ssss */ @@ -406,10 +406,10 @@ char *decode_soltime(char *buff, const solopt_t *opt, gtime_t *time) } if (n >= 2 && 0.0 <= v[0] && v[0] <= 3000.0 && 0.0 <= v[1] && v[1] < 604800.0) { - *time = gpst2time((int)v[0], v[1]); + *time = gpst2time(static_cast(v[0]), v[1]); return p; } - return NULL; + return nullptr; } @@ -428,8 +428,8 @@ int decode_solxyz(char *buff, const solopt_t *opt, sol_t *sol) { sol->rr[j] = val[i++]; /* xyz */ } - if (i < n) sol->stat = (unsigned char)val[i++]; - if (i < n) sol->ns = (unsigned char)val[i++]; + if (i < n) sol->stat = static_cast(val[i++]); + if (i < n) sol->ns = static_cast(val[i++]); if (i + 3 < n) { P[0] = val[i] * val[i]; @@ -449,8 +449,8 @@ int decode_solxyz(char *buff, const solopt_t *opt, sol_t *sol) } covtosol(P, sol); } - if (i < n) sol->age = (float)val[i++]; - if (i < n) sol->ratio = (float)val[i]; + if (i < n) sol->age = static_cast(val[i++]); + if (i < n) sol->ratio = static_cast(val[i]); sol->type = 0; /* position type = xyz */ @@ -486,8 +486,8 @@ int decode_solllh(char *buff, const solopt_t *opt, sol_t *sol) i += 7; } pos2ecef(pos, sol->rr); - if (i < n) sol->stat = (unsigned char)val[i++]; - if (i < n) sol->ns = (unsigned char)val[i++]; + if (i < n) sol->stat = static_cast(val[i++]); + if (i < n) sol->ns = static_cast(val[i++]); if (i + 3 < n) { Q[4] = val[i] * val[i]; @@ -508,8 +508,8 @@ int decode_solllh(char *buff, const solopt_t *opt, sol_t *sol) covecef(pos, Q, P); covtosol(P, sol); } - if (i < n) sol->age = (float)val[i++]; - if (i < n) sol->ratio = (float)val[i]; + if (i < n) sol->age = static_cast(val[i++]); + if (i < n) sol->ratio = static_cast(val[i]); sol->type = 0; /* position type = xyz */ @@ -533,8 +533,8 @@ int decode_solenu(char *buff, const solopt_t *opt, sol_t *sol) { sol->rr[j] = val[i++]; /* enu */ } - if (i < n) sol->stat = (unsigned char)val[i++]; - if (i < n) sol->ns = (unsigned char)val[i++]; + if (i < n) sol->stat = static_cast(val[i++]); + if (i < n) sol->ns = static_cast(val[i++]); if (i + 3 < n) { Q[0] = val[i] * val[i]; @@ -554,8 +554,8 @@ int decode_solenu(char *buff, const solopt_t *opt, sol_t *sol) } covtosol(Q, sol); } - if (i < n) sol->age = (float)val[i++]; - if (i < n) sol->ratio = (float)val[i]; + if (i < n) sol->age = static_cast(val[i++]); + if (i < n) sol->ratio = static_cast(val[i]); sol->type = 1; /* position type = enu */ @@ -682,7 +682,7 @@ void decode_solopt(char *buff, solopt_t *opt) trace(4, "decode_solhead: buff=%s\n", buff); - if (strncmp(buff, COMMENTH, 1) && strncmp(buff, "+", 1)) return; + if (strncmp(buff, COMMENTH, 1) != 0 && strncmp(buff, "+", 1) != 0) return; if (strstr(buff, "GPST")) opt->times = TIMES_GPST; @@ -776,13 +776,13 @@ int inputsol(unsigned char data, gtime_t ts, gtime_t te, double tint, solbuf->nb = 0; /* check disconnect message */ - if (!strcmp((char *)solbuf->buff, MSG_DISCONN)) + if (!strcmp(reinterpret_cast(solbuf->buff), MSG_DISCONN)) { trace(3, "disconnect received\n"); return -1; } /* decode solution */ - if ((stat = decode_sol((char *)solbuf->buff, opt, &sol, solbuf->rb)) > 0) + if ((stat = decode_sol(reinterpret_cast(solbuf->buff), opt, &sol, solbuf->rb)) > 0) { solbuf->time = sol.time; /* update current time */ } @@ -806,7 +806,7 @@ int readsoldata(FILE *fp, gtime_t ts, gtime_t te, double tint, int qflag, while ((c = fgetc(fp)) != EOF) { /* input solution */ - inputsol((unsigned char)c, ts, te, tint, qflag, opt, solbuf); + inputsol(static_cast(c), ts, te, tint, qflag, opt, solbuf); } return solbuf->n > 0; } @@ -815,7 +815,7 @@ int readsoldata(FILE *fp, gtime_t ts, gtime_t te, double tint, int qflag, /* compare solution data -----------------------------------------------------*/ int cmpsol(const void *p1, const void *p2) { - sol_t *q1 = (sol_t *)p1, *q2 = (sol_t *)p2; + auto *q1 = (sol_t *)p1, *q2 = (sol_t *)p2; double tt = timediff(q1->time, q2->time); return tt < -0.0 ? -1 : (tt > 0.0 ? 1 : 0); } @@ -830,11 +830,11 @@ int sort_solbuf(solbuf_t *solbuf) if (solbuf->n <= 0) return 0; - if (!(solbuf_data = (sol_t *)realloc(solbuf->data, sizeof(sol_t) * solbuf->n))) + if (!(solbuf_data = static_cast(realloc(solbuf->data, sizeof(sol_t) * solbuf->n)))) { trace(1, "sort_solbuf: memory allocation error\n"); free(solbuf->data); - solbuf->data = NULL; + solbuf->data = nullptr; solbuf->n = solbuf->nmax = 0; return 0; } @@ -871,7 +871,7 @@ int readsolt(char *files[], int nfile, gtime_t ts, gtime_t te, for (i = 0; i < nfile; i++) { - if (!(fp = fopen(files[i], "rb"))) + if (!(fp = fopen(files[i], "rbe"))) { trace(1, "readsolt: file open error %s\n", files[i]); continue; @@ -931,11 +931,11 @@ int addsol(solbuf_t *solbuf, const sol_t *sol) if (solbuf->n >= solbuf->nmax) { solbuf->nmax = solbuf->nmax == 0 ? 8192 : solbuf->nmax * 2; - if (!(solbuf_data = (sol_t *)realloc(solbuf->data, sizeof(sol_t) * solbuf->nmax))) + if (!(solbuf_data = static_cast(realloc(solbuf->data, sizeof(sol_t) * solbuf->nmax)))) { trace(1, "addsol: memory allocation error\n"); free(solbuf->data); - solbuf->data = NULL; + solbuf->data = nullptr; solbuf->n = solbuf->nmax = 0; return 0; } @@ -956,7 +956,7 @@ sol_t *getsol(solbuf_t *solbuf, int index) { trace(4, "getsol: index=%d\n", index); - if (index < 0 || solbuf->n <= index) return NULL; + if (index < 0 || solbuf->n <= index) return nullptr; if ((index = solbuf->start + index) >= solbuf->nmax) { index -= solbuf->nmax; @@ -981,11 +981,11 @@ void initsolbuf(solbuf_t *solbuf, int cyclic, int nmax) solbuf->n = solbuf->nmax = solbuf->start = solbuf->end = 0; solbuf->cyclic = cyclic; solbuf->time = time0; - solbuf->data = NULL; + solbuf->data = nullptr; if (cyclic) { if (nmax <= 2) nmax = 2; - if (!(solbuf->data = (sol_t *)malloc(sizeof(sol_t) * nmax))) + if (!(solbuf->data = static_cast(malloc(sizeof(sol_t) * nmax)))) { trace(1, "initsolbuf: memory allocation error\n"); return; @@ -1006,7 +1006,7 @@ void freesolbuf(solbuf_t *solbuf) free(solbuf->data); solbuf->n = solbuf->nmax = solbuf->start = solbuf->end = 0; - solbuf->data = NULL; + solbuf->data = nullptr; } @@ -1016,14 +1016,14 @@ void freesolstatbuf(solstatbuf_t *solstatbuf) solstatbuf->n = solstatbuf->nmax = 0; free(solstatbuf->data); - solstatbuf->data = NULL; + solstatbuf->data = nullptr; } /* compare solution status ---------------------------------------------------*/ int cmpsolstat(const void *p1, const void *p2) { - solstat_t *q1 = (solstat_t *)p1, *q2 = (solstat_t *)p2; + auto *q1 = (solstat_t *)p1, *q2 = (solstat_t *)p2; double tt = timediff(q1->time, q2->time); return tt < -0.0 ? -1 : (tt > 0.0 ? 1 : 0); } @@ -1038,11 +1038,11 @@ int sort_solstat(solstatbuf_t *statbuf) if (statbuf->n <= 0) return 0; - if (!(statbuf_data = (solstat_t *)realloc(statbuf->data, sizeof(solstat_t) * statbuf->n))) + if (!(statbuf_data = static_cast(realloc(statbuf->data, sizeof(solstat_t) * statbuf->n)))) { trace(1, "sort_solstat: memory allocation error\n"); free(statbuf->data); - statbuf->data = NULL; + statbuf->data = nullptr; statbuf->n = statbuf->nmax = 0; return 0; } @@ -1084,18 +1084,18 @@ int decode_solstat(char *buff, solstat_t *stat) } *stat = stat0; stat->time = gpst2time(week, tow); - stat->sat = (unsigned char)sat; - stat->frq = (unsigned char)frq; - stat->az = (float)(az * D2R); - stat->el = (float)(el * D2R); - stat->resp = (float)resp; - stat->resc = (float)resc; - stat->flag = (unsigned char)((vsat << 5) + (slip << 3) + fix); - stat->snr = (unsigned char)(snr * 4.0 + 0.5); - stat->lock = (unsigned short)lock; - stat->outc = (unsigned short)outc; - stat->slipc = (unsigned short)slipc; - stat->rejc = (unsigned short)rejc; + stat->sat = static_cast(sat); + stat->frq = static_cast(frq); + stat->az = static_cast(az * D2R); + stat->el = static_cast(el * D2R); + stat->resp = static_cast(resp); + stat->resc = static_cast(resc); + stat->flag = static_cast((vsat << 5) + (slip << 3) + fix); + stat->snr = static_cast(snr * 4.0 + 0.5); + stat->lock = static_cast(lock); + stat->outc = static_cast(outc); + stat->slipc = static_cast(slipc); + stat->rejc = static_cast(rejc); return 1; } @@ -1110,12 +1110,12 @@ void addsolstat(solstatbuf_t *statbuf, const solstat_t *stat) if (statbuf->n >= statbuf->nmax) { statbuf->nmax = statbuf->nmax == 0 ? 8192 : statbuf->nmax * 2; - if (!(statbuf_data = (solstat_t *)realloc(statbuf->data, sizeof(solstat_t) * - statbuf->nmax))) + if (!(statbuf_data = static_cast(realloc(statbuf->data, sizeof(solstat_t) * + statbuf->nmax)))) { trace(1, "addsolstat: memory allocation error\n"); free(statbuf->data); - statbuf->data = NULL; + statbuf->data = nullptr; statbuf->n = statbuf->nmax = 0; return; } @@ -1169,12 +1169,12 @@ int readsolstatt(char *files[], int nfile, gtime_t ts, gtime_t te, trace(3, "readsolstatt: nfile=%d\n", nfile); statbuf->n = statbuf->nmax = 0; - statbuf->data = NULL; + statbuf->data = nullptr; for (i = 0; i < nfile; i++) { sprintf(path, "%s.stat", files[i]); - if (!(fp = fopen(path, "r"))) + if (!(fp = fopen(path, "re"))) { trace(1, "readsolstatt: file open error %s\n", path); continue; @@ -1205,7 +1205,7 @@ int outecef(unsigned char *buff, const char *s, const sol_t *sol, const solopt_t *opt) { const char *sep = opt2sep(opt); - char *p = (char *)buff; + char *p = reinterpret_cast(buff); trace(3, "outecef:\n"); @@ -1214,7 +1214,7 @@ int outecef(unsigned char *buff, const char *s, const sol_t *sol, sol->ns, sep, SQRT_SOL(sol->qr[0]), sep, SQRT_SOL(sol->qr[1]), sep, SQRT_SOL(sol->qr[2]), sep, sqvar(sol->qr[3]), sep, sqvar(sol->qr[4]), sep, sqvar(sol->qr[5]), sep, sol->age, sep, sol->ratio); - return p - (char *)buff; + return p - reinterpret_cast(buff); } @@ -1224,7 +1224,7 @@ int outpos(unsigned char *buff, const char *s, const sol_t *sol, { double pos[3], dms1[3], dms2[3], P[9], Q[9]; const char *sep = opt2sep(opt); - char *p = (char *)buff; + char *p = reinterpret_cast(buff); trace(3, "outpos :\n"); @@ -1249,7 +1249,7 @@ int outpos(unsigned char *buff, const char *s, const sol_t *sol, sep, pos[2], sep, sol->stat, sep, sol->ns, sep, SQRT_SOL(Q[4]), sep, SQRT_SOL(Q[0]), sep, SQRT_SOL(Q[8]), sep, sqvar(Q[1]), sep, sqvar(Q[2]), sep, sqvar(Q[5]), sep, sol->age, sep, sol->ratio); - return p - (char *)buff; + return p - reinterpret_cast(buff); } @@ -1260,7 +1260,7 @@ int outenu(unsigned char *buff, const char *s, const sol_t *sol, double pos[3], rr[3], enu[3], P[9], Q[9]; int i; const char *sep = opt2sep(opt); - char *p = (char *)buff; + char *p = reinterpret_cast(buff); trace(3, "outenu :\n"); @@ -1273,7 +1273,7 @@ int outenu(unsigned char *buff, const char *s, const sol_t *sol, s, sep, enu[0], sep, enu[1], sep, enu[2], sep, sol->stat, sep, sol->ns, sep, SQRT_SOL(Q[0]), sep, SQRT_SOL(Q[4]), sep, SQRT_SOL(Q[8]), sep, sqvar(Q[1]), sep, sqvar(Q[5]), sep, sqvar(Q[2]), sep, sol->age, sep, sol->ratio); - return p - (char *)buff; + return p - reinterpret_cast(buff); } @@ -1283,16 +1283,16 @@ int outnmea_rmc(unsigned char *buff, const sol_t *sol) static double dirp = 0.0; gtime_t time; double ep[6], pos[3], enuv[3], dms1[3], dms2[3], vel, dir, amag = 0.0; - char *p = (char *)buff, *q, sum, *emag = (char *)"E"; + char *p = reinterpret_cast(buff), *q, sum, *emag = (char *)"E"; trace(3, "outnmea_rmc:\n"); if (sol->stat <= SOLQ_NONE) { p += sprintf(p, "$GPRMC,,,,,,,,,,,,"); - for (q = (char *)buff + 1, sum = 0; *q; q++) sum ^= *q; + for (q = reinterpret_cast(buff) + 1, sum = 0; *q; q++) sum ^= *q; p += sprintf(p, "*%02X%c%c", sum, 0x0D, 0x0A); - return p - (char *)buff; + return p - reinterpret_cast(buff); } time = gpst2utc(sol->time); if (time.sec >= 0.995) @@ -1317,11 +1317,11 @@ int outnmea_rmc(unsigned char *buff, const sol_t *sol) p += sprintf(p, "$GPRMC,%02.0f%02.0f%05.2f,A,%02.0f%010.7f,%s,%03.0f%010.7f,%s,%4.2f,%4.2f,%02.0f%02.0f%02d,%.1f,%s,%s", ep[3], ep[4], ep[5], dms1[0], dms1[1] + dms1[2] / 60.0, pos[0] >= 0 ? "N" : "S", dms2[0], dms2[1] + dms2[2] / 60.0, pos[1] >= 0 ? "E" : "W", vel / KNOT2M, dir, - ep[2], ep[1], (int)ep[0] % 100, amag, emag, + ep[2], ep[1], static_cast(ep[0]) % 100, amag, emag, sol->stat == SOLQ_DGPS || sol->stat == SOLQ_FLOAT || sol->stat == SOLQ_FIX ? "D" : "A"); - for (q = (char *)buff + 1, sum = 0; *q; q++) sum ^= *q; /* check-sum */ + for (q = reinterpret_cast(buff) + 1, sum = 0; *q; q++) sum ^= *q; /* check-sum */ p += sprintf(p, "*%02X%c%c", sum, 0x0D, 0x0A); - return p - (char *)buff; + return p - reinterpret_cast(buff); } @@ -1331,16 +1331,16 @@ int outnmea_gga(unsigned char *buff, const sol_t *sol) gtime_t time; double h, ep[6], pos[3], dms1[3], dms2[3], dop = 1.0; int solq; - char *p = (char *)buff, *q, sum; + char *p = reinterpret_cast(buff), *q, sum; trace(3, "outnmea_gga:\n"); if (sol->stat <= SOLQ_NONE) { p += sprintf(p, "$GPGGA,,,,,,,,,,,,,,"); - for (q = (char *)buff + 1, sum = 0; *q; q++) sum ^= *q; + for (q = reinterpret_cast(buff) + 1, sum = 0; *q; q++) sum ^= *q; p += sprintf(p, "*%02X%c%c", sum, 0x0D, 0x0A); - return p - (char *)buff; + return p - reinterpret_cast(buff); } for (solq = 0; solq < 8; solq++) if (solq_nmea[solq] == sol->stat) break; @@ -1360,9 +1360,9 @@ int outnmea_gga(unsigned char *buff, const sol_t *sol) ep[3], ep[4], ep[5], dms1[0], dms1[1] + dms1[2] / 60.0, pos[0] >= 0 ? "N" : "S", dms2[0], dms2[1] + dms2[2] / 60.0, pos[1] >= 0 ? "E" : "W", solq, sol->ns, dop, pos[2] - h, h, sol->age); - for (q = (char *)buff + 1, sum = 0; *q; q++) sum ^= *q; /* check-sum */ + for (q = reinterpret_cast(buff) + 1, sum = 0; *q; q++) sum ^= *q; /* check-sum */ p += sprintf(p, "*%02X%c%c", sum, 0x0D, 0x0A); - return p - (char *)buff; + return p - reinterpret_cast(buff); } @@ -1372,16 +1372,16 @@ int outnmea_gsa(unsigned char *buff, const sol_t *sol, { double azel[MAXSAT * 2], dop[4]; int i, sat, sys, nsat, prn[MAXSAT]; - char *p = (char *)buff, *q, *s, sum; + char *p = reinterpret_cast(buff), *q, *s, sum; trace(3, "outnmea_gsa:\n"); if (sol->stat <= SOLQ_NONE) { p += sprintf(p, "$GPGSA,A,1,,,,,,,,,,,,,,,"); - for (q = (char *)buff + 1, sum = 0; *q; q++) sum ^= *q; + for (q = reinterpret_cast(buff) + 1, sum = 0; *q; q++) sum ^= *q; p += sprintf(p, "*%02X%c%c", sum, 0x0D, 0x0A); - return p - (char *)buff; + return p - reinterpret_cast(buff); } /* GPGSA: gps/sbas */ @@ -1458,7 +1458,7 @@ int outnmea_gsa(unsigned char *buff, const sol_t *sol, for (q = s + 1, sum = 0; *q; q++) sum ^= *q; /* check-sum */ p += sprintf(p, "*%02X%c%c", sum, 0x0D, 0x0A); } - return p - (char *)buff; + return p - reinterpret_cast(buff); } @@ -1468,16 +1468,16 @@ int outnmea_gsv(unsigned char *buff, const sol_t *sol, { double az, el, snr; int i, j, k, n, sat, prn, sys, nmsg, sats[MAXSAT]; - char *p = (char *)buff, *q, *s, sum; + char *p = reinterpret_cast(buff), *q, *s, sum; trace(3, "outnmea_gsv:\n"); if (sol->stat <= SOLQ_NONE) { p += sprintf(p, "$GPGSV,1,1,0,,,,,,,,,,,,,,,,"); - for (q = (char *)buff + 1, sum = 0; *q; q++) sum ^= *q; + for (q = reinterpret_cast(buff) + 1, sum = 0; *q; q++) sum ^= *q; p += sprintf(p, "*%02X%c%c", sum, 0x0D, 0x0A); - return p - (char *)buff; + return p - reinterpret_cast(buff); } /* GPGSV: gps/sbas */ for (sat = 1, n = 0; sat < MAXSAT && n < 12; sat++) @@ -1574,7 +1574,7 @@ int outnmea_gsv(unsigned char *buff, const sol_t *sol, for (q = s + 1, sum = 0; *q; q++) sum ^= *q; /* check-sum */ p += sprintf(p, "*%02X%c%c", sum, 0x0D, 0x0A); } - return p - (char *)buff; + return p - reinterpret_cast(buff); } @@ -1601,7 +1601,7 @@ int outprcopts(unsigned char *buff, const prcopt_t *opt) const char *s8[] = {"off", "continuous", "instantaneous", "fix and hold", ""}; const char *s9[] = {"off", "on", "auto calib", "external calib", ""}; int i; - char *p = (char *)buff; + char *p = reinterpret_cast(buff); trace(3, "outprcopts:\n"); @@ -1660,7 +1660,7 @@ int outprcopts(unsigned char *buff, const prcopt_t *opt) i + 1, opt->anttype[i], opt->antdel[i][0], opt->antdel[i][1], opt->antdel[i][2]); } - return p - (char *)buff; + return p - reinterpret_cast(buff); } @@ -1674,7 +1674,7 @@ int outsolheads(unsigned char *buff, const solopt_t *opt) { const char *s1[] = {"WGS84", "Tokyo"}, *s2[] = {"ellipsoidal", "geodetic"}; const char *s3[] = {"GPST", "UTC ", "JST "}, *sep = opt2sep(opt); - char *p = (char *)buff; + char *p = reinterpret_cast(buff); int timeu = opt->timeu < 0 ? 0 : (opt->timeu > 20 ? 20 : opt->timeu); trace(3, "outsolheads:\n"); @@ -1725,7 +1725,7 @@ int outsolheads(unsigned char *buff, const solopt_t *opt) "Q", sep, "ns", sep, "sde(m)", sep, "sdn(m)", sep, "sdu(m)", sep, "sden(m)", sep, "sdnu(m)", sep, "sdue(m)", sep, "age(s)", sep, "ratio"); } - return p - (char *)buff; + return p - reinterpret_cast(buff); } diff --git a/src/algorithms/libs/rtklib/rtklib_stream.cc b/src/algorithms/libs/rtklib/rtklib_stream.cc index 04ae96e01..9b2a0d3e2 100644 --- a/src/algorithms/libs/rtklib/rtklib_stream.cc +++ b/src/algorithms/libs/rtklib/rtklib_stream.cc @@ -50,21 +50,21 @@ * *----------------------------------------------------------------------------*/ -#include +#include +#include +#include +#include +#include +#include #include #include -#include -#include -#include +#include +#include +#include #include #include -#include #include -#include -#include -#include -#include -#include +#include /* global options ------------------------------------------------------------*/ @@ -90,13 +90,15 @@ serial_t *openserial(const char *path, int mode, char *msg) const speed_t bs[] = { B300, B600, B1200, B2400, B4800, B9600, B19200, B38400, B57600, B115200, B230400}; - struct termios ios; + struct termios ios + { + }; int rw = 0; tracet(3, "openserial: path=%s mode=%d\n", path, mode); - if (!(serial = (serial_t *)malloc(sizeof(serial_t)))) return NULL; + if (!(serial = static_cast(malloc(sizeof(serial_t))))) return nullptr; - if ((p = strchr((char *)path, ':'))) + if ((p = strchr(const_cast(path), ':'))) { strncpy(port, path, p - path); port[p - path] = '\0'; @@ -112,9 +114,9 @@ serial_t *openserial(const char *path, int mode, char *msg) sprintf(msg, "bitrate error (%d)", brate); tracet(1, "openserial: %s path=%s\n", msg, path); free(serial); - return NULL; + return nullptr; } - parity = (char)toupper((int)parity); + parity = static_cast(toupper(static_cast(parity))); // sprintf(dev, "/dev/%s", port); This line triggers a warning. Replaced by: std::string s_aux = "/dev/" + std::string(port); @@ -135,7 +137,7 @@ serial_t *openserial(const char *path, int mode, char *msg) sprintf(msg, "device open error (%d)", errno); tracet(1, "openserial: %s dev=%s\n", msg, dev); free(serial); - return NULL; + return nullptr; } tcgetattr(serial->dev, &ios); ios.c_iflag = 0; @@ -277,7 +279,7 @@ int openfile_(file_t *file, gtime_t time, char *msg) } else if (file->mode & STR_MODE_W) { /* remove time-tag */ - if ((fp = fopen(tagpath, "rb"))) + if ((fp = fopen(tagpath, "rbe"))) { fclose(fp); if (remove(tagpath) != 0) trace(1, "Error removing file"); @@ -295,7 +297,7 @@ void closefile_(file_t *file) if (file->fp_tag) fclose(file->fp_tag); if (file->fp_tmp) fclose(file->fp_tmp); if (file->fp_tag_tmp) fclose(file->fp_tag_tmp); - file->fp = file->fp_tag = file->fp_tmp = file->fp_tag_tmp = NULL; + file->fp = file->fp_tag = file->fp_tmp = file->fp_tag_tmp = nullptr; } @@ -310,10 +312,10 @@ file_t *openfile(const char *path, int mode, char *msg) tracet(3, "openfile: path=%s mode=%d\n", path, mode); - if (!(mode & (STR_MODE_R | STR_MODE_W))) return NULL; + if (!(mode & (STR_MODE_R | STR_MODE_W))) return nullptr; /* file options */ - for (p = (char *)path; (p = strstr(p, "::")); p += 2) + for (p = const_cast(path); (p = strstr(p, "::")); p += 2) { /* file options */ if (*(p + 2) == 'T') timetag = 1; @@ -327,9 +329,9 @@ file_t *openfile(const char *path, int mode, char *msg) if (start <= 0.0) start = 0.0; if (swapintv <= 0.0) swapintv = 0.0; - if (!(file = (file_t *)malloc(sizeof(file_t)))) return NULL; + if (!(file = static_cast(malloc(sizeof(file_t))))) return nullptr; - file->fp = file->fp_tag = file->fp_tmp = file->fp_tag_tmp = NULL; + file->fp = file->fp_tag = file->fp_tmp = file->fp_tag_tmp = nullptr; if (strlen(path) < MAXSTRPATH) strcpy(file->path, path); if ((p = strstr(file->path, "::"))) *p = '\0'; file->openpath[0] = '\0'; @@ -350,7 +352,7 @@ file_t *openfile(const char *path, int mode, char *msg) if (!openfile_(file, time, msg)) { free(file); - return NULL; + return nullptr; } return file; } @@ -399,7 +401,7 @@ void swapclose(file_t *file) tracet(3, "swapclose: fp_tmp=%d\n", file->fp_tmp); if (file->fp_tmp) fclose(file->fp_tmp); if (file->fp_tag_tmp) fclose(file->fp_tag_tmp); - file->fp_tmp = file->fp_tag_tmp = NULL; + file->fp_tmp = file->fp_tag_tmp = nullptr; } @@ -427,7 +429,7 @@ int readfile(file_t *file, unsigned char *buff, int nmax, char *msg) /* input from stdin */ FD_ZERO(&rs); FD_SET(0, &rs); - if (!select(1, &rs, NULL, NULL, &tv)) return 0; + if (!select(1, &rs, nullptr, nullptr, &tv)) return 0; if ((nr = read(0, buff, nmax)) < 0) return 0; return nr; } @@ -435,11 +437,11 @@ int readfile(file_t *file, unsigned char *buff, int nmax, char *msg) { if (file->repmode) { /* slave */ - t = (unsigned int)(tick_master + file->offset); + t = (tick_master + file->offset); } else { /* master */ - t = (unsigned int)((tickget() - file->tick) * file->speed + file->start * 1000.0); + t = static_cast((tickget() - file->tick) * file->speed + file->start * 1000.0); } for (;;) { /* seek file position */ @@ -452,23 +454,23 @@ int readfile(file_t *file, unsigned char *buff, int nmax, char *msg) } if (file->repmode || file->speed > 0.0) { - if ((int)(tick - t) < 1) continue; + if (static_cast(tick - t) < 1) continue; } if (!file->repmode) tick_master = tick; - sprintf(msg, "T%+.1fs", (int)tick < 0 ? 0.0 : (int)tick / 1000.0); + sprintf(msg, "T%+.1fs", static_cast(tick) < 0 ? 0.0 : static_cast(tick) / 1000.0); - if ((int)(fpos - file->fpos) >= nmax) + if (static_cast(fpos - file->fpos) >= nmax) { if (fseek(file->fp, fpos, SEEK_SET) != 0) trace(1, "Error fseek"); file->fpos = fpos; return 0; } - nmax = (int)(fpos - file->fpos); + nmax = static_cast(fpos - file->fpos); if (file->repmode || file->speed > 0.0) { - if (fseek(file->fp_tag, -(long)(sizeof(tick) + sizeof(fpos)), SEEK_CUR) != 0) trace(1, "Error fseek"); + if (fseek(file->fp_tag, -static_cast(sizeof(tick) + sizeof(fpos)), SEEK_CUR) != 0) trace(1, "Error fseek"); } break; } @@ -480,7 +482,7 @@ int readfile(file_t *file, unsigned char *buff, int nmax, char *msg) if (nr <= 0) sprintf(msg, "end"); } tracet(5, "readfile: fp=%d nr=%d fpos=%d\n", file->fp, nr, file->fpos); - return (int)nr; + return nr; } @@ -546,7 +548,7 @@ int writefile(file_t *file, unsigned char *buff, int n, char *msg) } tracet(5, "writefile: fp=%d ns=%d tick=%5d fpos=%d\n", file->fp, ns, tick, fpos); - return (int)ns; + return static_cast(ns); } @@ -556,7 +558,7 @@ void syncfile(file_t *file1, file_t *file2) if (!file1->fp_tag || !file2->fp_tag) return; file1->repmode = 0; file2->repmode = 1; - file2->offset = (int)(file1->tick_f - file2->tick_f); + file2->offset = static_cast(file1->tick_f - file2->tick_f); } @@ -622,21 +624,21 @@ int setsock(socket_t sock, char *msg) tracet(3, "setsock: sock=%d\n", sock); - if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (const char *)&tv, sizeof(tv)) == -1 || - setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (const char *)&tv, sizeof(tv)) == -1) + if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, reinterpret_cast(&tv), sizeof(tv)) == -1 || + setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, reinterpret_cast(&tv), sizeof(tv)) == -1) { sprintf(msg, "sockopt error: notimeo"); tracet(1, "setsock: setsockopt error 1 sock=%d err=%d\n", sock, errsock()); closesocket(sock); return 0; } - if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (const char *)&bs, sizeof(bs)) == -1 || - setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (const char *)&bs, sizeof(bs)) == -1) + if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF, reinterpret_cast(&bs), sizeof(bs)) == -1 || + setsockopt(sock, SOL_SOCKET, SO_SNDBUF, reinterpret_cast(&bs), sizeof(bs)) == -1) { tracet(1, "setsock: setsockopt error 2 sock=%d err=%d bs=%d\n", sock, errsock(), bs); sprintf(msg, "sockopt error: bufsiz"); } - if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (const char *)&mode, sizeof(mode)) == -1) + if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, reinterpret_cast(&mode), sizeof(mode)) == -1) { tracet(1, "setsock: setsockopt error 3 sock=%d err=%d\n", sock, errsock()); sprintf(msg, "sockopt error: nodelay"); @@ -652,7 +654,7 @@ socket_t accept_nb(socket_t sock, struct sockaddr *addr, socklen_t *len) fd_set rs; FD_ZERO(&rs); FD_SET(sock, &rs); - if (!select(sock + 1, &rs, NULL, NULL, &tv)) return 0; + if (!select(sock + 1, &rs, nullptr, nullptr, &tv)) return 0; return accept(sock, addr, len); } @@ -673,7 +675,7 @@ int connect_nb(socket_t sock, struct sockaddr *addr, socklen_t len) FD_ZERO(&rs); FD_SET(sock, &rs); ws = rs; - if (select(sock + 1, &rs, &ws, NULL, &tv) == 0) return 0; + if (select(sock + 1, &rs, &ws, nullptr, &tv) == 0) return 0; } return 1; } @@ -686,8 +688,8 @@ int recv_nb(socket_t sock, unsigned char *buff, int n) fd_set rs; FD_ZERO(&rs); FD_SET(sock, &rs); - if (!select(sock + 1, &rs, NULL, NULL, &tv)) return 0; - return recv(sock, (char *)buff, n, 0); + if (!select(sock + 1, &rs, nullptr, nullptr, &tv)) return 0; + return recv(sock, reinterpret_cast(buff), n, 0); } @@ -698,8 +700,8 @@ int send_nb(socket_t sock, unsigned char *buff, int n) fd_set ws; FD_ZERO(&ws); FD_SET(sock, &ws); - if (!select(sock + 1, NULL, &ws, NULL, &tv)) return 0; - return send(sock, (char *)buff, n, 0); + if (!select(sock + 1, nullptr, &ws, nullptr, &tv)) return 0; + return send(sock, reinterpret_cast(buff), n, 0); } @@ -714,7 +716,7 @@ int gentcp(tcp_t *tcp, int type, char *msg) tracet(3, "gentcp: type=%d\n", type); /* generate socket */ - if ((tcp->sock = socket(AF_INET, SOCK_STREAM, 0)) == (socket_t)-1) + if ((tcp->sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { sprintf(msg, "socket error (%d)", errsock()); tracet(1, "gentcp: socket error err=%d\n", errsock()); @@ -738,7 +740,7 @@ int gentcp(tcp_t *tcp, int type, char *msg) setsockopt(tcp->sock, SOL_SOCKET, SO_REUSEADDR, (const char *)&opt, sizeof(opt)); #endif - if (bind(tcp->sock, (struct sockaddr *)&tcp->addr, sizeof(tcp->addr)) == -1) + if (bind(tcp->sock, reinterpret_cast(&tcp->addr), sizeof(tcp->addr)) == -1) { sprintf(msg, "bind error (%d) : %d", errsock(), tcp->port); tracet(1, "gentcp: bind error port=%d err=%d\n", tcp->port, errsock()); @@ -788,20 +790,20 @@ tcpsvr_t *opentcpsvr(const char *path, char *msg) tcpsvr0 = {{0, {0}, 0, {0, 0, 0, {0}}, 0, 0, 0, 0}, {{0, {0}, 0, {0, 0, 0, {0}}, 0, 0, 0, 0}}}; tracet(3, "opentcpsvr: path=%s\n", path); - if (!(tcpsvr = (tcpsvr_t *)malloc(sizeof(tcpsvr_t)))) return NULL; + if (!(tcpsvr = static_cast(malloc(sizeof(tcpsvr_t))))) return nullptr; *tcpsvr = tcpsvr0; - decodetcppath(path, tcpsvr->svr.saddr, port, NULL, NULL, NULL, NULL); + decodetcppath(path, tcpsvr->svr.saddr, port, nullptr, nullptr, nullptr, nullptr); if (sscanf(port, "%d", &tcpsvr->svr.port) < 1) { sprintf(msg, "port error: %s", port); tracet(1, "opentcpsvr: port error port=%s\n", port); free(tcpsvr); - return NULL; + return nullptr; } if (!gentcp(&tcpsvr->svr, 0, msg)) { free(tcpsvr); - return NULL; + return nullptr; } tcpsvr->svr.tcon = 0; return tcpsvr; @@ -866,7 +868,9 @@ void updatetcpsvr(tcpsvr_t *tcpsvr, char *msg) /* accept client connection --------------------------------------------------*/ int accsock(tcpsvr_t *tcpsvr, char *msg) { - struct sockaddr_in addr; + struct sockaddr_in addr + { + }; socket_t sock; socklen_t len = sizeof(addr); int i, err; @@ -877,7 +881,7 @@ int accsock(tcpsvr_t *tcpsvr, char *msg) if (tcpsvr->cli[i].state == 0) break; if (i >= MAXCLI) return 0; /* too many client */ - if ((sock = accept_nb(tcpsvr->svr.sock, (struct sockaddr *)&addr, &len)) == (socket_t)-1) + if ((sock = accept_nb(tcpsvr->svr.sock, reinterpret_cast(&addr), &len)) == -1) { err = errsock(); sprintf(msg, "accept error (%d)", err); @@ -981,12 +985,12 @@ int consock(tcpcli_t *tcpcli, char *msg) /* wait re-connect */ if (tcpcli->svr.tcon < 0 || (tcpcli->svr.tcon > 0 && - (int)(tickget() - tcpcli->svr.tdis) < tcpcli->svr.tcon)) + static_cast(tickget() - tcpcli->svr.tdis) < tcpcli->svr.tcon)) { return 0; } /* non-block connect */ - if ((stat = connect_nb(tcpcli->svr.sock, (struct sockaddr *)&tcpcli->svr.addr, + if ((stat = connect_nb(tcpcli->svr.sock, reinterpret_cast(&tcpcli->svr.addr), sizeof(tcpcli->svr.addr))) == -1) { err = errsock(); @@ -1018,15 +1022,15 @@ tcpcli_t *opentcpcli(const char *path, char *msg) tracet(3, "opentcpcli: path=%s\n", path); - if (!(tcpcli = (tcpcli_t *)malloc(sizeof(tcpcli_t)))) return NULL; + if (!(tcpcli = static_cast(malloc(sizeof(tcpcli_t))))) return nullptr; *tcpcli = tcpcli0; - decodetcppath(path, tcpcli->svr.saddr, port, NULL, NULL, NULL, NULL); + decodetcppath(path, tcpcli->svr.saddr, port, nullptr, nullptr, nullptr, nullptr); if (sscanf(port, "%d", &tcpcli->svr.port) < 1) { sprintf(msg, "port error: %s", port); tracet(1, "opentcp: port error port=%s\n", port); free(tcpcli); - return NULL; + return nullptr; } tcpcli->svr.tcon = 0; tcpcli->toinact = toinact; @@ -1062,7 +1066,7 @@ int waittcpcli(tcpcli_t *tcpcli, char *msg) if (tcpcli->svr.state == 2) { /* connect */ if (tcpcli->toinact > 0 && - (int)(tickget() - tcpcli->svr.tact) > tcpcli->toinact) + static_cast(tickget() - tcpcli->svr.tact) > tcpcli->toinact) { sprintf(msg, "timeout"); tracet(2, "waittcpcli: inactive timeout sock=%d\n", tcpcli->svr.sock); @@ -1164,7 +1168,7 @@ int reqntrip_s(ntrip_t *ntrip, char *msg) p += sprintf(p, "STR: %s\r\n", ntrip->str); p += sprintf(p, "\r\n"); - if (writetcpcli(ntrip->tcp, (unsigned char *)buff, p - buff, msg) != p - buff) return 0; + if (writetcpcli(ntrip->tcp, reinterpret_cast(buff), p - buff, msg) != p - buff) return 0; tracet(2, "reqntrip_s: send request state=%d ns=%d\n", ntrip->state, p - buff); tracet(5, "reqntrip_s: n=%d buff=\n%s\n", p - buff, buff); @@ -1192,12 +1196,12 @@ int reqntrip_c(ntrip_t *ntrip, char *msg) { sprintf(user, "%s:%s", ntrip->user, ntrip->passwd); p += sprintf(p, "Authorization: Basic "); - p += encbase64(p, (unsigned char *)user, strlen(user)); + p += encbase64(p, reinterpret_cast(user), strlen(user)); p += sprintf(p, "\r\n"); } p += sprintf(p, "\r\n"); - if (writetcpcli(ntrip->tcp, (unsigned char *)buff, p - buff, msg) != p - buff) return 0; + if (writetcpcli(ntrip->tcp, reinterpret_cast(buff), p - buff, msg) != p - buff) return 0; tracet(2, "reqntrip_c: send request state=%d ns=%d\n", ntrip->state, p - buff); tracet(5, "reqntrip_c: n=%d buff=\n%s\n", p - buff, buff); @@ -1216,9 +1220,9 @@ int rspntrip_s(ntrip_t *ntrip, char *msg) ntrip->buff[ntrip->nb] = '0'; tracet(5, "rspntrip_s: n=%d buff=\n%s\n", ntrip->nb, ntrip->buff); - if ((p = strstr((char *)ntrip->buff, NTRIP_RSP_OK_SVR))) + if ((p = strstr(reinterpret_cast(ntrip->buff), NTRIP_RSP_OK_SVR))) { /* ok */ - q = (char *)ntrip->buff; + q = reinterpret_cast(ntrip->buff); p += strlen(NTRIP_RSP_OK_SVR); ntrip->nb -= p - q; for (i = 0; i < ntrip->nb; i++) *q++ = *p++; @@ -1227,11 +1231,11 @@ int rspntrip_s(ntrip_t *ntrip, char *msg) tracet(2, "rspntrip_s: response ok nb=%d\n", ntrip->nb); return 1; } - else if ((p = strstr((char *)ntrip->buff, NTRIP_RSP_ERROR))) + if ((p = strstr(reinterpret_cast(ntrip->buff), NTRIP_RSP_ERROR))) { /* error */ nb = ntrip->nb < MAXSTATMSG ? ntrip->nb : MAXSTATMSG; // strncpy(msg, (char *)ntrip->buff, nb); This line triggers a warning. Replaced by; - std::string s_aux((char *)ntrip->buff); + std::string s_aux(reinterpret_cast(ntrip->buff)); s_aux.resize(nb, '\0'); for (int i = 0; i < nb; i++) msg[i] = s_aux[i]; @@ -1266,9 +1270,9 @@ int rspntrip_c(ntrip_t *ntrip, char *msg) ntrip->buff[ntrip->nb] = '0'; tracet(5, "rspntrip_c: n=%d buff=\n%s\n", ntrip->nb, ntrip->buff); - if ((p = strstr((char *)ntrip->buff, NTRIP_RSP_OK_CLI))) + if ((p = strstr(reinterpret_cast(ntrip->buff), NTRIP_RSP_OK_CLI))) { /* ok */ - q = (char *)ntrip->buff; + q = reinterpret_cast(ntrip->buff); p += strlen(NTRIP_RSP_OK_CLI); ntrip->nb -= p - q; for (i = 0; i < ntrip->nb; i++) *q++ = *p++; @@ -1277,7 +1281,7 @@ int rspntrip_c(ntrip_t *ntrip, char *msg) tracet(2, "rspntrip_c: response ok nb=%d\n", ntrip->nb); return 1; } - if ((p = strstr((char *)ntrip->buff, NTRIP_RSP_SRCTBL))) + if ((p = strstr(reinterpret_cast(ntrip->buff), NTRIP_RSP_SRCTBL))) { /* source table */ if (!*ntrip->mntpnt) { /* source table request */ @@ -1293,7 +1297,7 @@ int rspntrip_c(ntrip_t *ntrip, char *msg) ntrip->state = 0; discontcp(&ntrip->tcp->svr, ntrip->tcp->tirecon); } - else if ((p = strstr((char *)ntrip->buff, NTRIP_RSP_HTTP))) + else if ((p = strstr(reinterpret_cast(ntrip->buff), NTRIP_RSP_HTTP))) { /* http response */ if ((q = strchr(p, '\r'))) *q = '\0'; @@ -1342,8 +1346,8 @@ int waitntrip(ntrip_t *ntrip, char *msg) } if (ntrip->state == 1) { /* read response */ - p = (char *)ntrip->buff + ntrip->nb; - if ((n = readtcpcli(ntrip->tcp, (unsigned char *)p, NTRIP_MAXRSP - ntrip->nb - 1, msg)) == 0) + p = reinterpret_cast(ntrip->buff) + ntrip->nb; + if ((n = readtcpcli(ntrip->tcp, reinterpret_cast(p), NTRIP_MAXRSP - ntrip->nb - 1, msg)) == 0) { tracet(5, "waitntrip: readtcp n=%d\n", n); return 0; @@ -1367,7 +1371,7 @@ ntrip_t *openntrip(const char *path, int type, char *msg) tracet(3, "openntrip: path=%s type=%d\n", path, type); - if (!(ntrip = (ntrip_t *)malloc(sizeof(ntrip_t)))) return NULL; + if (!(ntrip = static_cast(malloc(sizeof(ntrip_t))))) return nullptr; ntrip->state = 0; ntrip->type = type; /* 0:server, 1:client */ @@ -1402,7 +1406,7 @@ ntrip_t *openntrip(const char *path, int type, char *msg) { tracet(1, "openntrip: opentcp error\n"); free(ntrip); - return NULL; + return nullptr; } return ntrip; } @@ -1534,7 +1538,7 @@ gtime_t nextdltime(const int *topts, int stat) /* ftp thread ----------------------------------------------------------------*/ void *ftpthread(void *arg) { - ftp_t *ftp = (ftp_t *)arg; + auto *ftp = static_cast(arg); FILE *fp; gtime_t time; char remote[1024], local[1024], tmpfile[1024], errfile[1024], *p; @@ -1548,7 +1552,7 @@ void *ftpthread(void *arg) tracet(1, "no local directory\n"); ftp->error = 11; ftp->state = 3; - return 0; + return nullptr; } /* replace keyword in file path and local path */ time = timeadd(utc2gpst(timeget()), ftp->topts[0]); @@ -1578,13 +1582,13 @@ void *ftpthread(void *arg) { *p = '\0'; } - if ((fp = fopen(tmpfile, "rb"))) + if ((fp = fopen(tmpfile, "rbe"))) { fclose(fp); strcpy(ftp->local, tmpfile); tracet(3, "ftpthread: file exists %s\n", ftp->local); ftp->state = 2; - return 0; + return nullptr; } /* proxy settings for wget (ref [2]) */ if (*proxyaddr) @@ -1633,7 +1637,7 @@ void *ftpthread(void *arg) tracet(1, "execcmd error: cmd=%s ret=%d\n", cmd, ret); ftp->error = ret; ftp->state = 3; - return 0; + return nullptr; } if (remove(errfile) != 0) trace(1, "Error removing file"); @@ -1652,14 +1656,14 @@ void *ftpthread(void *arg) tracet(1, "file uncompact error: %s\n", local); ftp->error = 12; ftp->state = 3; - return 0; + return nullptr; } } if (strlen(local) < 1024) strcpy(ftp->local, local); ftp->state = 2; /* ftp completed */ tracet(3, "ftpthread: complete cmd=%s\n", cmd); - return 0; + return nullptr; } @@ -1672,12 +1676,12 @@ ftp_t *openftp(const char *path, int type, char *msg) msg[0] = '\0'; - if (!(ftp = (ftp_t *)malloc(sizeof(ftp_t)))) return NULL; + if (!(ftp = static_cast(malloc(sizeof(ftp_t))))) return nullptr; ftp->state = 0; ftp->proto = type; ftp->error = 0; - ftp->thread = 0; + ftp->thread = 0; // NOLINT ftp->local[0] = '\0'; /* decode ftp path */ @@ -1718,7 +1722,7 @@ int readftp(ftp_t *ftp, unsigned char *buff, int n, char *msg) ftp->state = 1; sprintf(msg, "%s://%s", ftp->proto ? "http" : "ftp", ftp->addr); - if (pthread_create(&ftp->thread, NULL, ftpthread, ftp)) + if (pthread_create(&ftp->thread, nullptr, ftpthread, ftp)) { tracet(1, "readftp: ftp thread create error\n"); ftp->state = 3; @@ -1739,9 +1743,9 @@ int readftp(ftp_t *ftp, unsigned char *buff, int n, char *msg) } /* return local file path if ftp completed */ p = buff; - q = (unsigned char *)ftp->local; - while (*q && (int)(p - buff) < n) *p++ = *q++; - p += sprintf((char *)p, "\r\n"); + q = reinterpret_cast(ftp->local); + while (*q && static_cast(p - buff) < n) *p++ = *q++; + p += sprintf(reinterpret_cast(p), "\r\n"); /* set next download time */ ftp->tnext = nextdltime(ftp->topts, 1); @@ -1749,7 +1753,7 @@ int readftp(ftp_t *ftp, unsigned char *buff, int n, char *msg) strcpy(msg, ""); - return (int)(p - buff); + return static_cast(p - buff); } @@ -1786,7 +1790,7 @@ void strinit(stream_t *stream) stream->inb = stream->inr = stream->outb = stream->outr = 0; stream->tick = stream->tact = stream->inbt = stream->outbt = 0; initlock(&stream->lock); - stream->port = NULL; + stream->port = nullptr; stream->path[0] = '\0'; stream->msg[0] = '\0'; } @@ -1838,7 +1842,7 @@ int stropen(stream_t *stream, int type, int mode, const char *path) stream->tick = tickget(); stream->inbt = stream->outbt = 0; stream->msg[0] = '\0'; - stream->port = NULL; + stream->port = nullptr; switch (type) { case STR_SERIAL: @@ -1870,7 +1874,7 @@ int stropen(stream_t *stream, int type, int mode, const char *path) return 1; } stream->state = !stream->port ? -1 : 1; - return stream->port != NULL; + return stream->port != nullptr; } @@ -1888,28 +1892,28 @@ void strclose(stream_t *stream) switch (stream->type) { case STR_SERIAL: - closeserial((serial_t *)stream->port); + closeserial(static_cast(stream->port)); break; case STR_FILE: - closefile((file_t *)stream->port); + closefile(static_cast(stream->port)); break; case STR_TCPSVR: - closetcpsvr((tcpsvr_t *)stream->port); + closetcpsvr(static_cast(stream->port)); break; case STR_TCPCLI: - closetcpcli((tcpcli_t *)stream->port); + closetcpcli(static_cast(stream->port)); break; case STR_NTRIPSVR: - closentrip((ntrip_t *)stream->port); + closentrip(static_cast(stream->port)); break; case STR_NTRIPCLI: - closentrip((ntrip_t *)stream->port); + closentrip(static_cast(stream->port)); break; case STR_FTP: - closeftp((ftp_t *)stream->port); + closeftp(static_cast(stream->port)); break; case STR_HTTP: - closeftp((ftp_t *)stream->port); + closeftp(static_cast(stream->port)); break; } } @@ -1923,7 +1927,7 @@ void strclose(stream_t *stream) stream->inr = stream->outr = 0; stream->path[0] = '\0'; stream->msg[0] = '\0'; - stream->port = NULL; + stream->port = nullptr; } @@ -1938,8 +1942,8 @@ void strsync(stream_t *stream1, stream_t *stream2) { file_t *file1, *file2; if (stream1->type != STR_FILE || stream2->type != STR_FILE) return; - file1 = (file_t *)stream1->port; - file2 = (file_t *)stream2->port; + file1 = static_cast(stream1->port); + file2 = static_cast(stream2->port); if (file1 && file2) syncfile(file1, file2); } @@ -1977,25 +1981,25 @@ int strread(stream_t *stream, unsigned char *buff, int n) switch (stream->type) { case STR_SERIAL: - nr = readserial((serial_t *)stream->port, buff, n, msg); + nr = readserial(static_cast(stream->port), buff, n, msg); break; case STR_FILE: - nr = readfile((file_t *)stream->port, buff, n, msg); + nr = readfile(static_cast(stream->port), buff, n, msg); break; case STR_TCPSVR: - nr = readtcpsvr((tcpsvr_t *)stream->port, buff, n, msg); + nr = readtcpsvr(static_cast(stream->port), buff, n, msg); break; case STR_TCPCLI: - nr = readtcpcli((tcpcli_t *)stream->port, buff, n, msg); + nr = readtcpcli(static_cast(stream->port), buff, n, msg); break; case STR_NTRIPCLI: - nr = readntrip((ntrip_t *)stream->port, buff, n, msg); + nr = readntrip(static_cast(stream->port), buff, n, msg); break; case STR_FTP: - nr = readftp((ftp_t *)stream->port, buff, n, msg); + nr = readftp(static_cast(stream->port), buff, n, msg); break; case STR_HTTP: - nr = readftp((ftp_t *)stream->port, buff, n, msg); + nr = readftp(static_cast(stream->port), buff, n, msg); break; default: strunlock(stream); @@ -2005,7 +2009,7 @@ int strread(stream_t *stream, unsigned char *buff, int n) tick = tickget(); if (nr > 0) stream->tact = tick; - if ((int)(tick - stream->tick) >= tirate) + if (static_cast(tick - stream->tick) >= tirate) { stream->inr = (stream->inb - stream->inbt) * 8000 / (tick - stream->tick); stream->tick = tick; @@ -2039,20 +2043,20 @@ int strwrite(stream_t *stream, unsigned char *buff, int n) switch (stream->type) { case STR_SERIAL: - ns = writeserial((serial_t *)stream->port, buff, n, msg); + ns = writeserial(static_cast(stream->port), buff, n, msg); break; case STR_FILE: - ns = writefile((file_t *)stream->port, buff, n, msg); + ns = writefile(static_cast(stream->port), buff, n, msg); break; case STR_TCPSVR: - ns = writetcpsvr((tcpsvr_t *)stream->port, buff, n, msg); + ns = writetcpsvr(static_cast(stream->port), buff, n, msg); break; case STR_TCPCLI: - ns = writetcpcli((tcpcli_t *)stream->port, buff, n, msg); + ns = writetcpcli(static_cast(stream->port), buff, n, msg); break; case STR_NTRIPCLI: case STR_NTRIPSVR: - ns = writentrip((ntrip_t *)stream->port, buff, n, msg); + ns = writentrip(static_cast(stream->port), buff, n, msg); break; case STR_FTP: case STR_HTTP: @@ -2064,7 +2068,7 @@ int strwrite(stream_t *stream, unsigned char *buff, int n) tick = tickget(); if (ns > 0) stream->tact = tick; - if ((int)(tick - stream->tick) > tirate) + if (static_cast(tick - stream->tick) > tirate) { stream->outr = (stream->outb - stream->outbt) * 8000 / (tick - stream->tick); stream->tick = tick; @@ -2104,32 +2108,32 @@ int strstat(stream_t *stream, char *msg) switch (stream->type) { case STR_SERIAL: - state = stateserial((serial_t *)stream->port); + state = stateserial(static_cast(stream->port)); break; case STR_FILE: - state = statefile((file_t *)stream->port); + state = statefile(static_cast(stream->port)); break; case STR_TCPSVR: - state = statetcpsvr((tcpsvr_t *)stream->port); + state = statetcpsvr(static_cast(stream->port)); break; case STR_TCPCLI: - state = statetcpcli((tcpcli_t *)stream->port); + state = statetcpcli(static_cast(stream->port)); break; case STR_NTRIPSVR: case STR_NTRIPCLI: - state = statentrip((ntrip_t *)stream->port); + state = statentrip(static_cast(stream->port)); break; case STR_FTP: - state = stateftp((ftp_t *)stream->port); + state = stateftp(static_cast(stream->port)); break; case STR_HTTP: - state = stateftp((ftp_t *)stream->port); + state = stateftp(static_cast(stream->port)); break; default: strunlock(stream); return 0; } - if (state == 2 && (int)(tickget() - stream->tact) <= TINTACT) state = 3; + if (state == 2 && static_cast(tickget() - stream->tact) <= TINTACT) state = 3; strunlock(stream); return state; } @@ -2198,11 +2202,11 @@ void strsettimeout(stream_t *stream, int toinact, int tirecon) if (stream->type == STR_TCPCLI) { - tcpcli = (tcpcli_t *)stream->port; + tcpcli = static_cast(stream->port); } else if (stream->type == STR_NTRIPCLI || stream->type == STR_NTRIPSVR) { - tcpcli = ((ntrip_t *)stream->port)->tcp; + tcpcli = (static_cast(stream->port))->tcp; } else return; @@ -2245,7 +2249,7 @@ gtime_t strgettime(stream_t *stream) { file_t *file; if (stream->type == STR_FILE && (stream->mode & STR_MODE_R) && - (file = (file_t *)stream->port)) + (file = static_cast(stream->port))) { return timeadd(file->time, file->start); /* replay start time */ } @@ -2286,15 +2290,15 @@ int gen_hex(const char *msg, unsigned char *buff) trace(4, "gen_hex: msg=%s\n", msg); strncpy(mbuff, msg, 1023); - for (p = strtok(mbuff, " "); p && narg < 256; p = strtok(NULL, " ")) + for (p = strtok(mbuff, " "); p && narg < 256; p = strtok(nullptr, " ")) { args[narg++] = p; } for (i = 0; i < narg; i++) { - if (sscanf(args[i], "%x", &byte)) *q++ = (unsigned char)byte; + if (sscanf(args[i], "%x", &byte)) *q++ = static_cast(byte); } - return (int)(q - buff); + return static_cast(q - buff); } @@ -2317,7 +2321,7 @@ void strsendcmd(stream_t *str, const char *cmd) { for (q = p;; q++) if (*q == '\r' || *q == '\n' || *q == '\0') break; - n = (int)(q - p); + n = static_cast(q - p); strncpy(msg, p, n); msg[n] = '\0'; @@ -2357,12 +2361,12 @@ void strsendcmd(stream_t *str, const char *cmd) } else { - strwrite(str, (unsigned char *)msg, n); - strwrite(str, (unsigned char *)cmdend, 2); + strwrite(str, reinterpret_cast(msg), n); + strwrite(str, reinterpret_cast(cmdend), 2); } if (*q == '\0') break; - else - p = q + 1; + + p = q + 1; } } diff --git a/src/algorithms/libs/short_x2_to_cshort.cc b/src/algorithms/libs/short_x2_to_cshort.cc index 90c842530..90ce99a7e 100644 --- a/src/algorithms/libs/short_x2_to_cshort.cc +++ b/src/algorithms/libs/short_x2_to_cshort.cc @@ -41,8 +41,8 @@ short_x2_to_cshort_sptr make_short_x2_to_cshort() short_x2_to_cshort::short_x2_to_cshort() : sync_block("short_x2_to_cshort", - gr::io_signature::make(2, 2, sizeof(short)), - gr::io_signature::make(1, 1, sizeof(lv_16sc_t))) // lv_8sc_t is a Volk's typedef for std::complex + gr::io_signature::make(2, 2, sizeof(int16_t)), + gr::io_signature::make(1, 1, sizeof(lv_16sc_t))) { const int alignment_multiple = volk_get_alignment() / sizeof(lv_16sc_t); set_alignment(std::max(1, alignment_multiple)); @@ -53,12 +53,12 @@ int short_x2_to_cshort::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const short *in0 = reinterpret_cast(input_items[0]); - const short *in1 = reinterpret_cast(input_items[1]); - lv_16sc_t *out = reinterpret_cast(output_items[0]); + const auto *in0 = reinterpret_cast(input_items[0]); + const auto *in1 = reinterpret_cast(input_items[1]); + auto *out = reinterpret_cast(output_items[0]); // This could be put into a volk kernel - short real_part; - short imag_part; + int16_t real_part; + int16_t imag_part; for (int number = 0; number < noutput_items; number++) { // lv_cmake(r, i) defined at volk/volk_complex.h diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/CMakeLists.txt b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/CMakeLists.txt index df9463121..59a8d1ff7 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/CMakeLists.txt +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/CMakeLists.txt @@ -135,7 +135,7 @@ message(STATUS "Build type set to ${CMAKE_BUILD_TYPE}.") set(VERSION_INFO_MAJOR_VERSION 0) set(VERSION_INFO_MINOR_VERSION 0) -set(VERSION_INFO_MAINT_VERSION 9.git) +set(VERSION_INFO_MAINT_VERSION 10) include(VolkVersion) #setup version info diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/apps/volk_gnsssdr_profile.cc b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/apps/volk_gnsssdr_profile.cc index 8c9997ef9..c211ed710 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/apps/volk_gnsssdr_profile.cc +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/apps/volk_gnsssdr_profile.cc @@ -16,22 +16,22 @@ * along with GNSS-SDR. If not, see . */ +#include "volk_gnsssdr_profile.h" #include "kernel_tests.h" // for init_test_list #include "qa_utils.h" // for volk_gnsssdr_test_results_t #include "volk_gnsssdr/volk_gnsssdr_complex.h" // for lv_32fc_t +#include "volk_gnsssdr/volk_gnsssdr_prefs.h" // for volk_gnsssdr_get_config_path #include "volk_gnsssdr_option_helpers.h" // for option_list, option_t -#include "volk_gnsssdr_profile.h" -#include "volk_gnsssdr/volk_gnsssdr_prefs.h" // for volk_gnsssdr_get_config_path -#include // for create_directories, exists -#include // for path, operator<< -#include // for filesystem -#include // for stat -#include // for size_t -#include // for operator<<, basic_ostream -#include // IWYU pragma: keep -#include // for map, map<>::iterator -#include // for pair -#include // for vector, vector<>::const_.. +#include // for create_directories, exists +#include // for path, operator<< +#include // for filesystem +#include // for size_t +#include // IWYU pragma: keep +#include // for operator<<, basic_ostream +#include // for map, map<>::iterator +#include // for stat +#include // for pair +#include // for vector, vector<>::const_.. namespace fs = boost::filesystem; diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Packaging/volk_gnsssdr-config-info-manpage b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Packaging/volk_gnsssdr-config-info-manpage index 48de3376a..6f273a82b 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Packaging/volk_gnsssdr-config-info-manpage +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Packaging/volk_gnsssdr-config-info-manpage @@ -1,14 +1,14 @@ -.\" Manpage for volk_gnsssdr-config-info +.\" Manpage for volk_gnsssdr\-config\-info .\" Contact carles.fernandez@cttc.es to correct errors or typos. -.TH volk_gnsssdr_profile 1 "06 Feb 2017" "0.0.9" "volk_gnsssdr-config-info man page" +.TH volk_gnsssdr\-config\-info 1 "12 Dec 2018" "0.0.10" "volk_gnsssdr\-config\-info man page" .SH NAME -\fBvolk_gnsssdr-config-info\fR \- Prints configuration information of libvolk_gnsssdr functions. +\fBvolk_gnsssdr\-config\-info\fR \- Prints configuration information of libvolk_gnsssdr functions. .SH SYNOPSIS -\fBvolk_gnsssdr-config-info\fR [OPTION] +\fBvolk_gnsssdr\-config\-info\fR [OPTION] .SH DESCRIPTION -This program prints configuration information for the Vector-Optimized Library of Kernels of GNSS-SDR (VOLK_GNSSSDR). +This program prints configuration information for the Vector\-Optimized Library of Kernels of GNSS\-SDR (VOLK_GNSSSDR). .SH OPTIONS -\fBvolk_gnsssdr-config-info\fR takes the following options: +\fBvolk_gnsssdr\-config\-info\fR takes the following options: .TP \fB-h\fR [ \fB--help\fR ] Print help message. .TP diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Packaging/volk_gnsssdr_profile-manpage b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Packaging/volk_gnsssdr_profile-manpage index 186bcb9c9..99a9ae316 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Packaging/volk_gnsssdr_profile-manpage +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Packaging/volk_gnsssdr_profile-manpage @@ -1,6 +1,6 @@ .\" Manpage for volk_gnsssdr_profile .\" Contact carles.fernandez@cttc.es to correct errors or typos. -.TH volk_gnsssdr_profile 1 "06 Feb 2017" "0.0.9" "volk_gnsssdr_profile man page" +.TH volk_gnsssdr_profile 1 "12 Dec 2018" "0.0.10" "volk_gnsssdr_profile man page" .SH NAME \fBvolk_gnsssdr_profile\fR \- Profiler application for libvolk_gnsssdr functions. .SH SYNOPSIS diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16i_resamplerxnpuppet_16i.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16i_resamplerxnpuppet_16i.h index 440ed4ace..1be4896b2 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16i_resamplerxnpuppet_16i.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16i_resamplerxnpuppet_16i.h @@ -36,9 +36,9 @@ #define INCLUDED_volk_gnsssdr_16i_resamplerxnpuppet_16i_H #include "volk_gnsssdr/volk_gnsssdr_16i_xn_resampler_16i_xn.h" -#include -#include #include +#include +#include #include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16i_xn_resampler_16i_xn.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16i_xn_resampler_16i_xn.h index 5324bf725..2491813bb 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16i_xn_resampler_16i_xn.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16i_xn_resampler_16i_xn.h @@ -63,12 +63,12 @@ #ifndef INCLUDED_volk_gnsssdr_16i_xn_resampler_16i_xn_H #define INCLUDED_volk_gnsssdr_16i_xn_resampler_16i_xn_H -#include -#include -#include -#include #include #include +#include +#include +#include +#include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h index b52e032f1..c16812e00 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h @@ -69,10 +69,10 @@ #define INCLUDED_volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn_H -#include -#include -#include #include +#include +#include +#include #include //#include @@ -742,9 +742,9 @@ static inline void volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn_u_sse3(lv_16sc #ifdef LV_HAVE_AVX2 -#include -#include #include +#include +#include static inline void volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn_a_avx2(lv_16sc_t* result, const lv_16sc_t* in_common, const lv_32fc_t phase_inc, lv_32fc_t* phase, const int16_t** in_a, int num_a_vectors, unsigned int num_points) { @@ -896,9 +896,9 @@ static inline void volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn_a_avx2(lv_16sc #endif /* LV_HAVE_AVX2 */ #ifdef LV_HAVE_AVX2 -#include -#include #include +#include +#include static inline void volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn_u_avx2(lv_16sc_t* result, const lv_16sc_t* in_common, const lv_32fc_t phase_inc, lv_32fc_t* phase, const int16_t** in_a, int num_a_vectors, unsigned int num_points) { diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_16i_rotator_dotprodxnpuppet_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_16i_rotator_dotprodxnpuppet_16ic.h index 6d6c88702..e28e01225 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_16i_rotator_dotprodxnpuppet_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_16i_rotator_dotprodxnpuppet_16ic.h @@ -36,8 +36,8 @@ #define INCLUDED_volk_gnsssdr_16ic_16i_rotator_dotprodxnpuppet_16ic_H #include "volk_gnsssdr/volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h" -#include #include +#include #include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resampler_fast_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resampler_fast_16ic.h index 29dfcd767..634f4f8c3 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resampler_fast_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resampler_fast_16ic.h @@ -61,9 +61,9 @@ #ifndef INCLUDED_volk_gnsssdr_16ic_resampler_fast_16ic_H #define INCLUDED_volk_gnsssdr_16ic_resampler_fast_16ic_H -#include #include #include +#include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resamplerfastxnpuppet_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resamplerfastxnpuppet_16ic.h index 5ecd8c641..c6e535a42 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resamplerfastxnpuppet_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resamplerfastxnpuppet_16ic.h @@ -36,9 +36,9 @@ #define INCLUDED_volk_gnsssdr_16ic_resamplerfastxnpuppet_16ic_H #include "volk_gnsssdr/volk_gnsssdr_16ic_xn_resampler_fast_16ic_xn.h" -#include -#include #include +#include +#include #include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resamplerxnpuppet_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resamplerxnpuppet_16ic.h index b0885924a..ffac7fece 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resamplerxnpuppet_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resamplerxnpuppet_16ic.h @@ -36,9 +36,9 @@ #define INCLUDED_volk_gnsssdr_16ic_resamplerxnpuppet_16ic_H #include "volk_gnsssdr/volk_gnsssdr_16ic_xn_resampler_16ic_xn.h" -#include -#include #include +#include +#include #include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_rotatorpuppet_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_rotatorpuppet_16ic.h index 8f1c1beb5..757e213d2 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_rotatorpuppet_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_rotatorpuppet_16ic.h @@ -36,8 +36,8 @@ #define INCLUDED_volk_gnsssdr_16ic_rotatorpuppet_16ic_H -#include #include "volk_gnsssdr/volk_gnsssdr_16ic_s32fc_x2_rotator_16ic.h" +#include #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic.h index 4834354f5..6d65f80f3 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic.h @@ -59,9 +59,9 @@ #ifndef INCLUDED_volk_gnsssdr_16ic_x2_dot_prod_16ic_H #define INCLUDED_volk_gnsssdr_16ic_x2_dot_prod_16ic_H +#include #include #include -#include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic_xn.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic_xn.h index e45b885a9..9d370fb19 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic_xn.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic_xn.h @@ -61,10 +61,10 @@ #define INCLUDED_volk_gnsssdr_16ic_xn_dot_prod_16ic_xn_H +#include +#include #include #include -#include -#include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dotprodxnpuppet_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dotprodxnpuppet_16ic.h index abec05bb0..67bfb1a0b 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dotprodxnpuppet_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dotprodxnpuppet_16ic.h @@ -36,9 +36,9 @@ #define INCLUDED_volk_gnsssdr_16ic_x2_dotprodxnpuppet_16ic_H #include "volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic_xn.h" -#include -#include #include +#include +#include #include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_rotator_dot_prod_16ic_xn.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_rotator_dot_prod_16ic_xn.h index 24b2454c4..efc0feb70 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_rotator_dot_prod_16ic_xn.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_rotator_dot_prod_16ic_xn.h @@ -69,10 +69,10 @@ #define INCLUDED_volk_gnsssdr_16ic_x2_rotator_dot_prod_16ic_xn_H -#include -#include -#include #include +#include +#include +#include #include #ifdef LV_HAVE_GENERIC @@ -1490,8 +1490,8 @@ static inline void volk_gnsssdr_16ic_x2_rotator_dot_prod_16ic_xn_neon(lv_16sc_t* #ifdef LV_HAVE_NEONV7 -#include #include +#include static inline void volk_gnsssdr_16ic_x2_rotator_dot_prod_16ic_xn_neon_vma(lv_16sc_t* result, const lv_16sc_t* in_common, const lv_32fc_t phase_inc, lv_32fc_t* phase, const lv_16sc_t** in_a, int num_a_vectors, unsigned int num_points) { @@ -1687,8 +1687,8 @@ static inline void volk_gnsssdr_16ic_x2_rotator_dot_prod_16ic_xn_neon_vma(lv_16s #ifdef LV_HAVE_NEONV7 -#include #include +#include static inline void volk_gnsssdr_16ic_x2_rotator_dot_prod_16ic_xn_neon_optvma(lv_16sc_t* result, const lv_16sc_t* in_common, const lv_32fc_t phase_inc, lv_32fc_t* phase, const lv_16sc_t** in_a, int num_a_vectors, unsigned int num_points) { diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_rotator_dotprodxnpuppet_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_rotator_dotprodxnpuppet_16ic.h index 9339b00be..51536530e 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_rotator_dotprodxnpuppet_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_rotator_dotprodxnpuppet_16ic.h @@ -36,8 +36,8 @@ #define INCLUDED_volk_gnsssdr_16ic_x2_rotator_dotprodxnpuppet_16ic_H #include "volk_gnsssdr/volk_gnsssdr_16ic_x2_rotator_dot_prod_16ic_xn.h" -#include #include +#include #include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_xn_resampler_16ic_xn.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_xn_resampler_16ic_xn.h index 430f27962..8bf573ea1 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_xn_resampler_16ic_xn.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_xn_resampler_16ic_xn.h @@ -63,10 +63,10 @@ #ifndef INCLUDED_volk_gnsssdr_16ic_xn_resampler_16ic_xn_H #define INCLUDED_volk_gnsssdr_16ic_xn_resampler_16ic_xn_H -#include -#include #include #include +#include +#include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_xn_resampler_fast_16ic_xn.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_xn_resampler_fast_16ic_xn.h index 2830f691d..4d3cc61c1 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_xn_resampler_fast_16ic_xn.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_xn_resampler_fast_16ic_xn.h @@ -63,9 +63,9 @@ #ifndef INCLUDED_volk_gnsssdr_16ic_xn_resampler_fast_16ic_xn_H #define INCLUDED_volk_gnsssdr_16ic_xn_resampler_fast_16ic_xn_H -#include #include #include +#include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_high_dynamics_resamplerxnpuppet_32f.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_high_dynamics_resamplerxnpuppet_32f.h index c6705adca..d6fbcf756 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_high_dynamics_resamplerxnpuppet_32f.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_high_dynamics_resamplerxnpuppet_32f.h @@ -37,9 +37,9 @@ #define INCLUDED_volk_gnsssdr_32f_high_dynamics_resamplerxnpuppet_32f_H #include "volk_gnsssdr/volk_gnsssdr_32f_xn_high_dynamics_resampler_32f_xn.h" -#include -#include #include +#include +#include #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_resamplerxnpuppet_32f.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_resamplerxnpuppet_32f.h index 106dfecdc..5f979c69e 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_resamplerxnpuppet_32f.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_resamplerxnpuppet_32f.h @@ -36,9 +36,9 @@ #define INCLUDED_volk_gnsssdr_32f_resamplerxnpuppet_32f_H #include "volk_gnsssdr/volk_gnsssdr_32f_xn_resampler_32f_xn.h" -#include -#include #include +#include +#include #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_sincos_32fc.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_sincos_32fc.h index 8936901b0..9c7f01227 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_sincos_32fc.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_sincos_32fc.h @@ -57,9 +57,9 @@ #ifndef INCLUDED_volk_gnsssdr_32f_sincos_32fc_H #define INCLUDED_volk_gnsssdr_32f_sincos_32fc_H -#include #include #include +#include #ifdef LV_HAVE_SSE4_1 #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_xn_high_dynamics_resampler_32f_xn.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_xn_high_dynamics_resampler_32f_xn.h index 8b666908b..db878c584 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_xn_high_dynamics_resampler_32f_xn.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_xn_high_dynamics_resampler_32f_xn.h @@ -67,13 +67,13 @@ #ifndef INCLUDED_volk_gnsssdr_32f_xn_high_dynamics_resampler_32f_xn_H #define INCLUDED_volk_gnsssdr_32f_xn_high_dynamics_resampler_32f_xn_H -#include -#include -#include /* abs */ -#include /* int64_t */ -#include #include #include +#include +#include +#include /* int64_t */ +#include +#include /* abs */ #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_xn_resampler_32f_xn.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_xn_resampler_32f_xn.h index e841feeb2..50bdd732c 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_xn_resampler_32f_xn.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_xn_resampler_32f_xn.h @@ -63,13 +63,13 @@ #ifndef INCLUDED_volk_gnsssdr_32f_xn_resampler_32f_xn_H #define INCLUDED_volk_gnsssdr_32f_xn_resampler_32f_xn_H -#include -#include -#include /* abs */ -#include /* int64_t */ -#include #include #include +#include +#include +#include /* int64_t */ +#include +#include /* abs */ #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_high_dynamic_rotator_dot_prod_32fc_xn.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_high_dynamic_rotator_dot_prod_32fc_xn.h index e20d229e3..822742daf 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_high_dynamic_rotator_dot_prod_32fc_xn.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_high_dynamic_rotator_dot_prod_32fc_xn.h @@ -70,10 +70,10 @@ #define INCLUDED_volk_gnsssdr_32fc_32f_high_dynamic_rotator_dot_prod_32fc_xn_H -#include -#include -#include #include +#include +#include +#include #include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_high_dynamic_rotator_dotprodxnpuppet_32fc.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_high_dynamic_rotator_dotprodxnpuppet_32fc.h index b2bc1b740..ac71ab47a 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_high_dynamic_rotator_dotprodxnpuppet_32fc.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_high_dynamic_rotator_dotprodxnpuppet_32fc.h @@ -36,8 +36,8 @@ #define INCLUDED_volk_gnsssdr_32fc_32f_high_dynamic_rotator_dotprodxnpuppet_32fc_H #include "volk_gnsssdr/volk_gnsssdr_32fc_32f_high_dynamic_rotator_dot_prod_32fc_xn.h" -#include #include +#include #include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h index 08cb7a221..c08591deb 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h @@ -69,10 +69,10 @@ #define INCLUDED_volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn_H -#include -#include -#include #include +#include +#include +#include #include //#include @@ -165,8 +165,8 @@ static inline void volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn_generic_reload #endif /*LV_HAVE_GENERIC*/ #ifdef LV_HAVE_AVX -#include #include +#include static inline void volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn_u_avx(lv_32fc_t* result, const lv_32fc_t* in_common, const lv_32fc_t phase_inc, lv_32fc_t* phase, const float** in_a, int num_a_vectors, unsigned int num_points) { unsigned int number = 0; @@ -329,8 +329,8 @@ static inline void volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn_u_avx(lv_32fc_ #ifdef LV_HAVE_AVX -#include #include +#include static inline void volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn_a_avx(lv_32fc_t* result, const lv_32fc_t* in_common, const lv_32fc_t phase_inc, lv_32fc_t* phase, const float** in_a, int num_a_vectors, unsigned int num_points) { unsigned int number = 0; diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_rotator_dotprodxnpuppet_32fc.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_rotator_dotprodxnpuppet_32fc.h index 9212c9327..0a166d97f 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_rotator_dotprodxnpuppet_32fc.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_rotator_dotprodxnpuppet_32fc.h @@ -36,8 +36,8 @@ #define INCLUDED_volk_gnsssdr_32fc_32f_rotator_dotprodxnpuppet_32fc_H #include "volk_gnsssdr/volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h" -#include #include +#include #include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_16ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_16ic.h index 85d902d7d..ecfe1fb2e 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_16ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_16ic.h @@ -56,9 +56,9 @@ #ifndef INCLUDED_volk_gnsssdr_32fc_convert_16ic_H #define INCLUDED_volk_gnsssdr_32fc_convert_16ic_H +#include "volk_gnsssdr/volk_gnsssdr_complex.h" #include #include -#include "volk_gnsssdr/volk_gnsssdr_complex.h" #ifdef LV_HAVE_SSE2 #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_8ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_8ic.h index ff4202ca4..634fdd60e 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_8ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_8ic.h @@ -56,10 +56,10 @@ #ifndef INCLUDED_volk_gnsssdr_32fc_convert_8ic_H #define INCLUDED_volk_gnsssdr_32fc_convert_8ic_H -#include -#include -#include #include "volk_gnsssdr/volk_gnsssdr_complex.h" +#include +#include +#include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_resamplerxnpuppet_32fc.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_resamplerxnpuppet_32fc.h index 9c595a226..c95091ac0 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_resamplerxnpuppet_32fc.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_resamplerxnpuppet_32fc.h @@ -36,9 +36,9 @@ #define INCLUDED_volk_gnsssdr_32fc_resamplerxnpuppet_32fc_H #include "volk_gnsssdr/volk_gnsssdr_32fc_xn_resampler_32fc_xn.h" -#include -#include #include +#include +#include #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_x2_rotator_dot_prod_32fc_xn.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_x2_rotator_dot_prod_32fc_xn.h index 32c51fa55..5701ae041 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_x2_rotator_dot_prod_32fc_xn.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_x2_rotator_dot_prod_32fc_xn.h @@ -69,10 +69,10 @@ #define INCLUDED_volk_gnsssdr_32fc_x2_rotator_dot_prod_32fc_xn_H -#include -#include -#include #include +#include +#include +#include #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_x2_rotator_dotprodxnpuppet_32fc.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_x2_rotator_dotprodxnpuppet_32fc.h index 6786f8821..4d5efcefe 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_x2_rotator_dotprodxnpuppet_32fc.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_x2_rotator_dotprodxnpuppet_32fc.h @@ -36,8 +36,8 @@ #define INCLUDED_volk_gnsssdr_32fc_x2_rotator_dotprodxnpuppet_32fc_H #include "volk_gnsssdr/volk_gnsssdr_32fc_x2_rotator_dot_prod_32fc_xn.h" -#include #include +#include #include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_xn_resampler_32fc_xn.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_xn_resampler_32fc_xn.h index 2a8e7ba1b..4335e0722 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_xn_resampler_32fc_xn.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_xn_resampler_32fc_xn.h @@ -63,10 +63,10 @@ #ifndef INCLUDED_volk_gnsssdr_32fc_xn_resampler_32fc_xn_H #define INCLUDED_volk_gnsssdr_32fc_xn_resampler_32fc_xn_H -#include -#include /* abs */ #include #include +#include +#include /* abs */ #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x2_dot_prod_8ic.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x2_dot_prod_8ic.h index 47d9ccaaf..d123f6225 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x2_dot_prod_8ic.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x2_dot_prod_8ic.h @@ -59,9 +59,9 @@ #ifndef INCLUDED_volk_gnsssdr_8ic_x2_dot_prod_8ic_H #define INCLUDED_volk_gnsssdr_8ic_x2_dot_prod_8ic_H -#include #include #include +#include #ifdef LV_HAVE_GENERIC diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_s32f_sincos_32fc.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_s32f_sincos_32fc.h index 50ac028d0..41e59e525 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_s32f_sincos_32fc.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_s32f_sincos_32fc.h @@ -62,9 +62,9 @@ #ifndef INCLUDED_volk_gnsssdr_s32f_sincos_32fc_H #define INCLUDED_volk_gnsssdr_s32f_sincos_32fc_H -#include #include #include +#include #ifdef LV_HAVE_SSE2 diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_s32f_sincospuppet_32fc.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_s32f_sincospuppet_32fc.h index ac86c52a2..6146d443a 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_s32f_sincospuppet_32fc.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_s32f_sincospuppet_32fc.h @@ -36,8 +36,8 @@ #define INCLUDED_volk_gnsssdr_s32f_sincospuppet_32fc_H -#include #include "volk_gnsssdr/volk_gnsssdr_s32f_sincos_32fc.h" +#include #include diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/kernel_tests.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/kernel_tests.h index 51a96b171..86b20b5e0 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/kernel_tests.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/kernel_tests.h @@ -29,8 +29,8 @@ #include "qa_utils.h" -#include #include +#include // macros for initializing volk_gnsssdr_test_case_t. Macros are needed to generate diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.cc b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.cc index 58db3bac1..906028e6d 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.cc +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.cc @@ -16,9 +16,8 @@ * along with GNSS-SDR. If not, see . */ -#include "volk_gnsssdr/volk_gnsssdr.h" // for volk_gnsssdr_func_desc_t #include "qa_utils.h" - +#include "volk_gnsssdr/volk_gnsssdr.h" // for volk_gnsssdr_func_desc_t #include // for volk_gnsssdr_free, volk_gnsssdr_malloc #include // for assert #include // for system_clock, duration,... diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.h index e0a265c92..2a69e5947 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_utils.h @@ -23,8 +23,8 @@ #define _DARWIN_C_SOURCE #endif -#include "volk_gnsssdr/volk_gnsssdr_complex.h" // for lv_32fc_t #include "volk_gnsssdr/volk_gnsssdr.h" // for volk_gnsssdr_func_desc_t +#include "volk_gnsssdr/volk_gnsssdr_complex.h" // for lv_32fc_t #include // for bool, false #include // for NULL #include // for map diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/testqa.cc b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/testqa.cc index 2dc11324e..6c23220d1 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/testqa.cc +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/testqa.cc @@ -22,8 +22,8 @@ #include "qa_utils.h" // for volk_gnsssdr_test_case_t, volk_gnsssdr_test_results_t #include "volk_gnsssdr/volk_gnsssdr_complex.h" // for lv_32fc_t #include // for bool, false, true -#include // for operator<<, basic_ostream, endl, char... #include // IWYU pragma: keep +#include // for operator<<, basic_ostream, endl, char... #include // for map, map<>::iterator, _Rb_tree_iterator #include // for stringstream #include // for string, operator<< diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/volk_gnsssdr_rank_archs.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/volk_gnsssdr_rank_archs.h index 335d4a279..06c2cd41e 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/volk_gnsssdr_rank_archs.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/volk_gnsssdr_rank_archs.h @@ -19,8 +19,8 @@ #ifndef GNSS_SDR_VOLK_GNSSSDR_RANK_ARCHS_H #define GNSS_SDR_VOLK_GNSSSDR_RANK_ARCHS_H -#include #include +#include #ifdef __cplusplus extern "C" diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/tmpl/volk_gnsssdr.tmpl.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/tmpl/volk_gnsssdr.tmpl.h index cfde1b241..51f8026fc 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/tmpl/volk_gnsssdr.tmpl.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/tmpl/volk_gnsssdr.tmpl.h @@ -19,14 +19,13 @@ #ifndef INCLUDED_VOLK_GNSSSDR_RUNTIME #define INCLUDED_VOLK_GNSSSDR_RUNTIME -#include -#include #include #include +#include #include - -#include +#include #include +#include __VOLK_DECL_BEGIN diff --git a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/tmpl/volk_gnsssdr_typedefs.tmpl.h b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/tmpl/volk_gnsssdr_typedefs.tmpl.h index 2d7ac6a30..d55149147 100644 --- a/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/tmpl/volk_gnsssdr_typedefs.tmpl.h +++ b/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/tmpl/volk_gnsssdr_typedefs.tmpl.h @@ -19,8 +19,8 @@ #ifndef INCLUDED_VOLK_GNSSSDR_TYPEDEFS #define INCLUDED_VOLK_GNSSSDR_TYPEDEFS -#include #include +#include // clang-format off %for kern in kernels: diff --git a/src/algorithms/observables/adapters/hybrid_observables.cc b/src/algorithms/observables/adapters/hybrid_observables.cc index cf03f2d2c..f92c02b48 100644 --- a/src/algorithms/observables/adapters/hybrid_observables.cc +++ b/src/algorithms/observables/adapters/hybrid_observables.cc @@ -38,7 +38,7 @@ using google::LogMessage; HybridObservables::HybridObservables(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { std::string default_dump_filename = "./observables.dat"; DLOG(INFO) << "role " << role; @@ -51,9 +51,7 @@ HybridObservables::HybridObservables(ConfigurationInterface* configuration, } -HybridObservables::~HybridObservables() -{ -} +HybridObservables::~HybridObservables() = default; void HybridObservables::connect(gr::top_block_sptr top_block) diff --git a/src/algorithms/observables/adapters/hybrid_observables.h b/src/algorithms/observables/adapters/hybrid_observables.h index 1beb968fa..35015b837 100644 --- a/src/algorithms/observables/adapters/hybrid_observables.h +++ b/src/algorithms/observables/adapters/hybrid_observables.h @@ -47,7 +47,7 @@ class HybridObservables : public ObservablesInterface { public: HybridObservables(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/observables/gnuradio_blocks/hybrid_observables_cc.cc b/src/algorithms/observables/gnuradio_blocks/hybrid_observables_cc.cc index ffd395462..cf9807ece 100644 --- a/src/algorithms/observables/gnuradio_blocks/hybrid_observables_cc.cc +++ b/src/algorithms/observables/gnuradio_blocks/hybrid_observables_cc.cc @@ -30,8 +30,8 @@ */ #include "hybrid_observables_cc.h" -#include "display.h" #include "GPS_L1_CA.h" +#include "display.h" #include "gnss_sdr_create_directory.h" #include #include @@ -42,6 +42,7 @@ #include #include #include +#include using google::LogMessage; @@ -49,7 +50,7 @@ using google::LogMessage; hybrid_observables_cc_sptr hybrid_make_observables_cc(unsigned int nchannels_in, unsigned int nchannels_out, bool dump, bool dump_mat, std::string dump_filename) { - return hybrid_observables_cc_sptr(new hybrid_observables_cc(nchannels_in, nchannels_out, dump, dump_mat, dump_filename)); + return hybrid_observables_cc_sptr(new hybrid_observables_cc(nchannels_in, nchannels_out, dump, dump_mat, std::move(dump_filename))); } @@ -63,7 +64,7 @@ hybrid_observables_cc::hybrid_observables_cc(uint32_t nchannels_in, { d_dump = dump; d_dump_mat = dump_mat and d_dump; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_nchannels_out = nchannels_out; d_nchannels_in = nchannels_in; T_rx_clock_step_samples = 0U; @@ -74,10 +75,10 @@ hybrid_observables_cc::hybrid_observables_cc(uint32_t nchannels_in, { std::string dump_path; // Get path - if (d_dump_filename.find_last_of("/") != std::string::npos) + if (d_dump_filename.find_last_of('/') != std::string::npos) { - std::string dump_filename_ = d_dump_filename.substr(d_dump_filename.find_last_of("/") + 1); - dump_path = d_dump_filename.substr(0, d_dump_filename.find_last_of("/")); + std::string dump_filename_ = d_dump_filename.substr(d_dump_filename.find_last_of('/') + 1); + dump_path = d_dump_filename.substr(0, d_dump_filename.find_last_of('/')); d_dump_filename = dump_filename_; } else @@ -89,9 +90,9 @@ hybrid_observables_cc::hybrid_observables_cc(uint32_t nchannels_in, d_dump_filename = "observables.dat"; } // remove extension if any - if (d_dump_filename.substr(1).find_last_of(".") != std::string::npos) + if (d_dump_filename.substr(1).find_last_of('.') != std::string::npos) { - d_dump_filename = d_dump_filename.substr(0, d_dump_filename.find_last_of(".")); + d_dump_filename = d_dump_filename.substr(0, d_dump_filename.find_last_of('.')); } d_dump_filename.append(".dat"); d_dump_filename = dump_path + boost::filesystem::path::preferred_separator + d_dump_filename; @@ -175,13 +176,13 @@ int32_t hybrid_observables_cc::save_matfile() { return 1; } - double **RX_time = new double *[d_nchannels_out]; - double **TOW_at_current_symbol_s = new double *[d_nchannels_out]; - double **Carrier_Doppler_hz = new double *[d_nchannels_out]; - double **Carrier_phase_cycles = new double *[d_nchannels_out]; - double **Pseudorange_m = new double *[d_nchannels_out]; - double **PRN = new double *[d_nchannels_out]; - double **Flag_valid_pseudorange = new double *[d_nchannels_out]; + auto **RX_time = new double *[d_nchannels_out]; + auto **TOW_at_current_symbol_s = new double *[d_nchannels_out]; + auto **Carrier_Doppler_hz = new double *[d_nchannels_out]; + auto **Carrier_phase_cycles = new double *[d_nchannels_out]; + auto **Pseudorange_m = new double *[d_nchannels_out]; + auto **PRN = new double *[d_nchannels_out]; + auto **Flag_valid_pseudorange = new double *[d_nchannels_out]; for (uint32_t i = 0; i < d_nchannels_out; i++) { @@ -238,13 +239,13 @@ int32_t hybrid_observables_cc::save_matfile() return 1; } - double *RX_time_aux = new double[d_nchannels_out * num_epoch]; - double *TOW_at_current_symbol_s_aux = new double[d_nchannels_out * num_epoch]; - double *Carrier_Doppler_hz_aux = new double[d_nchannels_out * num_epoch]; - double *Carrier_phase_cycles_aux = new double[d_nchannels_out * num_epoch]; - double *Pseudorange_m_aux = new double[d_nchannels_out * num_epoch]; - double *PRN_aux = new double[d_nchannels_out * num_epoch]; - double *Flag_valid_pseudorange_aux = new double[d_nchannels_out * num_epoch]; + auto *RX_time_aux = new double[d_nchannels_out * num_epoch]; + auto *TOW_at_current_symbol_s_aux = new double[d_nchannels_out * num_epoch]; + auto *Carrier_Doppler_hz_aux = new double[d_nchannels_out * num_epoch]; + auto *Carrier_phase_cycles_aux = new double[d_nchannels_out * num_epoch]; + auto *Pseudorange_m_aux = new double[d_nchannels_out * num_epoch]; + auto *PRN_aux = new double[d_nchannels_out * num_epoch]; + auto *Flag_valid_pseudorange_aux = new double[d_nchannels_out * num_epoch]; uint32_t k = 0U; for (int64_t j = 0; j < num_epoch; j++) { @@ -270,8 +271,8 @@ int32_t hybrid_observables_cc::save_matfile() filename.erase(filename.end() - 4, filename.end()); } filename.append(".mat"); - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (reinterpret_cast(matfp) != NULL) + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (reinterpret_cast(matfp) != nullptr) { size_t dims[2] = {static_cast(d_nchannels_out), static_cast(num_epoch)}; matvar = Mat_VarCreate("RX_time", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, RX_time_aux, MAT_F_DONT_COPY_DATA); @@ -408,23 +409,13 @@ bool hybrid_observables_cc::interp_trk_obs(Gnss_Synchro &interpolated_obs, const // << " ,diff: " << old_abs_diff << " samples (" << static_cast(old_abs_diff) / static_cast(d_gnss_synchro_history->at(ch, nearest_element).fs) << " s)\n"; return true; } - else - { - return false; - } - } - else - { - // std::cout << "ALERT: Channel " << ch << " interp buff idx " << nearest_element - // << " ,diff: " << old_abs_diff << " samples (" << static_cast(old_abs_diff) / static_cast(d_gnss_synchro_history->at(ch, nearest_element).fs) << " s)\n"; - // usleep(1000); return false; } + // std::cout << "ALERT: Channel " << ch << " interp buff idx " << nearest_element + // << " ,diff: " << old_abs_diff << " samples (" << static_cast(old_abs_diff) / static_cast(d_gnss_synchro_history->at(ch, nearest_element).fs) << " s)\n"; + // usleep(1000); } - else - { - return false; - } + return false; } @@ -503,8 +494,8 @@ int hybrid_observables_cc::general_work(int noutput_items __attribute__((unused) gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const Gnss_Synchro **in = reinterpret_cast(&input_items[0]); - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); + const auto **in = reinterpret_cast(&input_items[0]); + auto **out = reinterpret_cast(&output_items[0]); // Push receiver clock into history buffer (connected to the last of the input channels) // The clock buffer gives time to the channels to compute the tracking observables @@ -551,7 +542,7 @@ int hybrid_observables_cc::general_work(int noutput_items __attribute__((unused) int32_t n_valid = 0; for (uint32_t n = 0; n < d_nchannels_out; n++) { - Gnss_Synchro interpolated_gnss_synchro; + Gnss_Synchro interpolated_gnss_synchro{}; if (!interp_trk_obs(interpolated_gnss_synchro, n, d_Rx_clock_buffer.front() + T_rx_TOW_offset_ms * T_rx_clock_step_samples)) { // Produce an empty observation @@ -615,8 +606,5 @@ int hybrid_observables_cc::general_work(int noutput_items __attribute__((unused) } return 1; } - else - { - return 0; - } + return 0; } diff --git a/src/algorithms/observables/gnuradio_blocks/hybrid_observables_cc.h b/src/algorithms/observables/gnuradio_blocks/hybrid_observables_cc.h index 033da7a25..9f6d31e47 100644 --- a/src/algorithms/observables/gnuradio_blocks/hybrid_observables_cc.h +++ b/src/algorithms/observables/gnuradio_blocks/hybrid_observables_cc.h @@ -34,10 +34,10 @@ #ifndef GNSS_SDR_HYBRID_OBSERVABLES_CC_H #define GNSS_SDR_HYBRID_OBSERVABLES_CC_H -#include "gnss_synchro.h" #include "gnss_circular_deque.h" -#include +#include "gnss_synchro.h" #include +#include #include #include #include diff --git a/src/algorithms/resampler/adapters/direct_resampler_conditioner.cc b/src/algorithms/resampler/adapters/direct_resampler_conditioner.cc index cbbde6a46..a1e6e2e1b 100644 --- a/src/algorithms/resampler/adapters/direct_resampler_conditioner.cc +++ b/src/algorithms/resampler/adapters/direct_resampler_conditioner.cc @@ -30,20 +30,21 @@ */ #include "direct_resampler_conditioner.h" +#include "configuration_interface.h" +#include "direct_resampler_conditioner_cb.h" #include "direct_resampler_conditioner_cc.h" #include "direct_resampler_conditioner_cs.h" -#include "direct_resampler_conditioner_cb.h" -#include "configuration_interface.h" #include #include #include #include +#include #include using google::LogMessage; DirectResamplerConditioner::DirectResamplerConditioner( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, unsigned int out_stream) : role_(role), in_stream_(in_stream), out_stream_(out_stream) { std::string default_item_type = "short"; @@ -64,7 +65,7 @@ DirectResamplerConditioner::DirectResamplerConditioner( DLOG(INFO) << "dump_ is " << dump_; dump_filename_ = configuration->property(role + ".dump_filename", default_dump_file); - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); resampler_ = direct_resampler_make_conditioner_cc(sample_freq_in_, sample_freq_out_); @@ -73,7 +74,7 @@ DirectResamplerConditioner::DirectResamplerConditioner( DLOG(INFO) << "Item size " << item_size_; DLOG(INFO) << "resampler(" << resampler_->unique_id() << ")"; } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { item_size_ = sizeof(lv_16sc_t); resampler_ = direct_resampler_make_conditioner_cs(sample_freq_in_, sample_freq_out_); @@ -82,7 +83,7 @@ DirectResamplerConditioner::DirectResamplerConditioner( DLOG(INFO) << "Item size " << item_size_; DLOG(INFO) << "resampler(" << resampler_->unique_id() << ")"; } - else if (item_type_.compare("cbyte") == 0) + else if (item_type_ == "cbyte") { item_size_ = sizeof(lv_8sc_t); resampler_ = direct_resampler_make_conditioner_cb(sample_freq_in_, sample_freq_out_); @@ -94,7 +95,7 @@ DirectResamplerConditioner::DirectResamplerConditioner( else { LOG(WARNING) << item_type_ << " unrecognized item type for resampler"; - item_size_ = sizeof(short); + item_size_ = sizeof(int16_t); } if (dump_) { @@ -113,7 +114,7 @@ DirectResamplerConditioner::DirectResamplerConditioner( } -DirectResamplerConditioner::~DirectResamplerConditioner() {} +DirectResamplerConditioner::~DirectResamplerConditioner() = default; void DirectResamplerConditioner::connect(gr::top_block_sptr top_block) diff --git a/src/algorithms/resampler/adapters/direct_resampler_conditioner.h b/src/algorithms/resampler/adapters/direct_resampler_conditioner.h index a874b9268..300ce297f 100644 --- a/src/algorithms/resampler/adapters/direct_resampler_conditioner.h +++ b/src/algorithms/resampler/adapters/direct_resampler_conditioner.h @@ -47,7 +47,7 @@ class DirectResamplerConditioner : public GNSSBlockInterface { public: DirectResamplerConditioner(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, + const std::string& role, unsigned int in_stream, unsigned int out_stream); virtual ~DirectResamplerConditioner(); diff --git a/src/algorithms/resampler/adapters/mmse_resampler_conditioner.cc b/src/algorithms/resampler/adapters/mmse_resampler_conditioner.cc index c59179534..bc18beba5 100644 --- a/src/algorithms/resampler/adapters/mmse_resampler_conditioner.cc +++ b/src/algorithms/resampler/adapters/mmse_resampler_conditioner.cc @@ -39,7 +39,7 @@ using google::LogMessage; MmseResamplerConditioner::MmseResamplerConditioner( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, unsigned int out_stream) : role_(role), in_stream_(in_stream), out_stream_(out_stream) { std::string default_item_type = "gr_complex"; @@ -60,7 +60,7 @@ MmseResamplerConditioner::MmseResamplerConditioner( DLOG(INFO) << "dump_ is " << dump_; dump_filename_ = configuration->property(role + ".dump_filename", default_dump_file); - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); @@ -69,7 +69,7 @@ MmseResamplerConditioner::MmseResamplerConditioner( std::vector taps = gr::filter::firdes::low_pass(1.0, sample_freq_in_, sample_freq_out_ / 2.1, - sample_freq_out_ / 10, + sample_freq_out_ / 5, gr::filter::firdes::win_type::WIN_HAMMING); std::cout << "Enabled fractional resampler low pass filter with " << taps.size() << " taps" << std::endl; fir_filter_ccf_ = gr::filter::fir_filter_ccf::make(1, taps); @@ -106,7 +106,9 @@ MmseResamplerConditioner::MmseResamplerConditioner( } -MmseResamplerConditioner::~MmseResamplerConditioner() {} +MmseResamplerConditioner::~MmseResamplerConditioner() = default; + + void MmseResamplerConditioner::connect(gr::top_block_sptr top_block) { if (dump_) diff --git a/src/algorithms/resampler/adapters/mmse_resampler_conditioner.h b/src/algorithms/resampler/adapters/mmse_resampler_conditioner.h index 462e49e88..641975e83 100644 --- a/src/algorithms/resampler/adapters/mmse_resampler_conditioner.h +++ b/src/algorithms/resampler/adapters/mmse_resampler_conditioner.h @@ -35,11 +35,11 @@ #include "gnss_block_interface.h" #ifdef GR_GREATER_38 -#include #include +#include #else -#include #include +#include #endif #include @@ -55,7 +55,7 @@ class MmseResamplerConditioner : public GNSSBlockInterface { public: MmseResamplerConditioner(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, + const std::string& role, unsigned int in_stream, unsigned int out_stream); virtual ~MmseResamplerConditioner(); diff --git a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cb.cc b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cb.cc index 1ec54e2fb..39bf2883a 100644 --- a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cb.cc +++ b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cb.cc @@ -33,8 +33,8 @@ #include "direct_resampler_conditioner_cb.h" -#include #include +#include using google::LogMessage; @@ -73,9 +73,7 @@ direct_resampler_conditioner_cb::direct_resampler_conditioner_cb( } -direct_resampler_conditioner_cb::~direct_resampler_conditioner_cb() -{ -} +direct_resampler_conditioner_cb::~direct_resampler_conditioner_cb() = default; void direct_resampler_conditioner_cb::forecast(int noutput_items, @@ -95,8 +93,8 @@ int direct_resampler_conditioner_cb::general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const lv_8sc_t *in = reinterpret_cast(input_items[0]); - lv_8sc_t *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); int lcv = 0; int count = 0; diff --git a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cc.cc b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cc.cc index 1cfa47a50..a288cd4da 100644 --- a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cc.cc +++ b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cc.cc @@ -33,8 +33,8 @@ #include "direct_resampler_conditioner_cc.h" -#include #include +#include using google::LogMessage; @@ -71,9 +71,7 @@ direct_resampler_conditioner_cc::direct_resampler_conditioner_cc( } -direct_resampler_conditioner_cc::~direct_resampler_conditioner_cc() -{ -} +direct_resampler_conditioner_cc::~direct_resampler_conditioner_cc() = default; void direct_resampler_conditioner_cc::forecast(int noutput_items, @@ -92,8 +90,8 @@ int direct_resampler_conditioner_cc::general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const gr_complex *in = reinterpret_cast(input_items[0]); - gr_complex *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); int lcv = 0; int count = 0; diff --git a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cs.cc b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cs.cc index c8b01f006..3506879b6 100644 --- a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cs.cc +++ b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cs.cc @@ -33,8 +33,8 @@ #include "direct_resampler_conditioner_cs.h" -#include #include +#include using google::LogMessage; @@ -71,9 +71,7 @@ direct_resampler_conditioner_cs::direct_resampler_conditioner_cs( } -direct_resampler_conditioner_cs::~direct_resampler_conditioner_cs() -{ -} +direct_resampler_conditioner_cs::~direct_resampler_conditioner_cs() = default; void direct_resampler_conditioner_cs::forecast(int noutput_items, @@ -93,8 +91,8 @@ int direct_resampler_conditioner_cs::general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const lv_16sc_t *in = reinterpret_cast(input_items[0]); - lv_16sc_t *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); int lcv = 0; int count = 0; diff --git a/src/algorithms/signal_generator/adapters/signal_generator.cc b/src/algorithms/signal_generator/adapters/signal_generator.cc index 09bd491ba..19db5e91d 100644 --- a/src/algorithms/signal_generator/adapters/signal_generator.cc +++ b/src/algorithms/signal_generator/adapters/signal_generator.cc @@ -31,20 +31,22 @@ #include "signal_generator.h" -#include "configuration_interface.h" -#include "Galileo_E1.h" -#include "GPS_L1_CA.h" -#include "Galileo_E5a.h" #include "GLONASS_L1_L2_CA.h" +#include "GPS_L1_CA.h" +#include "Galileo_E1.h" +#include "Galileo_E5a.h" +#include "Beidou_B1I.h" +#include "configuration_interface.h" #include -#include "../../../core/system_parameters/Beidou_B1I.h" +#include +#include using google::LogMessage; SignalGenerator::SignalGenerator(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, - unsigned int out_stream, boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue) + const std::string& role, unsigned int in_stream, + unsigned int out_stream, boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { std::string default_item_type = "gr_complex"; std::string default_dump_file = "./data/gen_source.dat"; @@ -103,11 +105,11 @@ SignalGenerator::SignalGenerator(ConfigurationInterface* configuration, { if (signal1[0].at(0) == '1') { - vector_length = round((float)fs_in / (GLONASS_L1_CA_CODE_RATE_HZ / GLONASS_L1_CA_CODE_LENGTH_CHIPS)); + vector_length = round(static_cast(fs_in) / (GLONASS_L1_CA_CODE_RATE_HZ / GLONASS_L1_CA_CODE_LENGTH_CHIPS)); } else { - vector_length = round((float)fs_in / (GLONASS_L2_CA_CODE_RATE_HZ / GLONASS_L2_CA_CODE_LENGTH_CHIPS)); + vector_length = round(static_cast(fs_in) / (GLONASS_L2_CA_CODE_RATE_HZ / GLONASS_L2_CA_CODE_LENGTH_CHIPS)); } } @@ -117,7 +119,7 @@ SignalGenerator::SignalGenerator(ConfigurationInterface* configuration, } - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); DLOG(INFO) << "Item size " << item_size_; @@ -133,7 +135,7 @@ SignalGenerator::SignalGenerator(ConfigurationInterface* configuration, else { LOG(WARNING) << item_type_ << " unrecognized item type for resampler"; - item_size_ = sizeof(short); + item_size_ = sizeof(int16_t); } if (dump_) @@ -156,14 +158,12 @@ SignalGenerator::SignalGenerator(ConfigurationInterface* configuration, } -SignalGenerator::~SignalGenerator() -{ -} +SignalGenerator::~SignalGenerator() = default; void SignalGenerator::connect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->connect(gen_source_, 0, vector_to_stream_, 0); DLOG(INFO) << "connected gen_source to vector_to_stream"; @@ -179,7 +179,7 @@ void SignalGenerator::connect(gr::top_block_sptr top_block) void SignalGenerator::disconnect(gr::top_block_sptr top_block) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { top_block->disconnect(gen_source_, 0, vector_to_stream_, 0); if (dump_) diff --git a/src/algorithms/signal_generator/adapters/signal_generator.h b/src/algorithms/signal_generator/adapters/signal_generator.h index 52a2a0f82..e32c431b8 100644 --- a/src/algorithms/signal_generator/adapters/signal_generator.h +++ b/src/algorithms/signal_generator/adapters/signal_generator.h @@ -36,9 +36,9 @@ #include "gnss_block_interface.h" #include "signal_generator_c.h" #include +#include #include #include -#include #include #include @@ -52,7 +52,7 @@ class SignalGenerator : public GNSSBlockInterface { public: SignalGenerator(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, + const std::string& role, unsigned int in_stream, unsigned int out_stream, boost::shared_ptr queue); virtual ~SignalGenerator(); diff --git a/src/algorithms/signal_generator/gnuradio_blocks/signal_generator_c.cc b/src/algorithms/signal_generator/gnuradio_blocks/signal_generator_c.cc index 824b5d76a..84a90d555 100644 --- a/src/algorithms/signal_generator/gnuradio_blocks/signal_generator_c.cc +++ b/src/algorithms/signal_generator/gnuradio_blocks/signal_generator_c.cc @@ -29,17 +29,18 @@ */ #include "signal_generator_c.h" -#include "gps_sdr_signal_processing.h" -#include "glonass_l1_signal_processing.h" -#include "galileo_e1_signal_processing.h" -#include "galileo_e5_signal_processing.h" +#include "GLONASS_L1_L2_CA.h" +#include "GPS_L1_CA.h" #include "Galileo_E1.h" #include "Galileo_E5a.h" -#include "GPS_L1_CA.h" -#include "GLONASS_L1_L2_CA.h" +#include "galileo_e1_signal_processing.h" +#include "galileo_e5_signal_processing.h" +#include "glonass_l1_signal_processing.h" +#include "gps_sdr_signal_processing.h" #include #include #include +#include /* @@ -52,7 +53,7 @@ signal_make_generator_c(std::vector signal1, std::vector &delay_chips, const std::vector &delay_sec, bool data_flag, bool noise_flag, unsigned int fs_in, unsigned int vector_length, float BW_BB) { - return gnuradio::get_initial_sptr(new signal_generator_c(signal1, system, PRN, CN0_dB, doppler_Hz, delay_chips, delay_sec, + return gnuradio::get_initial_sptr(new signal_generator_c(std::move(signal1), std::move(system), PRN, CN0_dB, doppler_Hz, delay_chips, delay_sec, data_flag, noise_flag, fs_in, vector_length, BW_BB)); } @@ -63,22 +64,22 @@ signal_make_generator_c(std::vector signal1, std::vector signal1, std::vector system, const std::vector &PRN, - const std::vector &CN0_dB, - const std::vector &doppler_Hz, - const std::vector &delay_chips, - const std::vector &delay_sec, + std::vector CN0_dB, + std::vector doppler_Hz, + std::vector delay_chips, + std::vector delay_sec, bool data_flag, bool noise_flag, unsigned int fs_in, unsigned int vector_length, float BW_BB) : gr::block("signal_gen_cc", gr::io_signature::make(0, 0, sizeof(gr_complex)), gr::io_signature::make(1, 1, sizeof(gr_complex) * vector_length)), - signal_(signal1), - system_(system), + signal_(std::move(signal1)), + system_(std::move(system)), PRN_(PRN), - CN0_dB_(CN0_dB), - doppler_Hz_(doppler_Hz), - delay_chips_(delay_chips), - delay_sec_(delay_sec), + CN0_dB_(std::move(CN0_dB)), + doppler_Hz_(std::move(doppler_Hz)), + delay_chips_(std::move(delay_chips)), + delay_sec_(std::move(delay_sec)), data_flag_(data_flag), noise_flag_(noise_flag), fs_in_(fs_in), @@ -104,7 +105,7 @@ void signal_generator_c::init() { start_phase_rad_.push_back(0); current_data_bit_int_.push_back(1); - current_data_bits_.push_back(gr_complex(1, 0)); + current_data_bits_.emplace_back(1, 0); ms_counter_.push_back(0); data_modulation_.push_back((Galileo_E5a_I_SECONDARY_CODE.at(0) == '0' ? 1 : -1)); pilot_modulation_.push_back((Galileo_E5a_Q_SECONDARY_CODE[PRN_[sat]].at(0) == '0' ? 1 : -1)); @@ -288,7 +289,7 @@ int signal_generator_c::general_work(int noutput_items __attribute__((unused)), gr_vector_const_void_star &input_items __attribute__((unused)), gr_vector_void_star &output_items) { - gr_complex *out = reinterpret_cast(output_items[0]); + auto *out = reinterpret_cast(output_items[0]); work_counter_++; diff --git a/src/algorithms/signal_generator/gnuradio_blocks/signal_generator_c.h b/src/algorithms/signal_generator/gnuradio_blocks/signal_generator_c.h index ddcc0f1fb..d47fc558b 100644 --- a/src/algorithms/signal_generator/gnuradio_blocks/signal_generator_c.h +++ b/src/algorithms/signal_generator/gnuradio_blocks/signal_generator_c.h @@ -35,9 +35,9 @@ #include //#include #include +#include #include #include -#include class signal_generator_c; @@ -87,8 +87,8 @@ private: unsigned int fs_in, unsigned int vector_length, float BW_BB); signal_generator_c(std::vector signal1, std::vector system, const std::vector &PRN, - const std::vector &CN0_dB, const std::vector &doppler_Hz, - const std::vector &delay_chips, const std::vector &delay_sec, bool data_flag, bool noise_flag, + std::vector CN0_dB, std::vector doppler_Hz, + std::vector delay_chips, std::vector delay_sec, bool data_flag, bool noise_flag, unsigned int fs_in, unsigned int vector_length, float BW_BB); void init(); diff --git a/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.cc b/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.cc index e34103561..a9cade7c5 100644 --- a/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.cc +++ b/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.cc @@ -31,13 +31,14 @@ */ #include "ad9361_fpga_signal_source.h" -#include "configuration_interface.h" -#include "ad9361_manager.h" #include "GPS_L1_CA.h" #include "GPS_L2C.h" +#include "ad9361_manager.h" +#include "configuration_interface.h" #include #include #include // for cout, endl +#include #ifdef __APPLE__ #include @@ -46,8 +47,8 @@ #endif Ad9361FpgaSignalSource::Ad9361FpgaSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue) + const std::string& role, unsigned int in_stream, unsigned int out_stream, + boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { std::string default_item_type = "gr_complex"; std::string default_dump_file = "./data/signal_source.dat"; diff --git a/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.h b/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.h index 89fd50449..79ebeff3e 100644 --- a/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.h +++ b/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.h @@ -32,8 +32,8 @@ #ifndef GNSS_SDR_AD9361_FPGA_SIGNAL_SOURCE_H_ #define GNSS_SDR_AD9361_FPGA_SIGNAL_SOURCE_H_ -#include "gnss_block_interface.h" #include "fpga_switch.h" +#include "gnss_block_interface.h" #include #include #include @@ -45,7 +45,7 @@ class Ad9361FpgaSignalSource : public GNSSBlockInterface { public: Ad9361FpgaSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, + const std::string& role, unsigned int in_stream, unsigned int out_stream, boost::shared_ptr queue); ~Ad9361FpgaSignalSource(); diff --git a/src/algorithms/signal_source/adapters/custom_udp_signal_source.cc b/src/algorithms/signal_source/adapters/custom_udp_signal_source.cc index 440a17252..2f2e76ef3 100644 --- a/src/algorithms/signal_source/adapters/custom_udp_signal_source.cc +++ b/src/algorithms/signal_source/adapters/custom_udp_signal_source.cc @@ -31,19 +31,20 @@ #include "custom_udp_signal_source.h" -#include "configuration_interface.h" #include "GPS_L1_CA.h" +#include "configuration_interface.h" #include #include #include +#include using google::LogMessage; CustomUDPSignalSource::CustomUDPSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue) + const std::string& role, unsigned int in_stream, unsigned int out_stream, + boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { // DUMP PARAMETERS std::string empty = ""; @@ -112,9 +113,7 @@ CustomUDPSignalSource::CustomUDPSignalSource(ConfigurationInterface* configurati } -CustomUDPSignalSource::~CustomUDPSignalSource() -{ -} +CustomUDPSignalSource::~CustomUDPSignalSource() = default; void CustomUDPSignalSource::connect(gr::top_block_sptr top_block) diff --git a/src/algorithms/signal_source/adapters/custom_udp_signal_source.h b/src/algorithms/signal_source/adapters/custom_udp_signal_source.h index fcd42071d..bec7c3d73 100644 --- a/src/algorithms/signal_source/adapters/custom_udp_signal_source.h +++ b/src/algorithms/signal_source/adapters/custom_udp_signal_source.h @@ -36,9 +36,9 @@ #include "gnss_block_interface.h" #include "gr_complex_ip_packet_source.h" #include -#include #include #include +#include #include #include #include @@ -54,7 +54,7 @@ class CustomUDPSignalSource : public GNSSBlockInterface { public: CustomUDPSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, + const std::string& role, unsigned int in_stream, unsigned int out_stream, boost::shared_ptr queue); virtual ~CustomUDPSignalSource(); diff --git a/src/algorithms/signal_source/adapters/file_signal_source.cc b/src/algorithms/signal_source/adapters/file_signal_source.cc index 8efaf2b09..bc4fb6329 100644 --- a/src/algorithms/signal_source/adapters/file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/file_signal_source.cc @@ -35,18 +35,19 @@ #include "gnss_sdr_flags.h" #include "gnss_sdr_valve.h" #include -#include // for std::cerr +#include #include #include -#include +#include // for std::cerr +#include using google::LogMessage; FileSignalSource::FileSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue) + const std::string& role, unsigned int in_streams, unsigned int out_streams, + boost::shared_ptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) { std::string default_filename = "./example_capture.dat"; std::string default_item_type = "short"; @@ -59,8 +60,8 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration, filename_ = configuration->property(role + ".filename", default_filename); // override value with commandline flag, if present - if (FLAGS_signal_source.compare("-") != 0) filename_ = FLAGS_signal_source; - if (FLAGS_s.compare("-") != 0) filename_ = FLAGS_s; + if (FLAGS_signal_source != "-") filename_ = FLAGS_signal_source; + if (FLAGS_s != "-") filename_ = FLAGS_s; item_type_ = configuration->property(role + ".item_type", default_item_type); repeat_ = configuration->property(role + ".repeat", false); @@ -74,28 +75,28 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration, bool is_complex = false; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); } - else if (item_type_.compare("float") == 0) + else if (item_type_ == "float") { item_size_ = sizeof(float); } - else if (item_type_.compare("short") == 0) + else if (item_type_ == "short") { item_size_ = sizeof(int16_t); } - else if (item_type_.compare("ishort") == 0) + else if (item_type_ == "ishort") { item_size_ = sizeof(int16_t); is_complex = true; } - else if (item_type_.compare("byte") == 0) + else if (item_type_ == "byte") { item_size_ = sizeof(int8_t); } - else if (item_type_.compare("ibyte") == 0) + else if (item_type_ == "ibyte") { item_size_ = sizeof(int8_t); is_complex = true; @@ -135,7 +136,7 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration, } catch (const std::exception& e) { - if (filename_.compare(default_filename) == 0) + if (filename_ == default_filename) { std::cerr << "The configuration file has not been found." @@ -251,9 +252,7 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration, } -FileSignalSource::~FileSignalSource() -{ -} +FileSignalSource::~FileSignalSource() = default; void FileSignalSource::connect(gr::top_block_sptr top_block) @@ -371,15 +370,9 @@ gr::basic_block_sptr FileSignalSource::get_right_block() { return valve_; } - else + if (enable_throttle_control_ == true) { - if (enable_throttle_control_ == true) - { - return throttle_; - } - else - { - return file_source_; - } + return throttle_; } + return file_source_; } diff --git a/src/algorithms/signal_source/adapters/file_signal_source.h b/src/algorithms/signal_source/adapters/file_signal_source.h index 4e1347e31..0d4658304 100644 --- a/src/algorithms/signal_source/adapters/file_signal_source.h +++ b/src/algorithms/signal_source/adapters/file_signal_source.h @@ -36,8 +36,8 @@ #define GNSS_SDR_FILE_SIGNAL_SOURCE_H_ #include "gnss_block_interface.h" -#include #include +#include #include #include #include @@ -53,7 +53,7 @@ class ConfigurationInterface; class FileSignalSource : public GNSSBlockInterface { public: - FileSignalSource(ConfigurationInterface* configuration, std::string role, + FileSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams, boost::shared_ptr queue); diff --git a/src/algorithms/signal_source/adapters/flexiband_signal_source.cc b/src/algorithms/signal_source/adapters/flexiband_signal_source.cc index 082d45973..95b3c56cd 100644 --- a/src/algorithms/signal_source/adapters/flexiband_signal_source.cc +++ b/src/algorithms/signal_source/adapters/flexiband_signal_source.cc @@ -30,9 +30,9 @@ #include "flexiband_signal_source.h" #include "configuration_interface.h" +#include #include #include -#include #include diff --git a/src/algorithms/signal_source/adapters/flexiband_signal_source.h b/src/algorithms/signal_source/adapters/flexiband_signal_source.h index dbf7e567e..54e7eeff4 100644 --- a/src/algorithms/signal_source/adapters/flexiband_signal_source.h +++ b/src/algorithms/signal_source/adapters/flexiband_signal_source.h @@ -34,11 +34,11 @@ #define FLEXIBAND_SIGNAL_SOURCE_H_ #include "gnss_block_interface.h" +#include +#include +#include #include #include -#include -#include -#include #include #include diff --git a/src/algorithms/signal_source/adapters/fmcomms2_signal_source.cc b/src/algorithms/signal_source/adapters/fmcomms2_signal_source.cc index da3b39148..8f3f5fa82 100644 --- a/src/algorithms/signal_source/adapters/fmcomms2_signal_source.cc +++ b/src/algorithms/signal_source/adapters/fmcomms2_signal_source.cc @@ -30,21 +30,22 @@ */ #include "fmcomms2_signal_source.h" -#include "configuration_interface.h" -#include "gnss_sdr_valve.h" -#include "ad9361_manager.h" #include "GPS_L1_CA.h" #include "GPS_L2C.h" +#include "ad9361_manager.h" +#include "configuration_interface.h" +#include "gnss_sdr_valve.h" #include #include #include +#include using google::LogMessage; Fmcomms2SignalSource::Fmcomms2SignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue) + const std::string& role, unsigned int in_stream, unsigned int out_stream, + boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { std::string default_item_type = "gr_complex"; std::string default_dump_file = "./data/signal_source.dat"; @@ -85,7 +86,7 @@ Fmcomms2SignalSource::Fmcomms2SignalSource(ConfigurationInterface* configuration std::cout << "LO frequency : " << freq_ << " Hz" << std::endl; std::cout << "sample rate: " << sample_rate_ << " Hz" << std::endl; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { if (RF_channels_ == 1) { diff --git a/src/algorithms/signal_source/adapters/fmcomms2_signal_source.h b/src/algorithms/signal_source/adapters/fmcomms2_signal_source.h index 050e50402..820ce1a14 100644 --- a/src/algorithms/signal_source/adapters/fmcomms2_signal_source.h +++ b/src/algorithms/signal_source/adapters/fmcomms2_signal_source.h @@ -35,9 +35,9 @@ #include "gnss_block_interface.h" #include -#include #include #include +#include #include class ConfigurationInterface; @@ -46,7 +46,7 @@ class Fmcomms2SignalSource : public GNSSBlockInterface { public: Fmcomms2SignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, + const std::string& role, unsigned int in_stream, unsigned int out_stream, boost::shared_ptr queue); virtual ~Fmcomms2SignalSource(); diff --git a/src/algorithms/signal_source/adapters/gen_signal_source.cc b/src/algorithms/signal_source/adapters/gen_signal_source.cc index 1900fdf04..69c1151c1 100644 --- a/src/algorithms/signal_source/adapters/gen_signal_source.cc +++ b/src/algorithms/signal_source/adapters/gen_signal_source.cc @@ -33,10 +33,11 @@ #include "gen_signal_source.h" #include #include +#include #include #include -#include #include +#include using google::LogMessage; @@ -44,8 +45,8 @@ using google::LogMessage; GenSignalSource::GenSignalSource(GNSSBlockInterface *signal_generator, GNSSBlockInterface *filter, std::string role, boost::shared_ptr queue) : signal_generator_(signal_generator), filter_(filter), - role_(role), - queue_(queue) + role_(std::move(role)), + queue_(std::move(queue)) { connected_ = false; } diff --git a/src/algorithms/signal_source/adapters/gn3s_signal_source.cc b/src/algorithms/signal_source/adapters/gn3s_signal_source.cc index 8867fca8a..ebf984c18 100644 --- a/src/algorithms/signal_source/adapters/gn3s_signal_source.cc +++ b/src/algorithms/signal_source/adapters/gn3s_signal_source.cc @@ -30,9 +30,9 @@ #include "gn3s_signal_source.h" #include "configuration_interface.h" +#include #include #include -#include #include diff --git a/src/algorithms/signal_source/adapters/gn3s_signal_source.h b/src/algorithms/signal_source/adapters/gn3s_signal_source.h index 42fd6e581..8fb7637f5 100644 --- a/src/algorithms/signal_source/adapters/gn3s_signal_source.h +++ b/src/algorithms/signal_source/adapters/gn3s_signal_source.h @@ -33,9 +33,9 @@ #define GNSS_SDR_GN3S_SIGNAL_SOURCE_H_ #include "gnss_block_interface.h" +#include #include #include -#include #include diff --git a/src/algorithms/signal_source/adapters/labsat_signal_source.cc b/src/algorithms/signal_source/adapters/labsat_signal_source.cc index 3fa0644a0..cf1278d9d 100644 --- a/src/algorithms/signal_source/adapters/labsat_signal_source.cc +++ b/src/algorithms/signal_source/adapters/labsat_signal_source.cc @@ -32,12 +32,14 @@ #include "configuration_interface.h" #include "labsat23_source.h" #include +#include +#include using google::LogMessage; LabsatSignalSource::LabsatSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, unsigned int out_stream, gr::msg_queue::sptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue) + const std::string& role, unsigned int in_stream, unsigned int out_stream, gr::msg_queue::sptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { std::string default_item_type = "gr_complex"; std::string default_dump_file = "./data/source.bin"; @@ -51,7 +53,7 @@ LabsatSignalSource::LabsatSignalSource(ConfigurationInterface* configuration, samples_ = configuration->property(role + ".samples", 0); filename_ = configuration->property(role + ".filename", default_filename); - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); labsat23_source_ = labsat23_make_source(filename_.c_str(), channel_selector); @@ -61,7 +63,7 @@ LabsatSignalSource::LabsatSignalSource(ConfigurationInterface* configuration, else { LOG(WARNING) << item_type_ << " unrecognized item type for LabSat source"; - item_size_ = sizeof(short); + item_size_ = sizeof(int16_t); } if (dump_) { @@ -83,9 +85,7 @@ LabsatSignalSource::LabsatSignalSource(ConfigurationInterface* configuration, } -LabsatSignalSource::~LabsatSignalSource() -{ -} +LabsatSignalSource::~LabsatSignalSource() = default; void LabsatSignalSource::connect(gr::top_block_sptr top_block) diff --git a/src/algorithms/signal_source/adapters/labsat_signal_source.h b/src/algorithms/signal_source/adapters/labsat_signal_source.h index ef11713e3..8a36f8ad5 100644 --- a/src/algorithms/signal_source/adapters/labsat_signal_source.h +++ b/src/algorithms/signal_source/adapters/labsat_signal_source.h @@ -33,9 +33,9 @@ #define GNSS_SDR_LABSAT_SIGNAL_SOURCE_H_ #include "gnss_block_interface.h" +#include #include #include -#include #include class ConfigurationInterface; @@ -47,7 +47,7 @@ class LabsatSignalSource : public GNSSBlockInterface { public: LabsatSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, + const std::string& role, unsigned int in_stream, unsigned int out_stream, gr::msg_queue::sptr queue); virtual ~LabsatSignalSource(); diff --git a/src/algorithms/signal_source/adapters/nsr_file_signal_source.cc b/src/algorithms/signal_source/adapters/nsr_file_signal_source.cc index f8f73103b..60566ed5e 100644 --- a/src/algorithms/signal_source/adapters/nsr_file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/nsr_file_signal_source.cc @@ -39,14 +39,15 @@ #include #include #include +#include using google::LogMessage; NsrFileSignalSource::NsrFileSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue) + const std::string& role, unsigned int in_streams, unsigned int out_streams, + boost::shared_ptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) { std::string default_filename = "../data/my_capture.dat"; std::string default_item_type = "byte"; @@ -57,8 +58,8 @@ NsrFileSignalSource::NsrFileSignalSource(ConfigurationInterface* configuration, filename_ = configuration->property(role + ".filename", default_filename); // override value with commandline flag, if present - if (FLAGS_signal_source.compare("-") != 0) filename_ = FLAGS_signal_source; - if (FLAGS_s.compare("-") != 0) filename_ = FLAGS_s; + if (FLAGS_signal_source != "-") filename_ = FLAGS_signal_source; + if (FLAGS_s != "-") filename_ = FLAGS_s; item_type_ = configuration->property(role + ".item_type", default_item_type); repeat_ = configuration->property(role + ".repeat", false); @@ -66,7 +67,7 @@ NsrFileSignalSource::NsrFileSignalSource(ConfigurationInterface* configuration, dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename); enable_throttle_control_ = configuration->property(role + ".enable_throttle_control", false); - if (item_type_.compare("byte") == 0) + if (item_type_ == "byte") { item_size_ = sizeof(char); } @@ -177,9 +178,7 @@ NsrFileSignalSource::NsrFileSignalSource(ConfigurationInterface* configuration, } -NsrFileSignalSource::~NsrFileSignalSource() -{ -} +NsrFileSignalSource::~NsrFileSignalSource() = default; void NsrFileSignalSource::connect(gr::top_block_sptr top_block) @@ -310,15 +309,9 @@ gr::basic_block_sptr NsrFileSignalSource::get_right_block() { return valve_; } - else + if (enable_throttle_control_ == true) { - if (enable_throttle_control_ == true) - { - return throttle_; - } - else - { - return unpack_byte_; - } + return throttle_; } + return unpack_byte_; } diff --git a/src/algorithms/signal_source/adapters/nsr_file_signal_source.h b/src/algorithms/signal_source/adapters/nsr_file_signal_source.h index c1e0f6bb4..89bc32ac0 100644 --- a/src/algorithms/signal_source/adapters/nsr_file_signal_source.h +++ b/src/algorithms/signal_source/adapters/nsr_file_signal_source.h @@ -37,8 +37,8 @@ #include "gnss_block_interface.h" #include "unpack_byte_2bit_samples.h" -#include #include +#include #include #include #include @@ -53,7 +53,7 @@ class ConfigurationInterface; class NsrFileSignalSource : public GNSSBlockInterface { public: - NsrFileSignalSource(ConfigurationInterface* configuration, std::string role, + NsrFileSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams, boost::shared_ptr queue); diff --git a/src/algorithms/signal_source/adapters/osmosdr_signal_source.cc b/src/algorithms/signal_source/adapters/osmosdr_signal_source.cc index 982847f1b..80f52a290 100644 --- a/src/algorithms/signal_source/adapters/osmosdr_signal_source.cc +++ b/src/algorithms/signal_source/adapters/osmosdr_signal_source.cc @@ -30,21 +30,22 @@ */ #include "osmosdr_signal_source.h" +#include "GPS_L1_CA.h" #include "configuration_interface.h" #include "gnss_sdr_valve.h" -#include "GPS_L1_CA.h" #include #include #include #include +#include using google::LogMessage; OsmosdrSignalSource::OsmosdrSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue) + const std::string& role, unsigned int in_stream, unsigned int out_stream, + boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { // DUMP PARAMETERS std::string empty = ""; @@ -66,11 +67,11 @@ OsmosdrSignalSource::OsmosdrSignalSource(ConfigurationInterface* configuration, osmosdr_args_ = configuration->property(role + ".osmosdr_args", std::string()); antenna_ = configuration->property(role + ".antenna", empty); - if (item_type_.compare("short") == 0) + if (item_type_ == "short") { - item_size_ = sizeof(short); + item_size_ = sizeof(int16_t); } - else if (item_type_.compare("gr_complex") == 0) + else if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); // 1. Make the driver instance @@ -130,7 +131,7 @@ OsmosdrSignalSource::OsmosdrSignalSource(ConfigurationInterface* configuration, else { LOG(WARNING) << item_type_ << " unrecognized item type. Using short."; - item_size_ = sizeof(short); + item_size_ = sizeof(int16_t); } if (samples_ != 0) @@ -157,9 +158,7 @@ OsmosdrSignalSource::OsmosdrSignalSource(ConfigurationInterface* configuration, } -OsmosdrSignalSource::~OsmosdrSignalSource() -{ -} +OsmosdrSignalSource::~OsmosdrSignalSource() = default; void OsmosdrSignalSource::driver_instance() diff --git a/src/algorithms/signal_source/adapters/osmosdr_signal_source.h b/src/algorithms/signal_source/adapters/osmosdr_signal_source.h index ac50d53ca..15f38b2a3 100644 --- a/src/algorithms/signal_source/adapters/osmosdr_signal_source.h +++ b/src/algorithms/signal_source/adapters/osmosdr_signal_source.h @@ -35,8 +35,9 @@ #include "gnss_block_interface.h" #include -#include #include +#include +#include #include #include #include @@ -52,7 +53,7 @@ class OsmosdrSignalSource : public GNSSBlockInterface { public: OsmosdrSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, + const std::string& role, unsigned int in_stream, unsigned int out_stream, boost::shared_ptr queue); virtual ~OsmosdrSignalSource(); @@ -98,7 +99,7 @@ private: std::string item_type_; size_t item_size_; - long samples_; + int64_t samples_; bool dump_; std::string dump_filename_; diff --git a/src/algorithms/signal_source/adapters/plutosdr_signal_source.cc b/src/algorithms/signal_source/adapters/plutosdr_signal_source.cc index 748760ac6..5c4c71dd9 100644 --- a/src/algorithms/signal_source/adapters/plutosdr_signal_source.cc +++ b/src/algorithms/signal_source/adapters/plutosdr_signal_source.cc @@ -29,19 +29,20 @@ */ #include "plutosdr_signal_source.h" +#include "GPS_L1_CA.h" #include "configuration_interface.h" #include "gnss_sdr_valve.h" -#include "GPS_L1_CA.h" #include #include +#include using google::LogMessage; PlutosdrSignalSource::PlutosdrSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue) + const std::string& role, unsigned int in_stream, unsigned int out_stream, + boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { std::string default_item_type = "gr_complex"; std::string default_dump_file = "./data/signal_source.dat"; @@ -63,7 +64,7 @@ PlutosdrSignalSource::PlutosdrSignalSource(ConfigurationInterface* configuration dump_ = configuration->property(role + ".dump", false); dump_filename_ = configuration->property(role + ".dump_filename", default_dump_file); - if (item_type_.compare("gr_complex") != 0) + if (item_type_ != "gr_complex") { std::cout << "Configuration error: item_type must be gr_complex" << std::endl; LOG(FATAL) << "Configuration error: item_type must be gr_complex!"; @@ -105,9 +106,7 @@ PlutosdrSignalSource::PlutosdrSignalSource(ConfigurationInterface* configuration } -PlutosdrSignalSource::~PlutosdrSignalSource() -{ -} +PlutosdrSignalSource::~PlutosdrSignalSource() = default; void PlutosdrSignalSource::connect(gr::top_block_sptr top_block) diff --git a/src/algorithms/signal_source/adapters/plutosdr_signal_source.h b/src/algorithms/signal_source/adapters/plutosdr_signal_source.h index 9b27220a1..4cedb3787 100644 --- a/src/algorithms/signal_source/adapters/plutosdr_signal_source.h +++ b/src/algorithms/signal_source/adapters/plutosdr_signal_source.h @@ -34,9 +34,9 @@ #include "gnss_block_interface.h" #include -#include #include #include +#include #include @@ -48,7 +48,7 @@ class PlutosdrSignalSource : public GNSSBlockInterface { public: PlutosdrSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, + const std::string& role, unsigned int in_stream, unsigned int out_stream, boost::shared_ptr queue); virtual ~PlutosdrSignalSource(); diff --git a/src/algorithms/signal_source/adapters/raw_array_signal_source.cc b/src/algorithms/signal_source/adapters/raw_array_signal_source.cc index 04f4c8011..b7f29a012 100644 --- a/src/algorithms/signal_source/adapters/raw_array_signal_source.cc +++ b/src/algorithms/signal_source/adapters/raw_array_signal_source.cc @@ -30,10 +30,10 @@ #include "raw_array_signal_source.h" #include "configuration_interface.h" -#include +#include #include #include -#include +#include using google::LogMessage; diff --git a/src/algorithms/signal_source/adapters/raw_array_signal_source.h b/src/algorithms/signal_source/adapters/raw_array_signal_source.h index a00be1821..9af4df30f 100644 --- a/src/algorithms/signal_source/adapters/raw_array_signal_source.h +++ b/src/algorithms/signal_source/adapters/raw_array_signal_source.h @@ -33,9 +33,9 @@ #define RAW_ARRAY_SIGNAL_SOURCE_H_ #include "gnss_block_interface.h" +#include #include #include -#include #include class ConfigurationInterface; diff --git a/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.cc b/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.cc index 5718067d7..5166840f5 100644 --- a/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.cc +++ b/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.cc @@ -31,20 +31,27 @@ */ #include "rtl_tcp_signal_source.h" +#include "GPS_L1_CA.h" #include "configuration_interface.h" #include "gnss_sdr_valve.h" -#include "GPS_L1_CA.h" #include #include +#include #include +#include using google::LogMessage; RtlTcpSignalSource::RtlTcpSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue) + const std::string& role, + unsigned int in_stream, + unsigned int out_stream, + boost::shared_ptr queue) : role_(std::move(role)), + in_stream_(in_stream), + out_stream_(out_stream), + queue_(queue) { // DUMP PARAMETERS std::string empty = ""; @@ -57,7 +64,7 @@ RtlTcpSignalSource::RtlTcpSignalSource(ConfigurationInterface* configuration, // rtl_tcp PARAMETERS std::string default_address = "127.0.0.1"; - short default_port = 1234; + int16_t default_port = 1234; AGC_enabled_ = configuration->property(role + ".AGC_enabled", true); freq_ = configuration->property(role + ".freq", GPS_L1_FREQ_HZ); gain_ = configuration->property(role + ".gain", 40.0); @@ -69,11 +76,11 @@ RtlTcpSignalSource::RtlTcpSignalSource(ConfigurationInterface* configuration, port_ = configuration->property(role + ".port", default_port); flip_iq_ = configuration->property(role + ".flip_iq", false); - if (item_type_.compare("short") == 0) + if (item_type_ == "short") { - item_size_ = sizeof(short); + item_size_ = sizeof(int16_t); } - else if (item_type_.compare("gr_complex") == 0) + else if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); // 1. Make the gr block @@ -112,7 +119,7 @@ RtlTcpSignalSource::RtlTcpSignalSource(ConfigurationInterface* configuration, else { LOG(WARNING) << item_type_ << " unrecognized item type. Using short."; - item_size_ = sizeof(short); + item_size_ = sizeof(int16_t); } if (samples_ != 0) @@ -139,9 +146,7 @@ RtlTcpSignalSource::RtlTcpSignalSource(ConfigurationInterface* configuration, } -RtlTcpSignalSource::~RtlTcpSignalSource() -{ -} +RtlTcpSignalSource::~RtlTcpSignalSource() = default; void RtlTcpSignalSource::MakeBlock() diff --git a/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.h b/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.h index a1966c3ad..3a89bb088 100644 --- a/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.h +++ b/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.h @@ -32,13 +32,13 @@ #ifndef GNSS_SDR_RTL_TCP_SIGNAL_SOURCE_H #define GNSS_SDR_RTL_TCP_SIGNAL_SOURCE_H -#include "rtl_tcp_signal_source_c.h" #include "gnss_block_interface.h" +#include "rtl_tcp_signal_source_c.h" #include -#include -#include #include +#include #include +#include #include #include @@ -54,8 +54,10 @@ class RtlTcpSignalSource : public GNSSBlockInterface { public: RtlTcpSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, - unsigned int out_stream, boost::shared_ptr queue); + const std::string& role, + unsigned int in_stream, + unsigned int out_stream, + boost::shared_ptr queue); virtual ~RtlTcpSignalSource(); diff --git a/src/algorithms/signal_source/adapters/spir_file_signal_source.cc b/src/algorithms/signal_source/adapters/spir_file_signal_source.cc index 6ddeca2c3..d5692e434 100644 --- a/src/algorithms/signal_source/adapters/spir_file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/spir_file_signal_source.cc @@ -38,14 +38,15 @@ #include #include #include +#include using google::LogMessage; SpirFileSignalSource::SpirFileSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue) + const std::string& role, unsigned int in_streams, unsigned int out_streams, + boost::shared_ptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) { std::string default_filename = "../data/my_capture.dat"; std::string default_item_type = "int"; @@ -56,8 +57,8 @@ SpirFileSignalSource::SpirFileSignalSource(ConfigurationInterface* configuration filename_ = configuration->property(role + ".filename", default_filename); // override value with commandline flag, if present - if (FLAGS_signal_source.compare("-") != 0) filename_ = FLAGS_signal_source; - if (FLAGS_s.compare("-") != 0) filename_ = FLAGS_s; + if (FLAGS_signal_source != "-") filename_ = FLAGS_signal_source; + if (FLAGS_s != "-") filename_ = FLAGS_s; item_type_ = configuration->property(role + ".item_type", default_item_type); repeat_ = configuration->property(role + ".repeat", false); @@ -65,7 +66,7 @@ SpirFileSignalSource::SpirFileSignalSource(ConfigurationInterface* configuration dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename); enable_throttle_control_ = configuration->property(role + ".enable_throttle_control", false); - if (item_type_.compare("int") == 0) + if (item_type_ == "int") { item_size_ = sizeof(int); } @@ -176,9 +177,7 @@ SpirFileSignalSource::SpirFileSignalSource(ConfigurationInterface* configuration } -SpirFileSignalSource::~SpirFileSignalSource() -{ -} +SpirFileSignalSource::~SpirFileSignalSource() = default; void SpirFileSignalSource::connect(gr::top_block_sptr top_block) @@ -309,15 +308,9 @@ gr::basic_block_sptr SpirFileSignalSource::get_right_block() { return valve_; } - else + if (enable_throttle_control_ == true) { - if (enable_throttle_control_ == true) - { - return throttle_; - } - else - { - return unpack_intspir_; - } + return throttle_; } + return unpack_intspir_; } diff --git a/src/algorithms/signal_source/adapters/spir_file_signal_source.h b/src/algorithms/signal_source/adapters/spir_file_signal_source.h index 70a7eb659..659f5b19a 100644 --- a/src/algorithms/signal_source/adapters/spir_file_signal_source.h +++ b/src/algorithms/signal_source/adapters/spir_file_signal_source.h @@ -34,8 +34,8 @@ #include "gnss_block_interface.h" #include "unpack_intspir_1bit_samples.h" -#include #include +#include #include #include #include @@ -50,7 +50,7 @@ class ConfigurationInterface; class SpirFileSignalSource : public GNSSBlockInterface { public: - SpirFileSignalSource(ConfigurationInterface* configuration, std::string role, + SpirFileSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams, boost::shared_ptr queue); diff --git a/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.cc b/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.cc index 8b124a3fd..ff8f45411 100644 --- a/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.cc @@ -36,13 +36,14 @@ #include #include #include +#include using google::LogMessage; SpirGSS6450FileSignalSource::SpirGSS6450FileSignalSource(ConfigurationInterface* configuration, - std::string role, uint32_t in_streams, uint32_t out_streams, gr::msg_queue::sptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue) + const std::string& role, uint32_t in_streams, uint32_t out_streams, gr::msg_queue::sptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) { std::string default_filename = "../data/my_capture.dat"; std::string default_dump_filename = "../data/my_capture_dump.dat"; @@ -153,7 +154,8 @@ SpirGSS6450FileSignalSource::SpirGSS6450FileSignalSource(ConfigurationInterface* valve_vec_.push_back(gnss_sdr_make_valve(sizeof(gr_complex), samples_, queue_)); if (dump_) { - sink_vec_.push_back(gr::blocks::file_sink::make(sizeof(gr_complex), dump_filename_.c_str())); + std::string tmp_str = dump_filename_ + "_ch" + std::to_string(i); + sink_vec_.push_back(gr::blocks::file_sink::make(sizeof(gr_complex), tmp_str.c_str())); } if (enable_throttle_control_) { @@ -180,9 +182,7 @@ SpirGSS6450FileSignalSource::SpirGSS6450FileSignalSource(ConfigurationInterface* } -SpirGSS6450FileSignalSource::~SpirGSS6450FileSignalSource() -{ -} +SpirGSS6450FileSignalSource::~SpirGSS6450FileSignalSource() = default; void SpirGSS6450FileSignalSource::connect(gr::top_block_sptr top_block) diff --git a/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.h b/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.h index a37a4fe7f..71eb9c9df 100644 --- a/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.h +++ b/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.h @@ -35,12 +35,12 @@ #include "gnss_block_interface.h" #include "gnss_sdr_valve.h" #include "unpack_spir_gss6450_samples.h" -#include -#include -#include #include -#include #include +#include +#include +#include +#include #include #include #include @@ -57,7 +57,7 @@ class ConfigurationInterface; class SpirGSS6450FileSignalSource : public GNSSBlockInterface { public: - SpirGSS6450FileSignalSource(ConfigurationInterface* configuration, std::string role, + SpirGSS6450FileSignalSource(ConfigurationInterface* configuration, const std::string& role, uint32_t in_streams, uint32_t out_streams, gr::msg_queue::sptr queue); virtual ~SpirGSS6450FileSignalSource(); diff --git a/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.cc b/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.cc index 78a08500c..7115771e9 100644 --- a/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.cc @@ -38,14 +38,20 @@ #include #include #include +#include using google::LogMessage; TwoBitCpxFileSignalSource::TwoBitCpxFileSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue) + const std::string& role, + unsigned int in_streams, + unsigned int out_streams, + boost::shared_ptr queue) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams), + queue_(std::move(queue)) { std::string default_filename = "../data/my_capture.dat"; std::string default_item_type = "byte"; @@ -56,8 +62,8 @@ TwoBitCpxFileSignalSource::TwoBitCpxFileSignalSource(ConfigurationInterface* con filename_ = configuration->property(role + ".filename", default_filename); // override value with commandline flag, if present - if (FLAGS_signal_source.compare("-") != 0) filename_ = FLAGS_signal_source; - if (FLAGS_s.compare("-") != 0) filename_ = FLAGS_s; + if (FLAGS_signal_source != "-") filename_ = FLAGS_signal_source; + if (FLAGS_s != "-") filename_ = FLAGS_s; item_type_ = configuration->property(role + ".item_type", default_item_type); repeat_ = configuration->property(role + ".repeat", false); @@ -65,7 +71,7 @@ TwoBitCpxFileSignalSource::TwoBitCpxFileSignalSource(ConfigurationInterface* con dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename); enable_throttle_control_ = configuration->property(role + ".enable_throttle_control", false); - if (item_type_.compare("byte") == 0) + if (item_type_ == "byte") { item_size_ = sizeof(char); } @@ -177,9 +183,7 @@ TwoBitCpxFileSignalSource::TwoBitCpxFileSignalSource(ConfigurationInterface* con } -TwoBitCpxFileSignalSource::~TwoBitCpxFileSignalSource() -{ -} +TwoBitCpxFileSignalSource::~TwoBitCpxFileSignalSource() = default; void TwoBitCpxFileSignalSource::connect(gr::top_block_sptr top_block) @@ -314,15 +318,9 @@ gr::basic_block_sptr TwoBitCpxFileSignalSource::get_right_block() { return valve_; } - else + if (enable_throttle_control_ == true) { - if (enable_throttle_control_ == true) - { - return throttle_; - } - else - { - return unpack_byte_; - } + return throttle_; } + return unpack_byte_; } diff --git a/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.h b/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.h index c0f58687e..a66a87965 100644 --- a/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.h +++ b/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.h @@ -36,12 +36,13 @@ #include "gnss_block_interface.h" #include "unpack_byte_2bit_cpx_samples.h" -#include #include +#include +#include #include #include #include -#include +#include #include @@ -54,8 +55,10 @@ class ConfigurationInterface; class TwoBitCpxFileSignalSource : public GNSSBlockInterface { public: - TwoBitCpxFileSignalSource(ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams, + TwoBitCpxFileSignalSource(ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_streams, + unsigned int out_streams, boost::shared_ptr queue); virtual ~TwoBitCpxFileSignalSource(); @@ -97,19 +100,19 @@ public: return repeat_; } - inline long sampling_frequency() const + inline int64_t sampling_frequency() const { return sampling_frequency_; } - inline long samples() const + inline uint64_t samples() const { return samples_; } private: - unsigned long long samples_; - long sampling_frequency_; + uint64_t samples_; + int64_t sampling_frequency_; std::string filename_; std::string item_type_; bool repeat_; diff --git a/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.cc b/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.cc index cdde62a3b..9355537ce 100644 --- a/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.cc @@ -40,14 +40,20 @@ #include #include #include +#include using google::LogMessage; TwoBitPackedFileSignalSource::TwoBitPackedFileSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue) + const std::string& role, + unsigned int in_streams, + unsigned int out_streams, + boost::shared_ptr queue) : role_(role), + in_streams_(in_streams), + out_streams_(out_streams), + queue_(std::move(queue)) { std::string default_filename = "../data/my_capture.dat"; std::string default_item_type = "byte"; @@ -55,13 +61,13 @@ TwoBitPackedFileSignalSource::TwoBitPackedFileSignalSource(ConfigurationInterfac std::string default_sample_type = "real"; double default_seconds_to_skip = 0.0; - samples_ = configuration->property(role + ".samples", 0L); + samples_ = configuration->property(role + ".samples", 0); sampling_frequency_ = configuration->property(role + ".sampling_frequency", 0); filename_ = configuration->property(role + ".filename", default_filename); // override value with commandline flag, if present - if (FLAGS_signal_source.compare("-") != 0) filename_ = FLAGS_signal_source; - if (FLAGS_s.compare("-") != 0) filename_ = FLAGS_s; + if (FLAGS_signal_source != "-") filename_ = FLAGS_signal_source; + if (FLAGS_s != "-") filename_ = FLAGS_s; item_type_ = configuration->property(role + ".item_type", default_item_type); big_endian_items_ = configuration->property(role + ".big_endian_items", true); @@ -72,19 +78,19 @@ TwoBitPackedFileSignalSource::TwoBitPackedFileSignalSource(ConfigurationInterfac dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename); enable_throttle_control_ = configuration->property(role + ".enable_throttle_control", false); double seconds_to_skip = configuration->property(role + ".seconds_to_skip", default_seconds_to_skip); - long bytes_to_skip = 0; + int64_t bytes_to_skip = 0; - if (item_type_.compare("byte") == 0) + if (item_type_ == "byte") { item_size_ = sizeof(char); } - else if (item_type_.compare("short") == 0) + else if (item_type_ == "short") { // If we have shorts stored in little endian format, might as // well read them in as bytes. if (big_endian_items_) { - item_size_ = sizeof(short); + item_size_ = sizeof(int16_t); } else { @@ -97,16 +103,16 @@ TwoBitPackedFileSignalSource::TwoBitPackedFileSignalSource(ConfigurationInterfac item_size_ = sizeof(char); } - if (sample_type_.compare("real") == 0) + if (sample_type_ == "real") { is_complex_ = false; } - else if (sample_type_.compare("iq") == 0) + else if (sample_type_ == "iq") { is_complex_ = true; reverse_interleaving_ = false; } - else if (sample_type_.compare("qi") == 0) + else if (sample_type_ == "qi") { is_complex_ = true; reverse_interleaving_ = true; @@ -122,7 +128,7 @@ TwoBitPackedFileSignalSource::TwoBitPackedFileSignalSource(ConfigurationInterfac if (seconds_to_skip > 0) { - bytes_to_skip = static_cast( + bytes_to_skip = static_cast( seconds_to_skip * sampling_frequency_ / 4); if (is_complex_) { @@ -241,9 +247,7 @@ TwoBitPackedFileSignalSource::TwoBitPackedFileSignalSource(ConfigurationInterfac } -TwoBitPackedFileSignalSource::~TwoBitPackedFileSignalSource() -{ -} +TwoBitPackedFileSignalSource::~TwoBitPackedFileSignalSource() = default; void TwoBitPackedFileSignalSource::connect(gr::top_block_sptr top_block) diff --git a/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.h b/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.h index 2a1db00bc..1e98d737b 100644 --- a/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.h +++ b/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.h @@ -37,12 +37,13 @@ #include "gnss_block_interface.h" #include "unpack_2bit_samples.h" -#include #include +#include +#include #include #include #include -#include +#include #include @@ -55,7 +56,7 @@ class ConfigurationInterface; class TwoBitPackedFileSignalSource : public GNSSBlockInterface { public: - TwoBitPackedFileSignalSource(ConfigurationInterface* configuration, std::string role, + TwoBitPackedFileSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams, boost::shared_ptr queue); @@ -98,12 +99,12 @@ public: return repeat_; } - inline long sampling_frequency() const + inline int64_t sampling_frequency() const { return sampling_frequency_; } - inline long samples() const + inline uint64_t samples() const { return samples_; } @@ -129,8 +130,8 @@ public: } private: - unsigned long long samples_; - long sampling_frequency_; + uint64_t samples_; + int64_t sampling_frequency_; std::string filename_; std::string item_type_; bool repeat_; diff --git a/src/algorithms/signal_source/adapters/uhd_signal_source.cc b/src/algorithms/signal_source/adapters/uhd_signal_source.cc index eaa5f078b..54a353837 100644 --- a/src/algorithms/signal_source/adapters/uhd_signal_source.cc +++ b/src/algorithms/signal_source/adapters/uhd_signal_source.cc @@ -29,21 +29,22 @@ */ #include "uhd_signal_source.h" +#include "GPS_L1_CA.h" #include "configuration_interface.h" #include "gnss_sdr_valve.h" -#include "GPS_L1_CA.h" #include -#include #include +#include #include #include +#include using google::LogMessage; UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue) + const std::string& role, unsigned int in_stream, unsigned int out_stream, + boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { // DUMP PARAMETERS std::string empty = ""; @@ -57,13 +58,13 @@ UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration, // available transports on the system (ethernet, usb...). // To narrow down the discovery process to a particular device, // specify a transport key/value pair specific to your device. - if (empty.compare(device_address_) != 0) // if not empty + if (empty != device_address_) // if not empty { dev_addr["addr"] = device_address_; } //filter the device by serial number if required (useful for USB devices) std::string device_serial = configuration->property(role + ".device_serial", empty); - if (empty.compare(device_serial) != 0) // if not empty + if (empty != device_serial) // if not empty { dev_addr["serial"] = device_serial; } @@ -91,14 +92,14 @@ UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration, for (int i = 0; i < RF_channels_; i++) { // Single RF channel UHD operation (backward compatible config file format) - samples_.push_back(configuration->property(role + ".samples" + boost::lexical_cast(i), 0)); - dump_.push_back(configuration->property(role + ".dump" + boost::lexical_cast(i), false)); - dump_filename_.push_back(configuration->property(role + ".dump_filename" + boost::lexical_cast(i), default_dump_file)); + samples_.push_back(configuration->property(role + ".samples" + std::to_string(i), 0)); + dump_.push_back(configuration->property(role + ".dump" + std::to_string(i), false)); + dump_filename_.push_back(configuration->property(role + ".dump_filename" + std::to_string(i), default_dump_file)); - freq_.push_back(configuration->property(role + ".freq" + boost::lexical_cast(i), GPS_L1_FREQ_HZ)); - gain_.push_back(configuration->property(role + ".gain" + boost::lexical_cast(i), 50.0)); + freq_.push_back(configuration->property(role + ".freq" + std::to_string(i), GPS_L1_FREQ_HZ)); + gain_.push_back(configuration->property(role + ".gain" + std::to_string(i), 50.0)); - IF_bandwidth_hz_.push_back(configuration->property(role + ".IF_bandwidth_hz" + boost::lexical_cast(i), sample_rate_ / 2)); + IF_bandwidth_hz_.push_back(configuration->property(role + ".IF_bandwidth_hz" + std::to_string(i), sample_rate_ / 2)); } } // 1. Make the uhd driver instance @@ -111,17 +112,17 @@ UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration, // fc32: Complex floating point (32-bit floats) range [-1.0, +1.0]. // sc16: Complex signed integer (16-bit integers) range [-32768, +32767]. // sc8: Complex signed integer (8-bit integers) range [-128, 127]. - if (item_type_.compare("cbyte") == 0) + if (item_type_ == "cbyte") { item_size_ = sizeof(lv_8sc_t); uhd_stream_args_ = uhd::stream_args_t("sc8"); } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { item_size_ = sizeof(lv_16sc_t); uhd_stream_args_ = uhd::stream_args_t("sc16"); } - else if (item_type_.compare("gr_complex") == 0) + else if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); uhd_stream_args_ = uhd::stream_args_t("fc32"); @@ -239,9 +240,7 @@ UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration, } -UhdSignalSource::~UhdSignalSource() -{ -} +UhdSignalSource::~UhdSignalSource() = default; void UhdSignalSource::connect(gr::top_block_sptr top_block) @@ -315,8 +314,5 @@ gr::basic_block_sptr UhdSignalSource::get_right_block(int RF_channel) { return valve_.at(RF_channel); } - else - { - return uhd_source_; - } + return uhd_source_; } diff --git a/src/algorithms/signal_source/adapters/uhd_signal_source.h b/src/algorithms/signal_source/adapters/uhd_signal_source.h index bfe13ddb1..68d6e6b76 100644 --- a/src/algorithms/signal_source/adapters/uhd_signal_source.h +++ b/src/algorithms/signal_source/adapters/uhd_signal_source.h @@ -33,10 +33,10 @@ #include "gnss_block_interface.h" #include -#include -#include #include +#include #include +#include #include #include @@ -50,7 +50,7 @@ class UhdSignalSource : public GNSSBlockInterface { public: UhdSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, + const std::string& role, unsigned int in_stream, unsigned int out_stream, boost::shared_ptr queue); virtual ~UhdSignalSource(); diff --git a/src/algorithms/signal_source/gnuradio_blocks/gr_complex_ip_packet_source.cc b/src/algorithms/signal_source/gnuradio_blocks/gr_complex_ip_packet_source.cc index 034d2b488..ba6a8ec3e 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/gr_complex_ip_packet_source.cc +++ b/src/algorithms/signal_source/gnuradio_blocks/gr_complex_ip_packet_source.cc @@ -32,7 +32,8 @@ #include "gr_complex_ip_packet_source.h" #include - +#include +#include const int FIFO_SIZE = 1472000; @@ -76,15 +77,15 @@ typedef struct gr_udp_header gr_complex_ip_packet_source::sptr gr_complex_ip_packet_source::make(std::string src_device, - std::string origin_address, + const std::string &origin_address, int udp_port, int udp_packet_size, int n_baseband_channels, - std::string wire_sample_type, + const std::string &wire_sample_type, size_t item_size, bool IQ_swap_) { - return gnuradio::get_initial_sptr(new gr_complex_ip_packet_source(src_device, + return gnuradio::get_initial_sptr(new gr_complex_ip_packet_source(std::move(src_device), origin_address, udp_port, udp_packet_size, @@ -99,11 +100,11 @@ gr_complex_ip_packet_source::make(std::string src_device, * The private constructor */ gr_complex_ip_packet_source::gr_complex_ip_packet_source(std::string src_device, - __attribute__((unused)) std::string origin_address, + __attribute__((unused)) const std::string &origin_address, int udp_port, int udp_packet_size, int n_baseband_channels, - std::string wire_sample_type, + const std::string &wire_sample_type, size_t item_size, bool IQ_swap_) : gr::sync_block("gr_complex_ip_packet_source", @@ -113,12 +114,12 @@ gr_complex_ip_packet_source::gr_complex_ip_packet_source(std::string src_device, std::cout << "Start Ethernet packet capture\n"; d_n_baseband_channels = n_baseband_channels; - if (wire_sample_type.compare("cbyte") == 0) + if (wire_sample_type == "cbyte") { d_wire_sample_type = 1; d_bytes_per_sample = d_n_baseband_channels * 2; } - else if (wire_sample_type.compare("c4bits") == 0) + else if (wire_sample_type == "c4bits") { d_wire_sample_type = 2; d_bytes_per_sample = d_n_baseband_channels; @@ -129,7 +130,7 @@ gr_complex_ip_packet_source::gr_complex_ip_packet_source(std::string src_device, exit(0); } std::cout << "d_wire_sample_type:" << d_wire_sample_type << std::endl; - d_src_device = src_device; + d_src_device = std::move(src_device); d_udp_port = udp_port; d_udp_payload_size = udp_packet_size; d_fifo_full = false; @@ -142,8 +143,8 @@ gr_complex_ip_packet_source::gr_complex_ip_packet_source(std::string src_device, d_item_size = item_size; d_IQ_swap = IQ_swap_; d_sock_raw = 0; - d_pcap_thread = NULL; - descr = NULL; + d_pcap_thread = nullptr; + descr = nullptr; memset(reinterpret_cast(&si_me), 0, sizeof(si_me)); } @@ -171,7 +172,7 @@ bool gr_complex_ip_packet_source::start() bool gr_complex_ip_packet_source::stop() { std::cout << "gr_complex_ip_packet_source STOP\n"; - if (descr != NULL) + if (descr != nullptr) { pcap_breakloop(descr); d_pcap_thread->join(); @@ -187,7 +188,7 @@ bool gr_complex_ip_packet_source::open() boost::mutex::scoped_lock lock(d_mutex); // hold mutex for duration of this function // open device for reading descr = pcap_open_live(d_src_device.c_str(), 1500, 1, 1000, errbuf); - if (descr == NULL) + if (descr == nullptr) { std::cout << "Error opening Ethernet device " << d_src_device << std::endl; std::cout << "Fatal Error in pcap_open_live(): " << std::string(errbuf) << std::endl; @@ -220,7 +221,7 @@ bool gr_complex_ip_packet_source::open() gr_complex_ip_packet_source::~gr_complex_ip_packet_source() { - if (d_pcap_thread != NULL) + if (d_pcap_thread != nullptr) { delete d_pcap_thread; } @@ -232,7 +233,7 @@ gr_complex_ip_packet_source::~gr_complex_ip_packet_source() void gr_complex_ip_packet_source::static_pcap_callback(u_char *args, const struct pcap_pkthdr *pkthdr, const u_char *packet) { - gr_complex_ip_packet_source *bridge = reinterpret_cast(args); + auto *bridge = reinterpret_cast(args); bridge->pcap_callback(args, pkthdr, packet); } @@ -327,22 +328,22 @@ void gr_complex_ip_packet_source::demux_samples(gr_vector_void_star output_items switch (d_wire_sample_type) { case 1: // interleaved byte samples - for (long unsigned int i = 0; i < output_items.size(); i++) + for (auto &output_item : output_items) { real = fifo_buff[fifo_read_ptr++]; imag = fifo_buff[fifo_read_ptr++]; if (d_IQ_swap) { - static_cast(output_items[i])[n] = gr_complex(real, imag); + static_cast(output_item)[n] = gr_complex(real, imag); } else { - static_cast(output_items[i])[n] = gr_complex(imag, real); + static_cast(output_item)[n] = gr_complex(imag, real); } } break; case 2: // 4-bit samples - for (long unsigned int i = 0; i < output_items.size(); i++) + for (auto &output_item : output_items) { tmp_char2 = fifo_buff[fifo_read_ptr] & 0x0F; if (tmp_char2 >= 8) @@ -365,11 +366,11 @@ void gr_complex_ip_packet_source::demux_samples(gr_vector_void_star output_items } if (d_IQ_swap) { - static_cast(output_items[i])[n] = gr_complex(imag, real); + static_cast(output_item)[n] = gr_complex(imag, real); } else { - static_cast(output_items[i])[n] = gr_complex(real, imag); + static_cast(output_item)[n] = gr_complex(real, imag); } } break; @@ -390,7 +391,7 @@ int gr_complex_ip_packet_source::work(int noutput_items, boost::mutex::scoped_lock lock(d_mutex); // hold mutex for duration of this function if (fifo_items == 0) return 0; - if (output_items.size() > static_cast(d_n_baseband_channels)) + if (output_items.size() > static_cast(d_n_baseband_channels)) { std::cout << "Configuration error: more baseband channels connected than the available in the UDP source\n"; exit(0); @@ -439,7 +440,7 @@ int gr_complex_ip_packet_source::work(int noutput_items, // update fifo items fifo_items = fifo_items - bytes_requested; - for (long unsigned int n = 0; n < output_items.size(); n++) + for (uint64_t n = 0; n < output_items.size(); n++) { produce(static_cast(n), num_samples_readed); } diff --git a/src/algorithms/signal_source/gnuradio_blocks/gr_complex_ip_packet_source.h b/src/algorithms/signal_source/gnuradio_blocks/gr_complex_ip_packet_source.h index 0661e0911..d008e1314 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/gr_complex_ip_packet_source.h +++ b/src/algorithms/signal_source/gnuradio_blocks/gr_complex_ip_packet_source.h @@ -33,13 +33,13 @@ #ifndef INCLUDED_GR_COMPLEX_IP_PACKET_SOURCE_H #define INCLUDED_GR_COMPLEX_IP_PACKET_SOURCE_H -#include #include -#include +#include #include -#include #include +#include #include +#include #include #include @@ -84,19 +84,19 @@ private: public: typedef boost::shared_ptr sptr; static sptr make(std::string src_device, - std::string origin_address, + const std::string &origin_address, int udp_port, int udp_packet_size, int n_baseband_channels, - std::string wire_sample_type, + const std::string &wire_sample_type, size_t item_size, bool IQ_swap_); gr_complex_ip_packet_source(std::string src_device, - std::string origin_address, + const std::string &origin_address, int udp_port, int udp_packet_size, int n_baseband_channels, - std::string wire_sample_type, + const std::string &wire_sample_type, size_t item_size, bool IQ_swap_); ~gr_complex_ip_packet_source(); diff --git a/src/algorithms/signal_source/gnuradio_blocks/labsat23_source.cc b/src/algorithms/signal_source/gnuradio_blocks/labsat23_source.cc index 34731a1c1..2ae97cd1d 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/labsat23_source.cc +++ b/src/algorithms/signal_source/gnuradio_blocks/labsat23_source.cc @@ -172,7 +172,7 @@ int labsat23_source::general_work(int noutput_items, __attribute__((unused)) gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - gr_complex *out = reinterpret_cast(output_items[0]); + auto *out = reinterpret_cast(output_items[0]); if (d_header_parsed == false) { @@ -300,7 +300,7 @@ int labsat23_source::general_work(int noutput_items, return -1; } - //check if the selected channel in config file match the file encoding + // check if the selected channel in config file match the file encoding if (d_channel_selector_config == 2 and d_channel_selector != 0) { std::cout << "Labsat source channel config inconsistency: channel 2 is selected but the file has only one channel" << std::endl; @@ -314,7 +314,7 @@ int labsat23_source::general_work(int noutput_items, return -1; } byte_counter++; - uint8_t quantization = static_cast(memblock[byte_counter]); + auto quantization = static_cast(memblock[byte_counter]); switch (quantization) { case 1: @@ -327,7 +327,7 @@ int labsat23_source::general_work(int noutput_items, std::cout << "Unknown quantization ID " << static_cast(quantization) << std::endl; } byte_counter++; - uint8_t channel_a_constellation = static_cast(memblock[byte_counter]); + auto channel_a_constellation = static_cast(memblock[byte_counter]); switch (channel_a_constellation) { case 0: @@ -343,7 +343,7 @@ int labsat23_source::general_work(int noutput_items, std::cout << "Unknown channel A constellation ID " << static_cast(channel_a_constellation) << std::endl; } byte_counter++; - uint8_t channel_b_constellation = static_cast(memblock[byte_counter]); + auto channel_b_constellation = static_cast(memblock[byte_counter]); switch (channel_b_constellation) { case 0: @@ -359,138 +359,128 @@ int labsat23_source::general_work(int noutput_items, std::cout << "Unknown channel B constellation ID " << static_cast(channel_b_constellation) << std::endl; } - //end of header + // end of header d_header_parsed = true; - //seek file to the first signal sample + // seek file to the first signal sample binary_input_file->clear(); binary_input_file->seekg(header_bytes, binary_input_file->beg); return 0; } - else - { - std::cout << "Labsat file header error: section 2 is not available." << std::endl; - return -1; - } - } - else - { - std::cout << "Labsat file read error: file is empty." << std::endl; + std::cout << "Labsat file header error: section 2 is not available." << std::endl; return -1; } + std::cout << "Labsat file read error: file is empty." << std::endl; + return -1; } - else + + + // ready to start reading samples + switch (d_bits_per_sample) { - //ready to start reading samples - switch (d_bits_per_sample) - { - case 2: + case 2: + { + switch (d_channel_selector) { - switch (d_channel_selector) - { - case 0: - // dual channel 2 bits per complex sample - break; - default: - //single channel 2 bits per complex sample (1 bit I + 1 bit Q, 8 samples per int16) - int n_int16_to_read = noutput_items / 8; - if (n_int16_to_read > 0) - { - int16_t memblock[n_int16_to_read]; - binary_input_file->read(reinterpret_cast(memblock), n_int16_to_read * 2); - n_int16_to_read = binary_input_file->gcount() / 2; //from bytes to int16 - if (n_int16_to_read > 0) - { - int output_pointer = 0; - for (int i = 0; i < n_int16_to_read; i++) - { - decode_samples_one_channel(memblock[i], &out[output_pointer], d_bits_per_sample); - output_pointer += 8; - } - return output_pointer; - } - else - { - //trigger the read of the next file in the sequence - std::cout << "End of current file, reading the next Labsat file in sequence: " << generate_filename() << std::endl; - - d_current_file_number++; - binary_input_file->close(); - binary_input_file->open(generate_filename().c_str(), std::ios::in | std::ios::binary); - if (binary_input_file->is_open()) - { - std::cout << "Labsat file source is reading samples from " << generate_filename() << std::endl; - } - else - { - std::cout << "Last file reached, LabSat source stop" << std::endl; - return -1; - } - } - } - else - { - return 0; - } - }; + case 0: + // dual channel 2 bits per complex sample break; - } - case 4: - { - switch (d_channel_selector) + default: + // single channel 2 bits per complex sample (1 bit I + 1 bit Q, 8 samples per int16) + int n_int16_to_read = noutput_items / 8; + if (n_int16_to_read > 0) { - case 0: - // dual channel - break; - default: - //single channel 4 bits per complex sample (2 bit I + 2 bit Q, 4 samples per int16) - int n_int16_to_read = noutput_items / 4; + int16_t memblock[n_int16_to_read]; + binary_input_file->read(reinterpret_cast(memblock), n_int16_to_read * 2); + n_int16_to_read = binary_input_file->gcount() / 2; //from bytes to int16 if (n_int16_to_read > 0) { - int16_t memblock[n_int16_to_read]; - binary_input_file->read(reinterpret_cast(memblock), n_int16_to_read * 2); - n_int16_to_read = binary_input_file->gcount() / 2; //from bytes to int16 - if (n_int16_to_read > 0) + int output_pointer = 0; + for (int i = 0; i < n_int16_to_read; i++) { - int output_pointer = 0; - for (int i = 0; i < n_int16_to_read; i++) - { - decode_samples_one_channel(memblock[i], &out[output_pointer], d_bits_per_sample); - output_pointer += 4; - } - return output_pointer; + decode_samples_one_channel(memblock[i], &out[output_pointer], d_bits_per_sample); + output_pointer += 8; } - else - { - //trigger the read of the next file in the sequence - std::cout << "End of current file, reading the next Labsat file in sequence: " << generate_filename() << std::endl; + return output_pointer; + } - d_current_file_number++; - binary_input_file->close(); - binary_input_file->open(generate_filename().c_str(), std::ios::in | std::ios::binary); - if (binary_input_file->is_open()) - { - std::cout << "Labsat file source is reading samples from " << generate_filename() << std::endl; - } - else - { - std::cout << "Last file reached, LabSat source stop" << std::endl; - return -1; - } - } + // trigger the read of the next file in the sequence + std::cout << "End of current file, reading the next Labsat file in sequence: " << generate_filename() << std::endl; + + d_current_file_number++; + binary_input_file->close(); + binary_input_file->open(generate_filename().c_str(), std::ios::in | std::ios::binary); + if (binary_input_file->is_open()) + { + std::cout << "Labsat file source is reading samples from " << generate_filename() << std::endl; } else { - return 0; + std::cout << "Last file reached, LabSat source stop" << std::endl; + return -1; } } - break; - } - default: + else + { + return 0; + } + }; + break; + } + case 4: + { + switch (d_channel_selector) { - return -1; + case 0: + // dual channel + break; + default: + // single channel 4 bits per complex sample (2 bit I + 2 bit Q, 4 samples per int16) + int n_int16_to_read = noutput_items / 4; + if (n_int16_to_read > 0) + { + int16_t memblock[n_int16_to_read]; + binary_input_file->read(reinterpret_cast(memblock), n_int16_to_read * 2); + n_int16_to_read = binary_input_file->gcount() / 2; //from bytes to int16 + if (n_int16_to_read > 0) + { + int output_pointer = 0; + for (int i = 0; i < n_int16_to_read; i++) + { + decode_samples_one_channel(memblock[i], &out[output_pointer], d_bits_per_sample); + output_pointer += 4; + } + return output_pointer; + } + + // trigger the read of the next file in the sequence + std::cout << "End of current file, reading the next Labsat file in sequence: " << generate_filename() << std::endl; + + d_current_file_number++; + binary_input_file->close(); + binary_input_file->open(generate_filename().c_str(), std::ios::in | std::ios::binary); + if (binary_input_file->is_open()) + { + std::cout << "Labsat file source is reading samples from " << generate_filename() << std::endl; + } + else + { + std::cout << "Last file reached, LabSat source stop" << std::endl; + return -1; + } + } + else + { + return 0; + } } - } + break; + } + default: + { + return -1; + } } + std::cout << "Warning!!" << std::endl; return 0; } diff --git a/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.cc b/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.cc index 71c09a8c8..f43f3e90c 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.cc +++ b/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.cc @@ -32,8 +32,8 @@ #include "rtl_tcp_signal_source_c.h" #include "rtl_tcp_commands.h" -#include #include +#include #include using google::LogMessage; @@ -51,7 +51,7 @@ enum rtl_tcp_signal_source_c_sptr rtl_tcp_make_signal_source_c(const std::string &address, - short port, + int16_t port, bool flip_iq) { return gnuradio::get_initial_sptr(new rtl_tcp_signal_source_c(address, @@ -61,7 +61,7 @@ rtl_tcp_make_signal_source_c(const std::string &address, rtl_tcp_signal_source_c::rtl_tcp_signal_source_c(const std::string &address, - short port, + int16_t port, bool flip_iq) : gr::sync_block("rtl_tcp_signal_source_c", gr::io_signature::make(0, 0, 0), @@ -152,7 +152,7 @@ rtl_tcp_signal_source_c::rtl_tcp_signal_source_c(const std::string &address, } -rtl_tcp_signal_source_c::~rtl_tcp_signal_source_c() +rtl_tcp_signal_source_c::~rtl_tcp_signal_source_c() // NOLINT(modernize-use-equals-default) { mutex_.unlock(); io_service_.stop(); @@ -205,7 +205,7 @@ void rtl_tcp_signal_source_c::set_agc_mode(bool agc) void rtl_tcp_signal_source_c::set_gain(int gain) { - unsigned clipped = static_cast(info_.clip_gain(gain) * 10.0); + auto clipped = static_cast(info_.clip_gain(gain) * 10.0); boost::system::error_code ec = rtl_tcp_command(RTL_TCP_SET_GAIN, clipped, socket_); if (ec) { diff --git a/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.h b/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.h index 3c8c4529a..62e7f2c07 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.h +++ b/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.h @@ -39,12 +39,13 @@ #define GNSS_SDR_RTL_TCP_SIGNAL_SOURCE_C_H #include "rtl_tcp_dongle_info.h" -#include -#include -#include #include +#include #include +#include +#include #include +#include #include class rtl_tcp_signal_source_c; @@ -54,7 +55,7 @@ typedef boost::shared_ptr rtl_tcp_signal_source_c_sptr rtl_tcp_make_signal_source_c(const std::string &address, - short port, + int16_t port, bool flip_iq = false); /*! @@ -81,11 +82,11 @@ private: friend rtl_tcp_signal_source_c_sptr rtl_tcp_make_signal_source_c(const std::string &address, - short port, + int16_t port, bool flip_iq); rtl_tcp_signal_source_c(const std::string &address, - short port, + int16_t port, bool flip_iq); rtl_tcp_dongle_info info_; diff --git a/src/algorithms/signal_source/gnuradio_blocks/unpack_2bit_samples.cc b/src/algorithms/signal_source/gnuradio_blocks/unpack_2bit_samples.cc index 994ae5a22..1fd5c2032 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/unpack_2bit_samples.cc +++ b/src/algorithms/signal_source/gnuradio_blocks/unpack_2bit_samples.cc @@ -62,12 +62,12 @@ bool systemIsBigEndian() bool systemBytesAreBigEndian() { - byte_and_samples b; + byte_and_samples b{}; b.byte = static_cast(0x01); - if (*(char *)&b.byte == 1) + if (*reinterpret_cast(&b.byte) == 1) return false; - else - return true; + + return true; } @@ -131,17 +131,15 @@ unpack_2bit_samples::unpack_2bit_samples(bool big_endian_bytes, } -unpack_2bit_samples::~unpack_2bit_samples() -{ -} +unpack_2bit_samples::~unpack_2bit_samples() = default; int unpack_2bit_samples::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - signed char const *in = reinterpret_cast(input_items[0]); - int8_t *out = reinterpret_cast(output_items[0]); + auto const *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); size_t ninput_bytes = noutput_items / 4; size_t ninput_items = ninput_bytes / item_size_; @@ -160,7 +158,7 @@ int unpack_2bit_samples::work(int noutput_items, // 1) The samples in a byte are in big endian order // 2) The samples in a byte are in little endian order - byte_and_samples raw_byte; + byte_and_samples raw_byte{}; int n = 0; if (!reverse_interleaving_) diff --git a/src/algorithms/signal_source/gnuradio_blocks/unpack_byte_2bit_cpx_samples.cc b/src/algorithms/signal_source/gnuradio_blocks/unpack_byte_2bit_cpx_samples.cc index ae2e2b228..692bc22d7 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/unpack_byte_2bit_cpx_samples.cc +++ b/src/algorithms/signal_source/gnuradio_blocks/unpack_byte_2bit_cpx_samples.cc @@ -35,6 +35,7 @@ #include "unpack_byte_2bit_cpx_samples.h" #include +#include struct byte_2bit_struct { @@ -49,26 +50,24 @@ unpack_byte_2bit_cpx_samples_sptr make_unpack_byte_2bit_cpx_samples() unpack_byte_2bit_cpx_samples::unpack_byte_2bit_cpx_samples() : sync_interpolator("unpack_byte_2bit_cpx_samples", - gr::io_signature::make(1, 1, sizeof(signed char)), - gr::io_signature::make(1, 1, sizeof(short)), + gr::io_signature::make(1, 1, sizeof(int8_t)), + gr::io_signature::make(1, 1, sizeof(int16_t)), 4) { } -unpack_byte_2bit_cpx_samples::~unpack_byte_2bit_cpx_samples() -{ -} +unpack_byte_2bit_cpx_samples::~unpack_byte_2bit_cpx_samples() = default; int unpack_byte_2bit_cpx_samples::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const signed char *in = reinterpret_cast(input_items[0]); - short *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); - byte_2bit_struct sample; + byte_2bit_struct sample{}; int n = 0; for (int i = 0; i < noutput_items / 4; i++) { @@ -78,34 +77,34 @@ int unpack_byte_2bit_cpx_samples::work(int noutput_items, //* Least Significant Nibble - Sample n+1 //* Packing order in Nibble Q1 Q0 I1 I0 //normal - // signed char c = in[i]; + // int8_t c = in[i]; // //Q[n] // sample.two_bit_sample = (c>>6) & 3; - // out[n++] = (2*(short)sample.two_bit_sample+1); + // out[n++] = (2*(int16_t)sample.two_bit_sample+1); // //I[n] // sample.two_bit_sample = (c>>4) & 3; - // out[n++] = (2*(short)sample.two_bit_sample+1); + // out[n++] = (2*(int16_t)sample.two_bit_sample+1); // //Q[n+1] // sample.two_bit_sample = (c>>2) & 3; - // out[n++] = (2*(short)sample.two_bit_sample+1); + // out[n++] = (2*(int16_t)sample.two_bit_sample+1); // //I[n+1] // sample.two_bit_sample = c & 3; - // out[n++] = (2*(short)sample.two_bit_sample+1); + // out[n++] = (2*(int16_t)sample.two_bit_sample+1); //I/Q swap - signed char c = in[i]; + int8_t c = in[i]; //I[n] sample.two_bit_sample = (c >> 4) & 3; - out[n++] = (2 * static_cast(sample.two_bit_sample) + 1); + out[n++] = (2 * static_cast(sample.two_bit_sample) + 1); //Q[n] sample.two_bit_sample = (c >> 6) & 3; - out[n++] = (2 * static_cast(sample.two_bit_sample) + 1); + out[n++] = (2 * static_cast(sample.two_bit_sample) + 1); //I[n+1] sample.two_bit_sample = c & 3; - out[n++] = (2 * static_cast(sample.two_bit_sample) + 1); + out[n++] = (2 * static_cast(sample.two_bit_sample) + 1); //Q[n+1] sample.two_bit_sample = (c >> 2) & 3; - out[n++] = (2 * static_cast(sample.two_bit_sample) + 1); + out[n++] = (2 * static_cast(sample.two_bit_sample) + 1); } return noutput_items; } diff --git a/src/algorithms/signal_source/gnuradio_blocks/unpack_byte_2bit_samples.cc b/src/algorithms/signal_source/gnuradio_blocks/unpack_byte_2bit_samples.cc index 9f21299f4..28637016b 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/unpack_byte_2bit_samples.cc +++ b/src/algorithms/signal_source/gnuradio_blocks/unpack_byte_2bit_samples.cc @@ -52,19 +52,17 @@ unpack_byte_2bit_samples::unpack_byte_2bit_samples() : sync_interpolator("unpack } -unpack_byte_2bit_samples::~unpack_byte_2bit_samples() -{ -} +unpack_byte_2bit_samples::~unpack_byte_2bit_samples() = default; int unpack_byte_2bit_samples::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const signed char *in = reinterpret_cast(input_items[0]); - float *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); - byte_2bit_struct sample; + byte_2bit_struct sample{}; int n = 0; for (int i = 0; i < noutput_items / 4; i++) { diff --git a/src/algorithms/signal_source/gnuradio_blocks/unpack_byte_4bit_samples.cc b/src/algorithms/signal_source/gnuradio_blocks/unpack_byte_4bit_samples.cc index b3a1d61f7..b20ccf21f 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/unpack_byte_4bit_samples.cc +++ b/src/algorithms/signal_source/gnuradio_blocks/unpack_byte_4bit_samples.cc @@ -47,17 +47,15 @@ unpack_byte_4bit_samples::unpack_byte_4bit_samples() : sync_interpolator("unpack } -unpack_byte_4bit_samples::~unpack_byte_4bit_samples() -{ -} +unpack_byte_4bit_samples::~unpack_byte_4bit_samples() = default; int unpack_byte_4bit_samples::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const signed char *in = reinterpret_cast(input_items[0]); - signed char *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); int n = 0; unsigned char tmp_char2; for (int i = 0; i < noutput_items / 2; i++) diff --git a/src/algorithms/signal_source/gnuradio_blocks/unpack_intspir_1bit_samples.cc b/src/algorithms/signal_source/gnuradio_blocks/unpack_intspir_1bit_samples.cc index 5433047ea..f2a805f17 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/unpack_intspir_1bit_samples.cc +++ b/src/algorithms/signal_source/gnuradio_blocks/unpack_intspir_1bit_samples.cc @@ -47,17 +47,15 @@ unpack_intspir_1bit_samples::unpack_intspir_1bit_samples() : sync_interpolator(" } -unpack_intspir_1bit_samples::~unpack_intspir_1bit_samples() -{ -} +unpack_intspir_1bit_samples::~unpack_intspir_1bit_samples() = default; int unpack_intspir_1bit_samples::work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { - const signed int *in = reinterpret_cast(input_items[0]); - float *out = reinterpret_cast(output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto *out = reinterpret_cast(output_items[0]); int n = 0; int channel = 1; diff --git a/src/algorithms/signal_source/gnuradio_blocks/unpack_spir_gss6450_samples.cc b/src/algorithms/signal_source/gnuradio_blocks/unpack_spir_gss6450_samples.cc index 84d7ad0fc..02b9e3d30 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/unpack_spir_gss6450_samples.cc +++ b/src/algorithms/signal_source/gnuradio_blocks/unpack_spir_gss6450_samples.cc @@ -3,6 +3,7 @@ * * \brief Unpacks SPIR int samples * \author Antonio Ramos, antonio(at)cttc.es + * \author Javier Arribas jarribas (at) cttc.es * ------------------------------------------------------------------------- * * Copyright (C) 2010-2018 (see AUTHORS file for a list of contributors) @@ -45,61 +46,93 @@ unpack_spir_gss6450_samples::unpack_spir_gss6450_samples(unsigned int adc_nbit) { adc_bits = adc_nbit; samples_per_int = 16 / adc_bits; - i_data.resize(adc_bits, false); - q_data.resize(adc_bits, false); - adc_bits_two_pow = static_cast(std::exp2(adc_bits)); - two_compl_thres = adc_bits_two_pow / 2; } -unpack_spir_gss6450_samples::~unpack_spir_gss6450_samples() +unpack_spir_gss6450_samples::~unpack_spir_gss6450_samples() = default; + + +void unpack_spir_gss6450_samples::decode_4bits_word(uint32_t input_uint32, gr_complex* out, int adc_bits) { -} - - -int unpack_spir_gss6450_samples::compute_two_complement(unsigned long data) -{ - int res = 0; - if (static_cast(data) < two_compl_thres) + int8_t tmp_char; + float Q; + float I; + switch (adc_bits) { - res = static_cast(data); - } - else - { - res = static_cast(data) - adc_bits_two_pow; - } - return res; -} + case 2: + //four bits per complex sample (2 I + 2 Q), 8 samples per int32[s0,s1,s2,s3,s4,s5,s6,s7] + for (int i = 0; i < 8; i++) + { + tmp_char = input_uint32 & 3; + if (tmp_char >= 2) + { + I = (tmp_char - 4); + } + else + { + I = tmp_char; + } + input_uint32 = input_uint32 >> 2; + tmp_char = input_uint32 & 3; + if (tmp_char >= 2) + { + Q = (tmp_char - 4); + } + else + { + Q = tmp_char; + } + input_uint32 = input_uint32 >> 2; + + out[7 - i] = gr_complex(I, Q); + } + break; + case 4: + //eight bits per complex sample (4 I + 4 Q), 4 samples per int32= [s0,s1,s2,s3] + for (int i = 0; i < 4; i++) + { + tmp_char = input_uint32 & 0x0F; + + if (tmp_char >= 8) + { + I = (tmp_char - 16); + } + else + { + I = tmp_char; + } + input_uint32 = input_uint32 >> 4; + tmp_char = input_uint32 & 0x0F; + if (tmp_char >= 8) + { + Q = (tmp_char - 16); + } + else + { + Q = tmp_char; + } + input_uint32 = input_uint32 >> 4; + + out[3 - i] = gr_complex(I, Q); + } + break; + } +} int unpack_spir_gss6450_samples::work(int noutput_items, gr_vector_const_void_star& input_items, gr_vector_void_star& output_items) { - const int* in = reinterpret_cast(input_items[0]); - gr_complex* out = reinterpret_cast(output_items[0]); - unsigned int n_sample = 0; - unsigned int in_counter = 0; - std::bitset<32> bs; - for (int i = 0; i < noutput_items; i++) + const auto* in = reinterpret_cast(input_items[0]); + auto* out = reinterpret_cast(output_items[0]); + int n_sample = 0; + int in_counter = 0; + do { - bs = in[in_counter]; - int i_shift = adc_bits * 2 * (samples_per_int - n_sample - 1) + adc_bits; - int q_shift = adc_bits * 2 * (samples_per_int - n_sample - 1); - for (unsigned int k = 0; k < adc_bits; k++) - { - i_data[k] = bs[i_shift + k]; - q_data[k] = bs[q_shift + k]; - } - //out[i] = gr_complex(static_cast(compute_two_complement(i_data.to_ulong())) + 0.5, - // static_cast(compute_two_complement(q_data.to_ulong())) + 0.5); - out[i] = gr_complex(static_cast(compute_two_complement(q_data.to_ulong())) + 0.5, - static_cast(compute_two_complement(i_data.to_ulong())) + 0.5); - n_sample++; - if (n_sample == samples_per_int) - { - n_sample = 0; - in_counter++; - } + decode_4bits_word(in[in_counter++], &out[n_sample], adc_bits); + n_sample += samples_per_int; } + while (n_sample < noutput_items); + return noutput_items; } diff --git a/src/algorithms/signal_source/gnuradio_blocks/unpack_spir_gss6450_samples.h b/src/algorithms/signal_source/gnuradio_blocks/unpack_spir_gss6450_samples.h index a604982f1..a8f4b47f9 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/unpack_spir_gss6450_samples.h +++ b/src/algorithms/signal_source/gnuradio_blocks/unpack_spir_gss6450_samples.h @@ -3,6 +3,7 @@ * * \brief Unpacks SPIR int samples * \author Antonio Ramos, antonio.ramos(at)cttc.es + * \author Javier Arribas jarribas (at) cttc.es * ------------------------------------------------------------------------- * * Copyright (C) 2010-2018 (see AUTHORS file for a list of contributors) @@ -32,7 +33,6 @@ #define GNSS_SDR_UNPACK_SPIR_GSS6450_SAMPLES_H #include -#include class unpack_spir_gss6450_samples; @@ -47,18 +47,13 @@ public: int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); friend unpack_spir_gss6450_samples_sptr make_unpack_spir_gss6450_samples_sptr(unsigned int adc_nbit); + void decode_4bits_word(uint32_t input_int32, gr_complex *out, int adc_bits); unpack_spir_gss6450_samples(unsigned int adc_nbit); ~unpack_spir_gss6450_samples(); private: - int compute_two_complement(unsigned long data); - unsigned int adc_bits; unsigned int samples_per_int; - int two_compl_thres; - int adc_bits_two_pow; - boost::dynamic_bitset<> i_data; - boost::dynamic_bitset<> q_data; }; #endif diff --git a/src/algorithms/signal_source/libs/ad9361_manager.cc b/src/algorithms/signal_source/libs/ad9361_manager.cc index 7c9c9f3c9..c1786ec08 100644 --- a/src/algorithms/signal_source/libs/ad9361_manager.cc +++ b/src/algorithms/signal_source/libs/ad9361_manager.cc @@ -75,10 +75,10 @@ bool get_ad9361_stream_dev(struct iio_context *ctx, enum iodev d, struct iio_dev { case TX: *dev = iio_context_find_device(ctx, "cf-ad9361-dds-core-lpc"); - return *dev != NULL; + return *dev != nullptr; case RX: *dev = iio_context_find_device(ctx, "cf-ad9361-lpc"); - return *dev != NULL; + return *dev != nullptr; default: return false; } @@ -100,7 +100,7 @@ bool get_ad9361_stream_ch(struct iio_context *ctx __attribute__((unused)), enum name << chid; *chn = iio_device_find_channel(dev, name.str().c_str(), d == TX); } - return *chn != NULL; + return *chn != nullptr; } @@ -115,14 +115,14 @@ bool get_phy_chan(struct iio_context *ctx, enum iodev d, int chid, struct iio_ch name << "voltage"; name << chid; *chn = iio_device_find_channel(get_ad9361_phy(ctx), name.str().c_str(), false); - return *chn != NULL; + return *chn != nullptr; break; case TX: name.str(""); name << "voltage"; name << chid; *chn = iio_device_find_channel(get_ad9361_phy(ctx), name.str().c_str(), true); - return *chn != NULL; + return *chn != nullptr; break; default: return false; @@ -138,10 +138,10 @@ bool get_lo_chan(struct iio_context *ctx, enum iodev d, struct iio_channel **chn // LO chan is always output, i.e. true case RX: *chn = iio_device_find_channel(get_ad9361_phy(ctx), "altvoltage0", true); - return *chn != NULL; + return *chn != nullptr; case TX: *chn = iio_device_find_channel(get_ad9361_phy(ctx), "altvoltage1", true); - return *chn != NULL; + return *chn != nullptr; default: return false; } @@ -151,7 +151,7 @@ bool get_lo_chan(struct iio_context *ctx, enum iodev d, struct iio_channel **chn /* applies streaming configuration through IIO */ bool cfg_ad9361_streaming_ch(struct iio_context *ctx, struct stream_cfg *cfg, enum iodev type, int chid) { - struct iio_channel *chn = NULL; + struct iio_channel *chn = nullptr; // Configure phy and lo channels //LOG(INFO)<<"* Acquiring AD9361 phy channel"<(d_map_base); + auto *aux = const_cast(d_map_base); if (munmap(static_cast(aux), PAGE_SIZE) == -1) { std::cout << "Failed to unmap memory uio" << std::endl; diff --git a/src/algorithms/signal_source/libs/fpga_switch.h b/src/algorithms/signal_source/libs/fpga_switch.h index f4a755775..2ab67dbef 100644 --- a/src/algorithms/signal_source/libs/fpga_switch.h +++ b/src/algorithms/signal_source/libs/fpga_switch.h @@ -44,13 +44,13 @@ class fpga_switch { public: - fpga_switch(std::string device_name); + fpga_switch(const std::string& device_name); ~fpga_switch(); void set_switch_position(int switch_position); private: int d_device_descriptor; // driver descriptor - volatile unsigned *d_map_base; // driver memory map + volatile unsigned* d_map_base; // driver memory map // private functions unsigned fpga_switch_test_register(unsigned writeval); diff --git a/src/algorithms/signal_source/libs/rtl_tcp_dongle_info.cc b/src/algorithms/signal_source/libs/rtl_tcp_dongle_info.cc index 0f2419498..fab664d28 100644 --- a/src/algorithms/signal_source/libs/rtl_tcp_dongle_info.cc +++ b/src/algorithms/signal_source/libs/rtl_tcp_dongle_info.cc @@ -126,28 +126,26 @@ double rtl_tcp_dongle_info::clip_gain(int gain) const // no defined gains to clip to return gain; } - else - { - double last_stop = gains.front(); - BOOST_FOREACH (double g, gains) - { - g /= 10.0; - if (gain < g) + double last_stop = gains.front(); + BOOST_FOREACH (double g, gains) + { + g /= 10.0; + + if (gain < g) + { + if (std::abs(gain - g) < std::abs(gain - last_stop)) { - if (std::abs(gain - g) < std::abs(gain - last_stop)) - { - return g; - } - else - { - return last_stop; - } + return g; + } + else + { + return last_stop; } - last_stop = g; } - return last_stop; + last_stop = g; } + return last_stop; } diff --git a/src/algorithms/signal_source/libs/rtl_tcp_dongle_info.h b/src/algorithms/signal_source/libs/rtl_tcp_dongle_info.h index 9b1c12f43..983b94a29 100644 --- a/src/algorithms/signal_source/libs/rtl_tcp_dongle_info.h +++ b/src/algorithms/signal_source/libs/rtl_tcp_dongle_info.h @@ -42,7 +42,7 @@ class rtl_tcp_dongle_info { private: - char magic_[4]; + char magic_[4]{}; uint32_t tuner_type_; uint32_t tuner_gain_count_; diff --git a/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.cc b/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.cc index f7a663358..be7dd59ce 100644 --- a/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.cc +++ b/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.cc @@ -33,18 +33,18 @@ #include "galileo_e1b_telemetry_decoder.h" #include "configuration_interface.h" -#include "galileo_ephemeris.h" #include "galileo_almanac.h" +#include "galileo_ephemeris.h" #include "galileo_iono.h" #include "galileo_utc_model.h" -#include #include +#include using google::LogMessage; GalileoE1BTelemetryDecoder::GalileoE1BTelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), @@ -69,9 +69,7 @@ GalileoE1BTelemetryDecoder::GalileoE1BTelemetryDecoder(ConfigurationInterface* c } -GalileoE1BTelemetryDecoder::~GalileoE1BTelemetryDecoder() -{ -} +GalileoE1BTelemetryDecoder::~GalileoE1BTelemetryDecoder() = default; void GalileoE1BTelemetryDecoder::set_satellite(const Gnss_Satellite& satellite) diff --git a/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.h b/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.h index 119e294ad..c277725ce 100644 --- a/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.h +++ b/src/algorithms/telemetry_decoder/adapters/galileo_e1b_telemetry_decoder.h @@ -35,9 +35,9 @@ #define GNSS_SDR_GALILEO_E1B_TELEMETRY_DECODER_H_ -#include "telemetry_decoder_interface.h" #include "galileo_telemetry_decoder_cc.h" #include "gnss_satellite.h" +#include "telemetry_decoder_interface.h" #include @@ -50,7 +50,7 @@ class GalileoE1BTelemetryDecoder : public TelemetryDecoderInterface { public: GalileoE1BTelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/telemetry_decoder/adapters/galileo_e5a_telemetry_decoder.cc b/src/algorithms/telemetry_decoder/adapters/galileo_e5a_telemetry_decoder.cc index 99ab590ea..715e5c1cb 100644 --- a/src/algorithms/telemetry_decoder/adapters/galileo_e5a_telemetry_decoder.cc +++ b/src/algorithms/telemetry_decoder/adapters/galileo_e5a_telemetry_decoder.cc @@ -36,18 +36,18 @@ #include "galileo_e5a_telemetry_decoder.h" #include "configuration_interface.h" -#include "galileo_ephemeris.h" #include "galileo_almanac.h" +#include "galileo_ephemeris.h" #include "galileo_iono.h" #include "galileo_utc_model.h" -#include #include +#include using google::LogMessage; GalileoE5aTelemetryDecoder::GalileoE5aTelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), @@ -72,9 +72,7 @@ GalileoE5aTelemetryDecoder::GalileoE5aTelemetryDecoder(ConfigurationInterface* c } -GalileoE5aTelemetryDecoder::~GalileoE5aTelemetryDecoder() -{ -} +GalileoE5aTelemetryDecoder::~GalileoE5aTelemetryDecoder() = default; void GalileoE5aTelemetryDecoder::set_satellite(const Gnss_Satellite& satellite) diff --git a/src/algorithms/telemetry_decoder/adapters/galileo_e5a_telemetry_decoder.h b/src/algorithms/telemetry_decoder/adapters/galileo_e5a_telemetry_decoder.h index 022636384..cdb21af2d 100644 --- a/src/algorithms/telemetry_decoder/adapters/galileo_e5a_telemetry_decoder.h +++ b/src/algorithms/telemetry_decoder/adapters/galileo_e5a_telemetry_decoder.h @@ -50,7 +50,7 @@ class GalileoE5aTelemetryDecoder : public TelemetryDecoderInterface { public: GalileoE5aTelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/telemetry_decoder/adapters/glonass_l1_ca_telemetry_decoder.cc b/src/algorithms/telemetry_decoder/adapters/glonass_l1_ca_telemetry_decoder.cc index 9c991349f..c0d88314f 100644 --- a/src/algorithms/telemetry_decoder/adapters/glonass_l1_ca_telemetry_decoder.cc +++ b/src/algorithms/telemetry_decoder/adapters/glonass_l1_ca_telemetry_decoder.cc @@ -33,17 +33,17 @@ #include "glonass_l1_ca_telemetry_decoder.h" #include "configuration_interface.h" -#include "glonass_gnav_ephemeris.h" #include "glonass_gnav_almanac.h" +#include "glonass_gnav_ephemeris.h" #include "glonass_gnav_utc_model.h" -#include #include +#include using google::LogMessage; GlonassL1CaTelemetryDecoder::GlonassL1CaTelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), @@ -68,9 +68,7 @@ GlonassL1CaTelemetryDecoder::GlonassL1CaTelemetryDecoder(ConfigurationInterface* } -GlonassL1CaTelemetryDecoder::~GlonassL1CaTelemetryDecoder() -{ -} +GlonassL1CaTelemetryDecoder::~GlonassL1CaTelemetryDecoder() = default; void GlonassL1CaTelemetryDecoder::set_satellite(const Gnss_Satellite& satellite) diff --git a/src/algorithms/telemetry_decoder/adapters/glonass_l1_ca_telemetry_decoder.h b/src/algorithms/telemetry_decoder/adapters/glonass_l1_ca_telemetry_decoder.h index c35fc68e0..33bc3ecbd 100644 --- a/src/algorithms/telemetry_decoder/adapters/glonass_l1_ca_telemetry_decoder.h +++ b/src/algorithms/telemetry_decoder/adapters/glonass_l1_ca_telemetry_decoder.h @@ -34,8 +34,8 @@ #ifndef GNSS_SDR_GLONASS_L1_CA_TELEMETRY_DECODER_H_ #define GNSS_SDR_GLONASS_L1_CA_TELEMETRY_DECODER_H_ -#include "telemetry_decoder_interface.h" #include "glonass_l1_ca_telemetry_decoder_cc.h" +#include "telemetry_decoder_interface.h" #include class ConfigurationInterface; @@ -47,7 +47,7 @@ class GlonassL1CaTelemetryDecoder : public TelemetryDecoderInterface { public: GlonassL1CaTelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/telemetry_decoder/adapters/glonass_l2_ca_telemetry_decoder.cc b/src/algorithms/telemetry_decoder/adapters/glonass_l2_ca_telemetry_decoder.cc index 8c409316b..c96851552 100644 --- a/src/algorithms/telemetry_decoder/adapters/glonass_l2_ca_telemetry_decoder.cc +++ b/src/algorithms/telemetry_decoder/adapters/glonass_l2_ca_telemetry_decoder.cc @@ -32,17 +32,17 @@ #include "glonass_l2_ca_telemetry_decoder.h" #include "configuration_interface.h" -#include "glonass_gnav_ephemeris.h" #include "glonass_gnav_almanac.h" +#include "glonass_gnav_ephemeris.h" #include "glonass_gnav_utc_model.h" -#include #include +#include using google::LogMessage; GlonassL2CaTelemetryDecoder::GlonassL2CaTelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), @@ -67,9 +67,7 @@ GlonassL2CaTelemetryDecoder::GlonassL2CaTelemetryDecoder(ConfigurationInterface* } -GlonassL2CaTelemetryDecoder::~GlonassL2CaTelemetryDecoder() -{ -} +GlonassL2CaTelemetryDecoder::~GlonassL2CaTelemetryDecoder() = default; void GlonassL2CaTelemetryDecoder::set_satellite(const Gnss_Satellite& satellite) diff --git a/src/algorithms/telemetry_decoder/adapters/glonass_l2_ca_telemetry_decoder.h b/src/algorithms/telemetry_decoder/adapters/glonass_l2_ca_telemetry_decoder.h index 27c7774bd..83c7c8c4e 100644 --- a/src/algorithms/telemetry_decoder/adapters/glonass_l2_ca_telemetry_decoder.h +++ b/src/algorithms/telemetry_decoder/adapters/glonass_l2_ca_telemetry_decoder.h @@ -33,8 +33,8 @@ #ifndef GNSS_SDR_GLONASS_L2_CA_TELEMETRY_DECODER_H_ #define GNSS_SDR_GLONASS_L2_CA_TELEMETRY_DECODER_H_ -#include "telemetry_decoder_interface.h" #include "glonass_l2_ca_telemetry_decoder_cc.h" +#include "telemetry_decoder_interface.h" #include class ConfigurationInterface; @@ -46,7 +46,7 @@ class GlonassL2CaTelemetryDecoder : public TelemetryDecoderInterface { public: GlonassL2CaTelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.cc b/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.cc index 5a41d6c3d..b7a4530b3 100644 --- a/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.cc +++ b/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.cc @@ -32,18 +32,18 @@ #include "gps_l1_ca_telemetry_decoder.h" #include "configuration_interface.h" -#include "gps_ephemeris.h" #include "gps_almanac.h" +#include "gps_ephemeris.h" #include "gps_iono.h" #include "gps_utc_model.h" -#include #include +#include using google::LogMessage; GpsL1CaTelemetryDecoder::GpsL1CaTelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), @@ -68,9 +68,7 @@ GpsL1CaTelemetryDecoder::GpsL1CaTelemetryDecoder(ConfigurationInterface* configu } -GpsL1CaTelemetryDecoder::~GpsL1CaTelemetryDecoder() -{ -} +GpsL1CaTelemetryDecoder::~GpsL1CaTelemetryDecoder() = default; void GpsL1CaTelemetryDecoder::set_satellite(const Gnss_Satellite& satellite) diff --git a/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.h b/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.h index ec4efbb86..9436e8ae5 100644 --- a/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.h +++ b/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.h @@ -46,7 +46,7 @@ class GpsL1CaTelemetryDecoder : public TelemetryDecoderInterface { public: GpsL1CaTelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/telemetry_decoder/adapters/gps_l2c_telemetry_decoder.cc b/src/algorithms/telemetry_decoder/adapters/gps_l2c_telemetry_decoder.cc index fabb55fe9..db451a045 100644 --- a/src/algorithms/telemetry_decoder/adapters/gps_l2c_telemetry_decoder.cc +++ b/src/algorithms/telemetry_decoder/adapters/gps_l2c_telemetry_decoder.cc @@ -32,18 +32,18 @@ #include "gps_l2c_telemetry_decoder.h" #include "configuration_interface.h" -#include "gps_cnav_ephemeris.h" #include "gps_almanac.h" +#include "gps_cnav_ephemeris.h" #include "gps_cnav_iono.h" #include "gps_cnav_utc_model.h" -#include #include +#include using google::LogMessage; GpsL2CTelemetryDecoder::GpsL2CTelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), @@ -68,9 +68,7 @@ GpsL2CTelemetryDecoder::GpsL2CTelemetryDecoder(ConfigurationInterface* configura } -GpsL2CTelemetryDecoder::~GpsL2CTelemetryDecoder() -{ -} +GpsL2CTelemetryDecoder::~GpsL2CTelemetryDecoder() = default; void GpsL2CTelemetryDecoder::set_satellite(const Gnss_Satellite& satellite) diff --git a/src/algorithms/telemetry_decoder/adapters/gps_l2c_telemetry_decoder.h b/src/algorithms/telemetry_decoder/adapters/gps_l2c_telemetry_decoder.h index fefb15e97..f7e9fb76b 100644 --- a/src/algorithms/telemetry_decoder/adapters/gps_l2c_telemetry_decoder.h +++ b/src/algorithms/telemetry_decoder/adapters/gps_l2c_telemetry_decoder.h @@ -46,7 +46,7 @@ class GpsL2CTelemetryDecoder : public TelemetryDecoderInterface { public: GpsL2CTelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/telemetry_decoder/adapters/gps_l5_telemetry_decoder.cc b/src/algorithms/telemetry_decoder/adapters/gps_l5_telemetry_decoder.cc index 172139563..68fa96d26 100644 --- a/src/algorithms/telemetry_decoder/adapters/gps_l5_telemetry_decoder.cc +++ b/src/algorithms/telemetry_decoder/adapters/gps_l5_telemetry_decoder.cc @@ -32,14 +32,14 @@ #include "gps_l5_telemetry_decoder.h" #include "configuration_interface.h" -#include #include +#include using google::LogMessage; GpsL5TelemetryDecoder::GpsL5TelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), @@ -64,9 +64,7 @@ GpsL5TelemetryDecoder::GpsL5TelemetryDecoder(ConfigurationInterface* configurati } -GpsL5TelemetryDecoder::~GpsL5TelemetryDecoder() -{ -} +GpsL5TelemetryDecoder::~GpsL5TelemetryDecoder() = default; void GpsL5TelemetryDecoder::set_satellite(const Gnss_Satellite& satellite) diff --git a/src/algorithms/telemetry_decoder/adapters/gps_l5_telemetry_decoder.h b/src/algorithms/telemetry_decoder/adapters/gps_l5_telemetry_decoder.h index 06da22d47..c895b3b48 100644 --- a/src/algorithms/telemetry_decoder/adapters/gps_l5_telemetry_decoder.h +++ b/src/algorithms/telemetry_decoder/adapters/gps_l5_telemetry_decoder.h @@ -34,9 +34,9 @@ #define GNSS_SDR_GPS_L5_TELEMETRY_DECODER_H_ -#include "telemetry_decoder_interface.h" -#include "gps_l5_telemetry_decoder_cc.h" #include "gnss_satellite.h" +#include "gps_l5_telemetry_decoder_cc.h" +#include "telemetry_decoder_interface.h" #include @@ -49,7 +49,7 @@ class GpsL5TelemetryDecoder : public TelemetryDecoderInterface { public: GpsL5TelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/telemetry_decoder/adapters/sbas_l1_telemetry_decoder.cc b/src/algorithms/telemetry_decoder/adapters/sbas_l1_telemetry_decoder.cc index 4309b28d8..2083509e1 100644 --- a/src/algorithms/telemetry_decoder/adapters/sbas_l1_telemetry_decoder.cc +++ b/src/algorithms/telemetry_decoder/adapters/sbas_l1_telemetry_decoder.cc @@ -34,14 +34,14 @@ #include "configuration_interface.h" #include "sbas_ephemeris.h" #include "sbas_l1_telemetry_decoder_cc.h" -#include #include +#include using google::LogMessage; SbasL1TelemetryDecoder::SbasL1TelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), @@ -66,9 +66,7 @@ SbasL1TelemetryDecoder::SbasL1TelemetryDecoder(ConfigurationInterface* configura } -SbasL1TelemetryDecoder::~SbasL1TelemetryDecoder() -{ -} +SbasL1TelemetryDecoder::~SbasL1TelemetryDecoder() = default; void SbasL1TelemetryDecoder::set_satellite(const Gnss_Satellite& satellite) diff --git a/src/algorithms/telemetry_decoder/adapters/sbas_l1_telemetry_decoder.h b/src/algorithms/telemetry_decoder/adapters/sbas_l1_telemetry_decoder.h index 9da1b44f9..c7ab0043b 100644 --- a/src/algorithms/telemetry_decoder/adapters/sbas_l1_telemetry_decoder.h +++ b/src/algorithms/telemetry_decoder/adapters/sbas_l1_telemetry_decoder.h @@ -34,8 +34,8 @@ #define GNSS_SDR_SBAS_L1_TELEMETRY_DECODER_H_ -#include "telemetry_decoder_interface.h" #include "sbas_l1_telemetry_decoder_cc.h" +#include "telemetry_decoder_interface.h" #include @@ -48,7 +48,7 @@ class SbasL1TelemetryDecoder : public TelemetryDecoderInterface { public: SbasL1TelemetryDecoder(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/beidou_b1i_telemetry_decoder_cc.cc b/src/algorithms/telemetry_decoder/gnuradio_blocks/beidou_b1i_telemetry_decoder_cc.cc index ea1a7db3b..cfc3ab494 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/beidou_b1i_telemetry_decoder_cc.cc +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/beidou_b1i_telemetry_decoder_cc.cc @@ -76,6 +76,12 @@ beidou_b1i_telemetry_decoder_cc::beidou_b1i_telemetry_decoder_cc( } n++; } + + d_samples_per_symbol = 20; + d_bits_per_preamble = 11; + d_samples_per_preamble = 11 * d_samples_per_symbol; + d_required_symbols = static_cast(6000) * d_samples_per_symbol + d_samples_per_preamble; + d_stat = 0; d_symbol_accumulator = 0; d_symbol_accumulator_counter = 0; @@ -497,8 +503,8 @@ std::cout << " we have a new set of utc data for the current SV "<< std::endl; //2. Add the telemetry decoder information if (this->d_flag_preamble == true and d_flag_new_tow_available == true) { - d_TOW_at_current_symbol_ms = static_cast(d_BEIDOU_FSM.d_nav.d_SOW) * 1000 + 599; - d_TOW_at_Preamble_ms = d_TOW_at_current_symbol_ms; + d_TOW_at_Preamble_ms = static_cast(d_BEIDOU_FSM.d_nav.d_SOW +14) * 1000 ; + d_TOW_at_current_symbol_ms = d_TOW_at_Preamble_ms + static_cast((d_required_symbols + 1) * BEIDOU_B1I_CODE_PERIOD_MS); flag_TOW_set = true; d_flag_new_tow_available = false; } diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/beidou_b1i_telemetry_decoder_cc.h b/src/algorithms/telemetry_decoder/gnuradio_blocks/beidou_b1i_telemetry_decoder_cc.h index c6e8ae3ef..9cec4d4be 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/beidou_b1i_telemetry_decoder_cc.h +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/beidou_b1i_telemetry_decoder_cc.h @@ -38,7 +38,7 @@ #include #include #include -#include "../../../core/system_parameters/Beidou_B1I.h" +#include "Beidou_B1I.h" class beidou_b1i_telemetry_decoder_cc; @@ -104,6 +104,11 @@ private: bool d_flag_new_tow_available; int d_word_number; + uint32_t d_samples_per_symbol; + int32_t d_bits_per_preamble; + int32_t d_samples_per_preamble; + uint32_t d_required_symbols; + // navigation message vars Beidou_Dnav_Navigation_Message d_nav; BeidouB1iSubframeFsm d_BEIDOU_FSM; diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_telemetry_decoder_cc.cc b/src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_telemetry_decoder_cc.cc index da1851fad..bb5b68a9e 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_telemetry_decoder_cc.cc +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_telemetry_decoder_cc.cc @@ -35,8 +35,8 @@ #include "display.h" #include "gnss_synchro.h" #include -#include #include +#include #include #include @@ -60,7 +60,7 @@ void galileo_telemetry_decoder_cc::viterbi_decoder(double *page_part_symbols, in } -void galileo_telemetry_decoder_cc::deinterleaver(int32_t rows, int32_t cols, double *in, double *out) +void galileo_telemetry_decoder_cc::deinterleaver(int32_t rows, int32_t cols, const double *in, double *out) { for (int32_t r = 0; r < rows; r++) { @@ -141,7 +141,7 @@ galileo_telemetry_decoder_cc::galileo_telemetry_decoder_cc( d_samples_per_symbol = 0U; d_PRN_code_period_ms = 0U; d_required_symbols = 0U; - d_frame_length_symbols = 0.0; + d_frame_length_symbols = 0U; CodeLength = 0; DataLength = 0; std::cout << "Galileo unified telemetry decoder error: Unknown frame type " << std::endl; @@ -260,7 +260,7 @@ galileo_telemetry_decoder_cc::~galileo_telemetry_decoder_cc() void galileo_telemetry_decoder_cc::decode_INAV_word(double *page_part_symbols, int32_t frame_length) { // 1. De-interleave - double *page_part_symbols_deint = static_cast(volk_gnsssdr_malloc(frame_length * sizeof(double), volk_gnsssdr_get_alignment())); + auto *page_part_symbols_deint = static_cast(volk_gnsssdr_malloc(frame_length * sizeof(double), volk_gnsssdr_get_alignment())); deinterleaver(GALILEO_INAV_INTERLEAVER_ROWS, GALILEO_INAV_INTERLEAVER_COLS, page_part_symbols, page_part_symbols_deint); // 2. Viterbi decoder @@ -274,7 +274,7 @@ void galileo_telemetry_decoder_cc::decode_INAV_word(double *page_part_symbols, i } } - int32_t *page_part_bits = static_cast(volk_gnsssdr_malloc((frame_length / 2) * sizeof(int32_t), volk_gnsssdr_get_alignment())); + auto *page_part_bits = static_cast(volk_gnsssdr_malloc((frame_length / 2) * sizeof(int32_t), volk_gnsssdr_get_alignment())); viterbi_decoder(page_part_symbols_deint, page_part_bits); volk_gnsssdr_free(page_part_symbols_deint); @@ -309,7 +309,7 @@ void galileo_telemetry_decoder_cc::decode_INAV_word(double *page_part_symbols, i else { // STORE HALF WORD (even page) - d_inav_nav.split_page(page_String.c_str(), flag_even_word_arrived); + d_inav_nav.split_page(page_String, flag_even_word_arrived); flag_even_word_arrived = 1; } volk_gnsssdr_free(page_part_bits); @@ -354,7 +354,7 @@ void galileo_telemetry_decoder_cc::decode_INAV_word(double *page_part_symbols, i void galileo_telemetry_decoder_cc::decode_FNAV_word(double *page_symbols, int32_t frame_length) { // 1. De-interleave - double *page_symbols_deint = static_cast(volk_gnsssdr_malloc(frame_length * sizeof(double), volk_gnsssdr_get_alignment())); + auto *page_symbols_deint = static_cast(volk_gnsssdr_malloc(frame_length * sizeof(double), volk_gnsssdr_get_alignment())); deinterleaver(GALILEO_FNAV_INTERLEAVER_ROWS, GALILEO_FNAV_INTERLEAVER_COLS, page_symbols, page_symbols_deint); // 2. Viterbi decoder @@ -367,7 +367,7 @@ void galileo_telemetry_decoder_cc::decode_FNAV_word(double *page_symbols, int32_ page_symbols_deint[i] = -page_symbols_deint[i]; } } - int32_t *page_bits = static_cast(volk_gnsssdr_malloc((frame_length / 2) * sizeof(int32_t), volk_gnsssdr_get_alignment())); + auto *page_bits = static_cast(volk_gnsssdr_malloc((frame_length / 2) * sizeof(int32_t), volk_gnsssdr_get_alignment())); viterbi_decoder(page_symbols_deint, page_bits); volk_gnsssdr_free(page_symbols_deint); @@ -439,7 +439,7 @@ void galileo_telemetry_decoder_cc::set_channel(int32_t channel) try { d_dump_filename = "telemetry"; - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); @@ -460,10 +460,10 @@ int galileo_telemetry_decoder_cc::general_work(int noutput_items __attribute__(( int32_t corr_value = 0; int32_t preamble_diff = 0; - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); // Get the output buffer pointer - const Gnss_Synchro **in = reinterpret_cast(&input_items[0]); // Get the input buffer pointer + auto **out = reinterpret_cast(&output_items[0]); // Get the output buffer pointer + const auto **in = reinterpret_cast(&input_items[0]); // Get the input buffer pointer - Gnss_Synchro current_symbol; // structure to save the synchronization information and send the output object to the next block + Gnss_Synchro current_symbol{}; // structure to save the synchronization information and send the output object to the next block // 1. Copy the current tracking output current_symbol = in[0][0]; // add new symbol to the symbol queue @@ -780,8 +780,5 @@ int galileo_telemetry_decoder_cc::general_work(int noutput_items __attribute__(( *out[0] = current_symbol; return 1; } - else - { - return 0; - } + return 0; } diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_telemetry_decoder_cc.h b/src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_telemetry_decoder_cc.h index 6dc96f309..c06df6010 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_telemetry_decoder_cc.h +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_telemetry_decoder_cc.h @@ -35,11 +35,11 @@ #include "Galileo_E1.h" #include "Galileo_E5a.h" -#include "galileo_navigation_message.h" -#include "galileo_fnav_message.h" -#include "galileo_ephemeris.h" #include "galileo_almanac_helper.h" +#include "galileo_ephemeris.h" +#include "galileo_fnav_message.h" #include "galileo_iono.h" +#include "galileo_navigation_message.h" #include "galileo_utc_model.h" #include "gnss_satellite.h" #include "gnss_synchro.h" @@ -78,7 +78,7 @@ private: void viterbi_decoder(double *page_part_symbols, int32_t *page_part_bits); - void deinterleaver(int32_t rows, int32_t cols, double *in, double *out); + void deinterleaver(int32_t rows, int32_t cols, const double *in, double *out); void decode_INAV_word(double *symbols, int32_t frame_length); void decode_FNAV_word(double *page_symbols, int32_t frame_length); @@ -125,7 +125,7 @@ private: // vars for Viterbi decoder int32_t *out0, *out1, *state0, *state1; - int32_t g_encoder[2]; + int32_t g_encoder[2]{}; const int32_t nn = 2; // Coding rate 1/n const int32_t KK = 7; // Constraint Length int32_t mm = KK - 1; diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l1_ca_telemetry_decoder_cc.cc b/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l1_ca_telemetry_decoder_cc.cc index 49c40a082..7ead9f53b 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l1_ca_telemetry_decoder_cc.cc +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l1_ca_telemetry_decoder_cc.cc @@ -33,8 +33,8 @@ #include "glonass_l1_ca_telemetry_decoder_cc.h" #include -#include #include +#include #define CRC_ERROR_LIMIT 6 @@ -74,11 +74,11 @@ glonass_l1_ca_telemetry_decoder_cc::glonass_l1_ca_telemetry_decoder_cc( // preamble bits to sampled symbols d_preambles_symbols = static_cast(malloc(sizeof(int32_t) * d_symbols_per_preamble)); int32_t n = 0; - for (int32_t i = 0; i < GLONASS_GNAV_PREAMBLE_LENGTH_BITS; i++) + for (uint16_t d_preambles_bit : d_preambles_bits) { for (uint32_t j = 0; j < GLONASS_GNAV_TELEMETRY_SYMBOLS_PER_PREAMBLE_BIT; j++) { - if (d_preambles_bits[i] == 1) + if (d_preambles_bit == 1) { d_preambles_symbols[n] = 1; } @@ -124,7 +124,7 @@ glonass_l1_ca_telemetry_decoder_cc::~glonass_l1_ca_telemetry_decoder_cc() } -void glonass_l1_ca_telemetry_decoder_cc::decode_string(double *frame_symbols, int32_t frame_length) +void glonass_l1_ca_telemetry_decoder_cc::decode_string(const double *frame_symbols, int32_t frame_length) { double chip_acc = 0.0; int32_t chip_acc_counter = 0; @@ -244,7 +244,7 @@ void glonass_l1_ca_telemetry_decoder_cc::set_channel(int32_t channel) try { d_dump_filename = "telemetry"; - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); @@ -265,10 +265,10 @@ int glonass_l1_ca_telemetry_decoder_cc::general_work(int noutput_items __attribu int32_t corr_value = 0; int32_t preamble_diff = 0; - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); // Get the output buffer pointer - const Gnss_Synchro **in = reinterpret_cast(&input_items[0]); // Get the input buffer pointer + auto **out = reinterpret_cast(&output_items[0]); // Get the output buffer pointer + const auto **in = reinterpret_cast(&input_items[0]); // Get the input buffer pointer - Gnss_Synchro current_symbol; // structure to save the synchronization information and send the output object to the next block + Gnss_Synchro current_symbol{}; // structure to save the synchronization information and send the output object to the next block // 1. Copy the current tracking output current_symbol = in[0][0]; d_symbol_history.push_back(current_symbol); // add new symbol to the symbol queue diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l1_ca_telemetry_decoder_cc.h b/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l1_ca_telemetry_decoder_cc.h index 4c8e6b57b..1bdde14da 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l1_ca_telemetry_decoder_cc.h +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l1_ca_telemetry_decoder_cc.h @@ -34,13 +34,13 @@ #define GNSS_SDR_GLONASS_L1_CA_TELEMETRY_DECODER_CC_H -#include "glonass_gnav_navigation_message.h" -#include "glonass_gnav_ephemeris.h" +#include "GLONASS_L1_L2_CA.h" #include "glonass_gnav_almanac.h" +#include "glonass_gnav_ephemeris.h" +#include "glonass_gnav_navigation_message.h" #include "glonass_gnav_utc_model.h" #include "gnss_satellite.h" #include "gnss_synchro.h" -#include "GLONASS_L1_L2_CA.h" #include #include #include @@ -76,13 +76,13 @@ private: glonass_l1_ca_make_telemetry_decoder_cc(const Gnss_Satellite &satellite, bool dump); glonass_l1_ca_telemetry_decoder_cc(const Gnss_Satellite &satellite, bool dump); - void decode_string(double *symbols, int32_t frame_length); + void decode_string(const double *symbols, int32_t frame_length); //!< Help with coherent tracking double d_preamble_time_samples; //!< Preamble decoding - uint16_t d_preambles_bits[GLONASS_GNAV_PREAMBLE_LENGTH_BITS]; + uint16_t d_preambles_bits[GLONASS_GNAV_PREAMBLE_LENGTH_BITS]{}; int32_t *d_preambles_symbols; uint32_t d_samples_per_symbol; int32_t d_symbols_per_preamble; diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l2_ca_telemetry_decoder_cc.cc b/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l2_ca_telemetry_decoder_cc.cc index 29b4f14d3..b250fb912 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l2_ca_telemetry_decoder_cc.cc +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l2_ca_telemetry_decoder_cc.cc @@ -74,11 +74,11 @@ glonass_l2_ca_telemetry_decoder_cc::glonass_l2_ca_telemetry_decoder_cc( // preamble bits to sampled symbols d_preambles_symbols = static_cast(malloc(sizeof(int32_t) * d_symbols_per_preamble)); int32_t n = 0; - for (int32_t i = 0; i < GLONASS_GNAV_PREAMBLE_LENGTH_BITS; i++) + for (uint16_t d_preambles_bit : d_preambles_bits) { for (uint32_t j = 0; j < GLONASS_GNAV_TELEMETRY_SYMBOLS_PER_PREAMBLE_BIT; j++) { - if (d_preambles_bits[i] == 1) + if (d_preambles_bit == 1) { d_preambles_symbols[n] = 1; } @@ -124,7 +124,7 @@ glonass_l2_ca_telemetry_decoder_cc::~glonass_l2_ca_telemetry_decoder_cc() } -void glonass_l2_ca_telemetry_decoder_cc::decode_string(double *frame_symbols, int32_t frame_length) +void glonass_l2_ca_telemetry_decoder_cc::decode_string(const double *frame_symbols, int32_t frame_length) { double chip_acc = 0.0; int32_t chip_acc_counter = 0; @@ -244,7 +244,7 @@ void glonass_l2_ca_telemetry_decoder_cc::set_channel(int32_t channel) try { d_dump_filename = "telemetry"; - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); @@ -265,10 +265,10 @@ int glonass_l2_ca_telemetry_decoder_cc::general_work(int noutput_items __attribu int32_t corr_value = 0; int32_t preamble_diff = 0; - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); // Get the output buffer pointer - const Gnss_Synchro **in = reinterpret_cast(&input_items[0]); // Get the input buffer pointer + auto **out = reinterpret_cast(&output_items[0]); // Get the output buffer pointer + const auto **in = reinterpret_cast(&input_items[0]); // Get the input buffer pointer - Gnss_Synchro current_symbol; // structure to save the synchronization information and send the output object to the next block + Gnss_Synchro current_symbol{}; // structure to save the synchronization information and send the output object to the next block // 1. Copy the current tracking output current_symbol = in[0][0]; d_symbol_history.push_back(current_symbol); // add new symbol to the symbol queue diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l2_ca_telemetry_decoder_cc.h b/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l2_ca_telemetry_decoder_cc.h index 8b834228a..8b1a25ee9 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l2_ca_telemetry_decoder_cc.h +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l2_ca_telemetry_decoder_cc.h @@ -34,9 +34,9 @@ #include "GLONASS_L1_L2_CA.h" -#include "glonass_gnav_navigation_message.h" -#include "glonass_gnav_ephemeris.h" #include "glonass_gnav_almanac.h" +#include "glonass_gnav_ephemeris.h" +#include "glonass_gnav_navigation_message.h" #include "glonass_gnav_utc_model.h" #include "gnss_satellite.h" #include "gnss_synchro.h" @@ -74,13 +74,13 @@ private: glonass_l2_ca_make_telemetry_decoder_cc(const Gnss_Satellite &satellite, bool dump); glonass_l2_ca_telemetry_decoder_cc(const Gnss_Satellite &satellite, bool dump); - void decode_string(double *symbols, int32_t frame_length); + void decode_string(const double *symbols, int32_t frame_length); //!< Help with coherent tracking double d_preamble_time_samples; //!< Preamble decoding - uint16_t d_preambles_bits[GLONASS_GNAV_PREAMBLE_LENGTH_BITS]; + uint16_t d_preambles_bits[GLONASS_GNAV_PREAMBLE_LENGTH_BITS]{}; int32_t *d_preambles_symbols; uint32_t d_samples_per_symbol; int32_t d_symbols_per_preamble; diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.cc b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.cc index e4a12bd43..ef2988629 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.cc +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.cc @@ -38,7 +38,7 @@ #ifndef _rotl -#define _rotl(X, N) ((X << N) ^ (X >> (32 - N))) // Used in the parity check algorithm +#define _rotl(X, N) (((X) << (N)) ^ ((X) >> (32 - (N)))) // Used in the parity check algorithm #endif using google::LogMessage; @@ -67,11 +67,11 @@ gps_l1_ca_telemetry_decoder_cc::gps_l1_ca_telemetry_decoder_cc( // preamble bits to sampled symbols d_preambles_symbols = static_cast(volk_gnsssdr_malloc(GPS_CA_PREAMBLE_LENGTH_SYMBOLS * sizeof(int32_t), volk_gnsssdr_get_alignment())); int32_t n = 0; - for (int32_t i = 0; i < GPS_CA_PREAMBLE_LENGTH_BITS; i++) + for (uint16_t preambles_bit : preambles_bits) { for (uint32_t j = 0; j < GPS_CA_TELEMETRY_SYMBOLS_PER_BIT; j++) { - if (preambles_bits[i] == 1) + if (preambles_bit == 1) { d_preambles_symbols[n] = 1; } @@ -136,9 +136,11 @@ bool gps_l1_ca_telemetry_decoder_cc::gps_word_parityCheck(uint32_t gpsword) parity = t ^ _rotl(t, 6) ^ _rotl(t, 12) ^ _rotl(t, 18) ^ _rotl(t, 24); parity = parity & 0x3F; if (parity == (gpsword & 0x3F)) - return (true); - else - return (false); + { + return (true); + } + + return (false); } @@ -165,7 +167,7 @@ void gps_l1_ca_telemetry_decoder_cc::set_channel(int32_t channel) try { d_dump_filename = "telemetry"; - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); @@ -193,11 +195,11 @@ bool gps_l1_ca_telemetry_decoder_cc::decode_subframe() bool subframe_synchro_confirmation = false; bool CRC_ok = true; - for (int32_t n = 0; n < GPS_SUBFRAME_MS; n++) + for (float d_subframe_symbol : d_subframe_symbols) { // ******* SYMBOL TO BIT ******* // extended correlation to bit period is enabled in tracking! - symbol_accumulator += d_subframe_symbols[n]; // accumulate the input value in d_symbol_accumulator + symbol_accumulator += d_subframe_symbol; // accumulate the input value in d_symbol_accumulator symbol_accumulator_counter++; if (symbol_accumulator_counter == 20) { @@ -311,15 +313,15 @@ int gps_l1_ca_telemetry_decoder_cc::general_work(int noutput_items __attribute__ { int32_t preamble_diff_ms = 0; - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); // Get the output buffer pointer - const Gnss_Synchro **in = reinterpret_cast(&input_items[0]); // Get the input buffer pointer + auto **out = reinterpret_cast(&output_items[0]); // Get the output buffer pointer + const auto **in = reinterpret_cast(&input_items[0]); // Get the input buffer pointer - Gnss_Synchro current_symbol; // structure to save the synchronization information and send the output object to the next block + Gnss_Synchro current_symbol{}; // structure to save the synchronization information and send the output object to the next block // 1. Copy the current tracking output current_symbol = in[0][0]; // record the oldest subframe symbol before inserting a new symbol into the circular buffer - if (d_current_subframe_symbol < GPS_SUBFRAME_MS and d_symbol_history.size() > 0) + if (d_current_subframe_symbol < GPS_SUBFRAME_MS and !d_symbol_history.empty()) { d_subframe_symbols[d_current_subframe_symbol] = d_symbol_history[0].Prompt_I; d_current_subframe_symbol++; @@ -474,8 +476,7 @@ int gps_l1_ca_telemetry_decoder_cc::general_work(int noutput_items __attribute__ return 1; } - else - { - return 0; - } + + + return 0; } diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h index 745128047..c1b55cd9f 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h @@ -32,13 +32,13 @@ #define GNSS_SDR_GPS_L1_CA_TELEMETRY_DECODER_CC_H #include "GPS_L1_CA.h" -#include "gps_navigation_message.h" #include "gnss_satellite.h" #include "gnss_synchro.h" +#include "gps_navigation_message.h" +#include #include #include #include -#include class gps_l1_ca_telemetry_decoder_cc; @@ -82,7 +82,7 @@ private: // symbols boost::circular_buffer d_symbol_history; - float d_subframe_symbols[GPS_SUBFRAME_MS]; // symbols per subframe + float d_subframe_symbols[GPS_SUBFRAME_MS]{}; // symbols per subframe int d_current_subframe_symbol; // bits and frame diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_cc.cc b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_cc.cc index 6790c8559..49e5704d6 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_cc.cc +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_cc.cc @@ -31,8 +31,8 @@ #include "gps_l2c_telemetry_decoder_cc.h" -#include "gnss_synchro.h" #include "display.h" +#include "gnss_synchro.h" #include #include #include @@ -109,7 +109,7 @@ void gps_l2c_telemetry_decoder_cc::set_channel(int channel) try { d_dump_filename = "telemetry_L2CM_"; - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); @@ -129,8 +129,8 @@ int gps_l2c_telemetry_decoder_cc::general_work(int noutput_items __attribute__(( gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { // get pointers on in- and output gnss-synchro objects - Gnss_Synchro *out = reinterpret_cast(output_items[0]); // Get the output buffer pointer - const Gnss_Synchro *in = reinterpret_cast(input_items[0]); // Get the input buffer pointer + auto *out = reinterpret_cast(output_items[0]); // Get the output buffer pointer + const auto *in = reinterpret_cast(input_items[0]); // Get the input buffer pointer bool flag_new_cnav_frame = false; cnav_msg_t msg; @@ -143,7 +143,7 @@ int gps_l2c_telemetry_decoder_cc::general_work(int noutput_items __attribute__(( consume_each(1); // one by one // UPDATE GNSS SYNCHRO DATA - Gnss_Synchro current_synchro_data; // structure to save the synchronization information and send the output object to the next block + Gnss_Synchro current_synchro_data{}; // structure to save the synchronization information and send the output object to the next block // 1. Copy the current tracking output current_synchro_data = in[0]; diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_cc.h b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_cc.h index 932fb6db7..8b5922575 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_cc.h +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_cc.h @@ -33,9 +33,9 @@ #include "gnss_satellite.h" -#include "gps_cnav_navigation_message.h" #include "gps_cnav_ephemeris.h" #include "gps_cnav_iono.h" +#include "gps_cnav_navigation_message.h" #include #include // for copy #include @@ -48,9 +48,9 @@ extern "C" { +#include "bits.h" #include "cnav_msg.h" #include "edc.h" -#include "bits.h" } #include "GPS_L2C.h" @@ -91,7 +91,7 @@ private: std::string d_dump_filename; std::ofstream d_dump_file; - cnav_msg_decoder_t d_cnav_decoder; + cnav_msg_decoder_t d_cnav_decoder{}; int32_t d_state; int32_t d_crc_error_count; diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l5_telemetry_decoder_cc.cc b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l5_telemetry_decoder_cc.cc index 8aafd598a..76e64eaaf 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l5_telemetry_decoder_cc.cc +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l5_telemetry_decoder_cc.cc @@ -121,7 +121,7 @@ void gps_l5_telemetry_decoder_cc::set_channel(int32_t channel) try { d_dump_filename = "telemetry_L5_"; - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); @@ -141,11 +141,11 @@ int gps_l5_telemetry_decoder_cc::general_work(int noutput_items __attribute__((u gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { // get pointers on in- and output gnss-synchro objects - Gnss_Synchro *out = reinterpret_cast(output_items[0]); // Get the output buffer pointer - const Gnss_Synchro *in = reinterpret_cast(input_items[0]); // Get the input buffer pointer + auto *out = reinterpret_cast(output_items[0]); // Get the output buffer pointer + const auto *in = reinterpret_cast(input_items[0]); // Get the input buffer pointer // UPDATE GNSS SYNCHRO DATA - Gnss_Synchro current_synchro_data; //structure to save the synchronization information and send the output object to the next block + Gnss_Synchro current_synchro_data{}; //structure to save the synchronization information and send the output object to the next block // 1. Copy the current tracking output current_synchro_data = in[0]; consume_each(1); //one by one @@ -282,8 +282,5 @@ int gps_l5_telemetry_decoder_cc::general_work(int noutput_items __attribute__((u out[0] = current_synchro_data; return 1; } - else - { - return 0; - } + return 0; } diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l5_telemetry_decoder_cc.h b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l5_telemetry_decoder_cc.h index e5e98cde6..eb57696bc 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l5_telemetry_decoder_cc.h +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l5_telemetry_decoder_cc.h @@ -44,9 +44,9 @@ extern "C" { +#include "bits.h" #include "cnav_msg.h" #include "edc.h" -#include "bits.h" } #include "GPS_L5.h" @@ -83,14 +83,14 @@ private: std::string d_dump_filename; std::ofstream d_dump_file; - cnav_msg_decoder_t d_cnav_decoder; + cnav_msg_decoder_t d_cnav_decoder{}; uint32_t d_TOW_at_current_symbol_ms; uint32_t d_TOW_at_Preamble_ms; bool d_flag_valid_word; Gps_CNAV_Navigation_Message d_CNAV_Message; - double bits_NH[GPS_L5i_NH_CODE_LENGTH]; + double bits_NH[GPS_L5i_NH_CODE_LENGTH]{}; std::deque sym_hist; bool sync_NH; bool new_sym; diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/sbas_l1_telemetry_decoder_cc.cc b/src/algorithms/telemetry_decoder/gnuradio_blocks/sbas_l1_telemetry_decoder_cc.cc index 2515788bb..705df32a4 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/sbas_l1_telemetry_decoder_cc.cc +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/sbas_l1_telemetry_decoder_cc.cc @@ -110,9 +110,7 @@ sbas_l1_telemetry_decoder_cc::sample_aligner::sample_aligner() } -sbas_l1_telemetry_decoder_cc::sample_aligner::~sample_aligner() -{ -} +sbas_l1_telemetry_decoder_cc::sample_aligner::~sample_aligner() = default; void sbas_l1_telemetry_decoder_cc::sample_aligner::reset() @@ -127,7 +125,7 @@ void sbas_l1_telemetry_decoder_cc::sample_aligner::reset() /* * samples length must be a multiple of two */ -bool sbas_l1_telemetry_decoder_cc::sample_aligner::get_symbols(const std::vector samples, std::vector &symbols) +bool sbas_l1_telemetry_decoder_cc::sample_aligner::get_symbols(const std::vector &samples, std::vector &symbols) { double smpls[3] = {}; double corr_diff; @@ -215,7 +213,7 @@ void sbas_l1_telemetry_decoder_cc::symbol_aligner_and_decoder::reset() } -bool sbas_l1_telemetry_decoder_cc::symbol_aligner_and_decoder::get_bits(const std::vector symbols, std::vector &bits) +bool sbas_l1_telemetry_decoder_cc::symbol_aligner_and_decoder::get_bits(const std::vector &symbols, std::vector &bits) { const int32_t traceback_depth = 5 * d_KK; int32_t nbits_requested = symbols.size() / d_symbols_per_bit; @@ -224,13 +222,13 @@ bool sbas_l1_telemetry_decoder_cc::symbol_aligner_and_decoder::get_bits(const st std::vector symbols_vd1(symbols); // aligned symbol vector -> copy input symbol vector std::vector symbols_vd2; // shifted symbol vector -> add past sample in front of input vector symbols_vd2.push_back(d_past_symbol); - for (std::vector::const_iterator symbol_it = symbols.cbegin(); symbol_it != symbols.cend() - 1; ++symbol_it) + for (auto symbol_it = symbols.cbegin(); symbol_it != symbols.cend() - 1; ++symbol_it) { symbols_vd2.push_back(*symbol_it); } // arrays for decoded bits - int32_t *bits_vd1 = new int32_t[nbits_requested]; - int32_t *bits_vd2 = new int32_t[nbits_requested]; + auto *bits_vd1 = new int32_t[nbits_requested]; + auto *bits_vd2 = new int32_t[nbits_requested]; // decode float metric_vd1 = d_vd1->decode_continuous(symbols_vd1.data(), traceback_depth, bits_vd1, nbits_requested, nbits_decoded); float metric_vd2 = d_vd2->decode_continuous(symbols_vd2.data(), traceback_depth, bits_vd2, nbits_requested, nbits_decoded); @@ -260,7 +258,7 @@ void sbas_l1_telemetry_decoder_cc::frame_detector::reset() } -void sbas_l1_telemetry_decoder_cc::frame_detector::get_frame_candidates(const std::vector bits, std::vector>> &msg_candidates) +void sbas_l1_telemetry_decoder_cc::frame_detector::get_frame_candidates(const std::vector &bits, std::vector>> &msg_candidates) { std::stringstream ss; uint32_t sbas_msg_length = 250; @@ -272,7 +270,7 @@ void sbas_l1_telemetry_decoder_cc::frame_detector::get_frame_candidates(const st ss << "copy bits "; int32_t count = 0; // copy new bits into the working buffer - for (std::vector::const_iterator bit_it = bits.cbegin(); bit_it < bits.cend(); ++bit_it) + for (auto bit_it = bits.cbegin(); bit_it < bits.cend(); ++bit_it) { d_buffer.push_back(*bit_it); ss << *bit_it; @@ -283,12 +281,12 @@ void sbas_l1_telemetry_decoder_cc::frame_detector::get_frame_candidates(const st while (d_buffer.size() >= sbas_msg_length) { // compare with all preambles - for (std::vector>::iterator preample_it = preambles.begin(); preample_it < preambles.end(); ++preample_it) + for (auto preample_it = preambles.begin(); preample_it < preambles.end(); ++preample_it) { bool preamble_detected = true; bool inv_preamble_detected = true; // compare the buffer bits with the preamble bits - for (std::vector::iterator preample_bit_it = preample_it->begin(); preample_bit_it < preample_it->end(); ++preample_bit_it) + for (auto preample_bit_it = preample_it->begin(); preample_bit_it < preample_it->end(); ++preample_bit_it) { preamble_detected = *preample_bit_it == d_buffer[preample_bit_it - preample_it->begin()] ? preamble_detected : false; inv_preamble_detected = *preample_bit_it != d_buffer[preample_bit_it - preample_it->begin()] ? inv_preamble_detected : false; @@ -301,13 +299,13 @@ void sbas_l1_telemetry_decoder_cc::frame_detector::get_frame_candidates(const st if (inv_preamble_detected) { // invert bits - for (std::vector::iterator candidate_bit_it = candidate.begin(); candidate_bit_it != candidate.end(); candidate_bit_it++) - *candidate_bit_it = *candidate_bit_it == 0 ? 1 : 0; + for (int &candidate_bit_it : candidate) + candidate_bit_it = candidate_bit_it == 0 ? 1 : 0; } - msg_candidates.push_back(std::pair>(relative_preamble_start, candidate)); + msg_candidates.emplace_back(relative_preamble_start, candidate); ss.str(""); ss << "preamble " << preample_it - preambles.begin() << (inv_preamble_detected ? " inverted" : " normal") << " detected! candidate="; - for (std::vector::iterator bit_it = candidate.begin(); bit_it < candidate.end(); ++bit_it) + for (auto bit_it = candidate.begin(); bit_it < candidate.end(); ++bit_it) ss << *bit_it; VLOG(EVENT) << ss.str(); } @@ -325,13 +323,13 @@ void sbas_l1_telemetry_decoder_cc::crc_verifier::reset() } -void sbas_l1_telemetry_decoder_cc::crc_verifier::get_valid_frames(const std::vector msg_candidates, std::vector &valid_msgs) +void sbas_l1_telemetry_decoder_cc::crc_verifier::get_valid_frames(const std::vector &msg_candidates, std::vector &valid_msgs) { std::stringstream ss; VLOG(FLOW) << "get_valid_frames(): " << "msg_candidates.size()=" << msg_candidates.size(); // for each candidate - for (std::vector::const_iterator candidate_it = msg_candidates.cbegin(); candidate_it < msg_candidates.cend(); ++candidate_it) + for (auto candidate_it = msg_candidates.cbegin(); candidate_it < msg_candidates.cend(); ++candidate_it) { // convert to bytes std::vector candidate_bytes; @@ -346,7 +344,7 @@ void sbas_l1_telemetry_decoder_cc::crc_verifier::get_valid_frames(const std::vec // the final remainder must be zero for a valid message, because the CRC is done over the received CRC value if (crc == 0) { - valid_msgs.push_back(msg_candiate_char_t(candidate_it->first, candidate_bytes)); + valid_msgs.emplace_back(candidate_it->first, candidate_bytes); ss << "Valid message found!"; } else @@ -354,7 +352,7 @@ void sbas_l1_telemetry_decoder_cc::crc_verifier::get_valid_frames(const std::vec ss << "Not a valid message."; } ss << " Relbitoffset=" << candidate_it->first << " content="; - for (std::vector::iterator byte_it = candidate_bytes.begin(); byte_it < candidate_bytes.end(); ++byte_it) + for (auto byte_it = candidate_bytes.begin(); byte_it < candidate_bytes.end(); ++byte_it) { ss << std::setw(2) << std::setfill('0') << std::hex << static_cast((*byte_it)); } @@ -363,13 +361,13 @@ void sbas_l1_telemetry_decoder_cc::crc_verifier::get_valid_frames(const std::vec } -void sbas_l1_telemetry_decoder_cc::crc_verifier::zerropad_back_and_convert_to_bytes(const std::vector msg_candidate, std::vector &bytes) +void sbas_l1_telemetry_decoder_cc::crc_verifier::zerropad_back_and_convert_to_bytes(const std::vector &msg_candidate, std::vector &bytes) { std::stringstream ss; const size_t bits_per_byte = 8; uint8_t byte = 0; VLOG(LMORE) << "zerropad_back_and_convert_to_bytes():" << byte; - for (std::vector::const_iterator candidate_bit_it = msg_candidate.cbegin(); candidate_bit_it < msg_candidate.cend(); ++candidate_bit_it) + for (auto candidate_bit_it = msg_candidate.cbegin(); candidate_bit_it < msg_candidate.cend(); ++candidate_bit_it) { int32_t idx_bit = candidate_bit_it - msg_candidate.begin(); int32_t bit_pos_in_current_byte = (bits_per_byte - 1) - (idx_bit % bits_per_byte); @@ -390,14 +388,14 @@ void sbas_l1_telemetry_decoder_cc::crc_verifier::zerropad_back_and_convert_to_by } -void sbas_l1_telemetry_decoder_cc::crc_verifier::zerropad_front_and_convert_to_bytes(const std::vector msg_candidate, std::vector &bytes) +void sbas_l1_telemetry_decoder_cc::crc_verifier::zerropad_front_and_convert_to_bytes(const std::vector &msg_candidate, std::vector &bytes) { std::stringstream ss; const size_t bits_per_byte = 8; uint8_t byte = 0; int32_t idx_bit = 6; // insert 6 zeros at the front to fit the 250bits into a multiple of bytes VLOG(LMORE) << "zerropad_front_and_convert_to_bytes():" << byte; - for (std::vector::const_iterator candidate_bit_it = msg_candidate.cbegin(); candidate_bit_it < msg_candidate.cend(); ++candidate_bit_it) + for (auto candidate_bit_it = msg_candidate.cbegin(); candidate_bit_it < msg_candidate.cend(); ++candidate_bit_it) { int32_t bit_pos_in_current_byte = (bits_per_byte - 1) - (idx_bit % bits_per_byte); byte |= static_cast(*candidate_bit_it) << bit_pos_in_current_byte; @@ -424,10 +422,10 @@ int sbas_l1_telemetry_decoder_cc::general_work(int noutput_items __attribute__(( VLOG(FLOW) << "general_work(): " << "noutput_items=" << noutput_items << "\toutput_items real size=" << output_items.size() << "\tninput_items size=" << ninput_items.size() << "\tinput_items real size=" << input_items.size() << "\tninput_items[0]=" << ninput_items[0]; // get pointers on in- and output gnss-synchro objects - Gnss_Synchro *out = reinterpret_cast(output_items[0]); // Get the output buffer pointer - const Gnss_Synchro *in = reinterpret_cast(input_items[0]); // Get the input buffer pointer + auto *out = reinterpret_cast(output_items[0]); // Get the output buffer pointer + const auto *in = reinterpret_cast(input_items[0]); // Get the input buffer pointer - Gnss_Synchro current_symbol; // structure to save the synchronization information and send the output object to the next block + Gnss_Synchro current_symbol{}; // structure to save the synchronization information and send the output object to the next block // 1. Copy the current tracking output current_symbol = in[0]; // copy correlation samples into samples vector @@ -462,17 +460,16 @@ int sbas_l1_telemetry_decoder_cc::general_work(int noutput_items __attribute__(( // compute message sample stamp // and fill messages in SBAS raw message objects //std::vector sbas_raw_msgs; - for (std::vector::const_iterator it = valid_msgs.cbegin(); - it != valid_msgs.cend(); ++it) + for (const auto &valid_msg : valid_msgs) { int32_t message_sample_offset = - (sample_alignment ? 0 : -1) + d_samples_per_symbol * (symbol_alignment ? -1 : 0) + d_samples_per_symbol * d_symbols_per_bit * it->first; + (sample_alignment ? 0 : -1) + d_samples_per_symbol * (symbol_alignment ? -1 : 0) + d_samples_per_symbol * d_symbols_per_bit * valid_msg.first; double message_sample_stamp = sample_stamp + static_cast(message_sample_offset) / 1000.0; VLOG(EVENT) << "message_sample_stamp=" << message_sample_stamp << " (sample_stamp=" << sample_stamp << " sample_alignment=" << sample_alignment << " symbol_alignment=" << symbol_alignment - << " relative_preamble_start=" << it->first + << " relative_preamble_start=" << valid_msg.first << " message_sample_offset=" << message_sample_offset << ")"; //Sbas_Raw_Msg sbas_raw_msg(message_sample_stamp, this->d_satellite.get_PRN(), it->second); diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/sbas_l1_telemetry_decoder_cc.h b/src/algorithms/telemetry_decoder/gnuradio_blocks/sbas_l1_telemetry_decoder_cc.h index 27853723f..5dcf4f27b 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/sbas_l1_telemetry_decoder_cc.h +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/sbas_l1_telemetry_decoder_cc.h @@ -104,7 +104,7 @@ private: * samples length must be a multiple of two * for block operation */ - bool get_symbols(const std::vector samples, std::vector &symbols); + bool get_symbols(const std::vector &samples, std::vector &symbols); private: int32_t d_n_smpls_in_history; @@ -122,7 +122,7 @@ private: symbol_aligner_and_decoder(); ~symbol_aligner_and_decoder(); void reset(); - bool get_bits(const std::vector symbols, std::vector &bits); + bool get_bits(const std::vector &symbols, std::vector &bits); private: int32_t d_KK; @@ -137,7 +137,7 @@ private: { public: void reset(); - void get_frame_candidates(const std::vector bits, std::vector>> &msg_candidates); + void get_frame_candidates(const std::vector &bits, std::vector>> &msg_candidates); private: std::deque d_buffer; @@ -149,13 +149,13 @@ private: { public: void reset(); - void get_valid_frames(const std::vector msg_candidates, std::vector &valid_msgs); + void get_valid_frames(const std::vector &msg_candidates, std::vector &valid_msgs); private: typedef boost::crc_optimal<24, 0x1864CFBu, 0x0, 0x0, false, false> crc_24_q_type; crc_24_q_type d_checksum_agent; - void zerropad_front_and_convert_to_bytes(const std::vector msg_candidate, std::vector &bytes); - void zerropad_back_and_convert_to_bytes(const std::vector msg_candidate, std::vector &bytes); + void zerropad_front_and_convert_to_bytes(const std::vector &msg_candidate, std::vector &bytes); + void zerropad_back_and_convert_to_bytes(const std::vector &msg_candidate, std::vector &bytes); } d_crc_verifier; }; diff --git a/src/algorithms/telemetry_decoder/libs/libswiftcnav/cnav_msg.h b/src/algorithms/telemetry_decoder/libs/libswiftcnav/cnav_msg.h index 23e29d958..f402675c5 100644 --- a/src/algorithms/telemetry_decoder/libs/libswiftcnav/cnav_msg.h +++ b/src/algorithms/telemetry_decoder/libs/libswiftcnav/cnav_msg.h @@ -34,13 +34,11 @@ #define LIBSWIFTNAV_CNAV_MSG_H #include "fec.h" - +#include "swift_common.h" +#include #include #include #include -#include - -#include "swift_common.h" /** \addtogroup GPS_L2 * \{ */ diff --git a/src/algorithms/telemetry_decoder/libs/libswiftcnav/swift_common.h b/src/algorithms/telemetry_decoder/libs/libswiftcnav/swift_common.h index 78d99ca0f..b4a3a6fae 100644 --- a/src/algorithms/telemetry_decoder/libs/libswiftcnav/swift_common.h +++ b/src/algorithms/telemetry_decoder/libs/libswiftcnav/swift_common.h @@ -44,9 +44,9 @@ #define MAX(x, y) (((x) > (y)) ? (x) : (y)) #define CLAMP_DIFF(a, b) (MAX((a), (b)) - (b)) -#include -#include #include +#include +#include #ifndef COMMON_INT_TYPES #define COMMON_INT_TYPES diff --git a/src/algorithms/telemetry_decoder/libs/libswiftcnav/viterbi27.c b/src/algorithms/telemetry_decoder/libs/libswiftcnav/viterbi27.c index bf14cb297..9739c2ab3 100644 --- a/src/algorithms/telemetry_decoder/libs/libswiftcnav/viterbi27.c +++ b/src/algorithms/telemetry_decoder/libs/libswiftcnav/viterbi27.c @@ -95,15 +95,15 @@ void v27_init(v27_t *v, v27_decision_t *decisions, unsigned int decisions_count, unsigned int metric,m0,m1,decision;\ metric = (v->poly->c0[i] ^ sym0) + (v->poly->c1[i] ^ sym1);\ m0 = v->old_metrics[i] + metric;\ - m1 = v->old_metrics[i+32] + (510 - metric);\ + m1 = v->old_metrics[(i)+32] + (510 - metric);\ decision = (signed int)(m0-m1) > 0;\ - v->new_metrics[2*i] = decision ? m1 : m0;\ - d->w[i/16] |= decision << ((2*i)&31);\ + v->new_metrics[2*(i)] = decision ? m1 : m0;\ + d->w[(i)/16] |= decision << ((2*(i))&31);\ m0 -= (metric+metric-510);\ m1 += (metric+metric-510);\ decision = (signed int)(m0-m1) > 0;\ - v->new_metrics[2*i+1] = decision ? m1 : m0;\ - d->w[i/16] |= decision << ((2*i+1)&31);\ + v->new_metrics[2*(i)+1] = decision ? m1 : m0;\ + d->w[(i)/16] |= decision << ((2*(i)+1)&31);\ } /** Update a v27_t decoder with a block of symbols. diff --git a/src/algorithms/telemetry_decoder/libs/viterbi_decoder.cc b/src/algorithms/telemetry_decoder/libs/viterbi_decoder.cc index 4d399939a..957efa9a6 100644 --- a/src/algorithms/telemetry_decoder/libs/viterbi_decoder.cc +++ b/src/algorithms/telemetry_decoder/libs/viterbi_decoder.cc @@ -180,7 +180,7 @@ int Viterbi_Decoder::do_acs(const double sym[], int nbits) int t, i, state_at_t; float metric; float max_val; - float* pm_t_next = new float[d_states]; + auto* pm_t_next = new float[d_states]; /* t: * - state: state at t @@ -354,7 +354,7 @@ int Viterbi_Decoder::do_tb_and_decode(int traceback_length, int requested_decodi nn The length of the received vector This function is used by siso() */ -float Viterbi_Decoder::gamma(float rec_array[], int symbol, int nn) +float Viterbi_Decoder::gamma(const float rec_array[], int symbol, int nn) { float rm = 0; int i; @@ -559,12 +559,9 @@ int Viterbi_Decoder::Prev::get_anchestor_state_of_current_state(int current_stat { return state[current_state]; } - else - { - //std::cout<<"alarm "<<"num_states="< using google::LogMessage; -void GalileoE1DllPllVemlTracking::stop_tracking() -{ -} GalileoE1DllPllVemlTracking::GalileoE1DllPllVemlTracking( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { Dll_Pll_Conf trk_param = Dll_Pll_Conf(); @@ -133,7 +130,7 @@ GalileoE1DllPllVemlTracking::GalileoE1DllPllVemlTracking( trk_param.carrier_lock_th = carrier_lock_th; //################# MAKE TRACKING GNURadio object ################### - if (item_type.compare("gr_complex") == 0) + if (item_type == "gr_complex") { item_size_ = sizeof(gr_complex); tracking_ = dll_pll_veml_make_tracking(trk_param); @@ -157,7 +154,10 @@ GalileoE1DllPllVemlTracking::GalileoE1DllPllVemlTracking( } -GalileoE1DllPllVemlTracking::~GalileoE1DllPllVemlTracking() +GalileoE1DllPllVemlTracking::~GalileoE1DllPllVemlTracking() = default; + + +void GalileoE1DllPllVemlTracking::stop_tracking() { } diff --git a/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.h b/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.h index f6193fde5..035daf48e 100644 --- a/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.h +++ b/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.h @@ -37,8 +37,8 @@ #ifndef GNSS_SDR_GALILEO_E1_DLL_PLL_VEML_TRACKING_H_ #define GNSS_SDR_GALILEO_E1_DLL_PLL_VEML_TRACKING_H_ -#include "tracking_interface.h" #include "dll_pll_veml_tracking.h" +#include "tracking_interface.h" #include @@ -52,7 +52,7 @@ class GalileoE1DllPllVemlTracking : public TrackingInterface { public: GalileoE1DllPllVemlTracking(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking_fpga.cc b/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking_fpga.cc index 179e19f3c..31d2cbfff 100644 --- a/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking_fpga.cc +++ b/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking_fpga.cc @@ -35,11 +35,11 @@ */ #include "galileo_e1_dll_pll_veml_tracking_fpga.h" -#include "configuration_interface.h" #include "Galileo_E1.h" +#include "configuration_interface.h" +#include "display.h" #include "galileo_e1_signal_processing.h" #include "gnss_sdr_flags.h" -#include "display.h" #include //#define NUM_PRNs_GALILEO_E1 50 @@ -51,7 +51,7 @@ void GalileoE1DllPllVemlTrackingFpga::stop_tracking() } GalileoE1DllPllVemlTrackingFpga::GalileoE1DllPllVemlTrackingFpga( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { //dllpllconf_t trk_param; diff --git a/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking_fpga.h b/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking_fpga.h index 55d8127ee..794aa22d4 100644 --- a/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking_fpga.h +++ b/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking_fpga.h @@ -37,8 +37,8 @@ #ifndef GNSS_SDR_GALILEO_E1_DLL_PLL_VEML_TRACKING_FPGA_H_ #define GNSS_SDR_GALILEO_E1_DLL_PLL_VEML_TRACKING_FPGA_H_ -#include "tracking_interface.h" #include "dll_pll_veml_tracking_fpga.h" +#include "tracking_interface.h" #include @@ -52,7 +52,7 @@ class GalileoE1DllPllVemlTrackingFpga : public TrackingInterface { public: GalileoE1DllPllVemlTrackingFpga(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.cc b/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.cc index 5b21f41ee..70fdd98a2 100644 --- a/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.cc +++ b/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.cc @@ -36,21 +36,19 @@ */ #include "galileo_e1_tcp_connector_tracking.h" -#include #include "Galileo_E1.h" #include "configuration_interface.h" #include "gnss_sdr_flags.h" +#include +#include using google::LogMessage; -void GalileoE1TcpConnectorTracking::stop_tracking() -{ -} GalileoE1TcpConnectorTracking::GalileoE1TcpConnectorTracking( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, const std::string& role, + unsigned int in_streams, unsigned int out_streams) : role_(std::move(role)), in_streams_(in_streams), out_streams_(out_streams) { DLOG(INFO) << "role " << role; //################# CONFIGURATION PARAMETERS ######################## @@ -81,7 +79,7 @@ GalileoE1TcpConnectorTracking::GalileoE1TcpConnectorTracking( vector_length = std::round(fs_in / (Galileo_E1_CODE_CHIP_RATE_HZ / Galileo_E1_B_CODE_LENGTH_CHIPS)); //################# MAKE TRACKING GNURadio object ################### - if (item_type.compare("gr_complex") == 0) + if (item_type == "gr_complex") { item_size_ = sizeof(gr_complex); tracking_ = galileo_e1_tcp_connector_make_tracking_cc( @@ -113,7 +111,10 @@ GalileoE1TcpConnectorTracking::GalileoE1TcpConnectorTracking( } -GalileoE1TcpConnectorTracking::~GalileoE1TcpConnectorTracking() +GalileoE1TcpConnectorTracking::~GalileoE1TcpConnectorTracking() = default; + + +void GalileoE1TcpConnectorTracking::stop_tracking() { } diff --git a/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.h b/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.h index 8a75834d6..ff68056f7 100644 --- a/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.h +++ b/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.h @@ -39,9 +39,9 @@ #ifndef GNSS_SDR_GALILEO_E1_TCP_CONNECTOR_TRACKING_H_ #define GNSS_SDR_GALILEO_E1_TCP_CONNECTOR_TRACKING_H_ -#include -#include "tracking_interface.h" #include "galileo_e1_tcp_connector_tracking_cc.h" +#include "tracking_interface.h" +#include class ConfigurationInterface; @@ -53,7 +53,7 @@ class GalileoE1TcpConnectorTracking : public TrackingInterface { public: GalileoE1TcpConnectorTracking(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking.cc b/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking.cc index c3a8244e2..b0e0a0730 100644 --- a/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking.cc +++ b/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking.cc @@ -35,22 +35,19 @@ * * ------------------------------------------------------------------------- */ -#include "dll_pll_conf.h" #include "galileo_e5a_dll_pll_tracking.h" -#include "configuration_interface.h" #include "Galileo_E5a.h" -#include "gnss_sdr_flags.h" +#include "configuration_interface.h" #include "display.h" +#include "dll_pll_conf.h" +#include "gnss_sdr_flags.h" #include using google::LogMessage; -void GalileoE5aDllPllTracking::stop_tracking() -{ -} GalileoE5aDllPllTracking::GalileoE5aDllPllTracking( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { Dll_Pll_Conf trk_param = Dll_Pll_Conf(); @@ -131,7 +128,7 @@ GalileoE5aDllPllTracking::GalileoE5aDllPllTracking( trk_param.carrier_lock_th = carrier_lock_th; //################# MAKE TRACKING GNURadio object ################### - if (item_type.compare("gr_complex") == 0) + if (item_type == "gr_complex") { item_size_ = sizeof(gr_complex); tracking_ = dll_pll_veml_make_tracking(trk_param); @@ -154,7 +151,10 @@ GalileoE5aDllPllTracking::GalileoE5aDllPllTracking( } -GalileoE5aDllPllTracking::~GalileoE5aDllPllTracking() +GalileoE5aDllPllTracking::~GalileoE5aDllPllTracking() = default; + + +void GalileoE5aDllPllTracking::stop_tracking() { } diff --git a/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking.h b/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking.h index c9444f503..1aefcf2cf 100644 --- a/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking.h +++ b/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking.h @@ -39,8 +39,8 @@ #ifndef GNSS_SDR_GALILEO_E5A_DLL_PLL_TRACKING_H_ #define GNSS_SDR_GALILEO_E5A_DLL_PLL_TRACKING_H_ -#include "tracking_interface.h" #include "dll_pll_veml_tracking.h" +#include "tracking_interface.h" #include class ConfigurationInterface; @@ -52,7 +52,7 @@ class GalileoE5aDllPllTracking : public TrackingInterface { public: GalileoE5aDllPllTracking(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking_fpga.cc b/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking_fpga.cc index d4fa38d2f..1a5e1cf09 100644 --- a/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking_fpga.cc +++ b/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking_fpga.cc @@ -37,11 +37,11 @@ */ #include "galileo_e5a_dll_pll_tracking_fpga.h" -#include "configuration_interface.h" #include "Galileo_E5a.h" +#include "configuration_interface.h" +#include "display.h" #include "galileo_e5_signal_processing.h" #include "gnss_sdr_flags.h" -#include "display.h" #include using google::LogMessage; @@ -51,7 +51,7 @@ void GalileoE5aDllPllTrackingFpga::stop_tracking() } GalileoE5aDllPllTrackingFpga::GalileoE5aDllPllTrackingFpga( - ConfigurationInterface *configuration, std::string role, + ConfigurationInterface *configuration, const std::string &role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { //printf("creating the E5A tracking"); @@ -136,9 +136,9 @@ GalileoE5aDllPllTrackingFpga::GalileoE5aDllPllTrackingFpga( //################# PRE-COMPUTE ALL THE CODES ################# unsigned int code_samples_per_chip = 1; - unsigned int code_length_chips = static_cast(Galileo_E5a_CODE_LENGTH_CHIPS); + auto code_length_chips = static_cast(Galileo_E5a_CODE_LENGTH_CHIPS); - gr_complex *aux_code = static_cast(volk_gnsssdr_malloc(sizeof(gr_complex) * code_length_chips * code_samples_per_chip, volk_gnsssdr_get_alignment())); + auto *aux_code = static_cast(volk_gnsssdr_malloc(sizeof(gr_complex) * code_length_chips * code_samples_per_chip, volk_gnsssdr_get_alignment())); float *tracking_code; float *data_code; diff --git a/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking_fpga.h b/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking_fpga.h index 45325d458..49c52de5e 100644 --- a/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking_fpga.h +++ b/src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking_fpga.h @@ -39,8 +39,8 @@ #ifndef GNSS_SDR_GALILEO_E5A_DLL_PLL_TRACKING_FPGA_H_ #define GNSS_SDR_GALILEO_E5A_DLL_PLL_TRACKING_FPGA_H_ -#include "tracking_interface.h" #include "dll_pll_veml_tracking_fpga.h" +#include "tracking_interface.h" #include class ConfigurationInterface; @@ -52,7 +52,7 @@ class GalileoE5aDllPllTrackingFpga : public TrackingInterface { public: GalileoE5aDllPllTrackingFpga(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_c_aid_tracking.cc b/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_c_aid_tracking.cc index 2287f53ba..30101a0ff 100644 --- a/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_c_aid_tracking.cc +++ b/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_c_aid_tracking.cc @@ -38,20 +38,17 @@ */ #include "glonass_l1_ca_dll_pll_c_aid_tracking.h" +#include "GLONASS_L1_L2_CA.h" #include "configuration_interface.h" #include "gnss_sdr_flags.h" -#include "GLONASS_L1_L2_CA.h" #include using google::LogMessage; -void GlonassL1CaDllPllCAidTracking::stop_tracking() -{ -} GlonassL1CaDllPllCAidTracking::GlonassL1CaDllPllCAidTracking( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { DLOG(INFO) << "role " << role; @@ -86,7 +83,7 @@ GlonassL1CaDllPllCAidTracking::GlonassL1CaDllPllCAidTracking( vector_length = std::round(fs_in / (GLONASS_L1_CA_CODE_RATE_HZ / GLONASS_L1_CA_CODE_LENGTH_CHIPS)); //################# MAKE TRACKING GNURadio object ################### - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); tracking_cc = glonass_l1_ca_dll_pll_c_aid_make_tracking_cc( @@ -102,7 +99,7 @@ GlonassL1CaDllPllCAidTracking::GlonassL1CaDllPllCAidTracking( early_late_space_chips); DLOG(INFO) << "tracking(" << tracking_cc->unique_id() << ")"; } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { item_size_ = sizeof(lv_16sc_t); tracking_sc = glonass_l1_ca_dll_pll_c_aid_make_tracking_sc( @@ -135,18 +132,21 @@ GlonassL1CaDllPllCAidTracking::GlonassL1CaDllPllCAidTracking( } -GlonassL1CaDllPllCAidTracking::~GlonassL1CaDllPllCAidTracking() +GlonassL1CaDllPllCAidTracking::~GlonassL1CaDllPllCAidTracking() = default; + + +void GlonassL1CaDllPllCAidTracking::stop_tracking() { } void GlonassL1CaDllPllCAidTracking::start_tracking() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { tracking_cc->start_tracking(); } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { tracking_sc->start_tracking(); } @@ -164,11 +164,11 @@ void GlonassL1CaDllPllCAidTracking::set_channel(unsigned int channel) { channel_ = channel; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { tracking_cc->set_channel(channel); } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { tracking_sc->set_channel(channel); } @@ -181,11 +181,11 @@ void GlonassL1CaDllPllCAidTracking::set_channel(unsigned int channel) void GlonassL1CaDllPllCAidTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { tracking_cc->set_gnss_synchro(p_gnss_synchro); } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { tracking_sc->set_gnss_synchro(p_gnss_synchro); } @@ -216,35 +216,31 @@ void GlonassL1CaDllPllCAidTracking::disconnect(gr::top_block_sptr top_block) gr::basic_block_sptr GlonassL1CaDllPllCAidTracking::get_left_block() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return tracking_cc; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return tracking_sc; } - else - { - LOG(WARNING) << item_type_ << " unknown tracking item type"; - return nullptr; - } + LOG(WARNING) << item_type_ << " unknown tracking item type"; + return nullptr; } gr::basic_block_sptr GlonassL1CaDllPllCAidTracking::get_right_block() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return tracking_cc; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return tracking_sc; } - else - { - LOG(WARNING) << item_type_ << " unknown tracking item type"; - return nullptr; - } + + + LOG(WARNING) << item_type_ << " unknown tracking item type"; + return nullptr; } diff --git a/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_c_aid_tracking.h b/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_c_aid_tracking.h index 26e1f0db9..d50003964 100644 --- a/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_c_aid_tracking.h +++ b/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_c_aid_tracking.h @@ -40,9 +40,9 @@ #ifndef GNSS_SDR_GLONASS_L1_CA_DLL_PLL_C_AID_TRACKING_H_ #define GNSS_SDR_GLONASS_L1_CA_DLL_PLL_C_AID_TRACKING_H_ -#include "tracking_interface.h" #include "glonass_l1_ca_dll_pll_c_aid_tracking_cc.h" #include "glonass_l1_ca_dll_pll_c_aid_tracking_sc.h" +#include "tracking_interface.h" #include class ConfigurationInterface; @@ -54,7 +54,7 @@ class GlonassL1CaDllPllCAidTracking : public TrackingInterface { public: GlonassL1CaDllPllCAidTracking(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_tracking.cc b/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_tracking.cc index eb5f35176..a96165d47 100644 --- a/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_tracking.cc +++ b/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_tracking.cc @@ -37,20 +37,17 @@ */ #include "glonass_l1_ca_dll_pll_tracking.h" +#include "GLONASS_L1_L2_CA.h" #include "configuration_interface.h" #include "gnss_sdr_flags.h" -#include "GLONASS_L1_L2_CA.h" #include using google::LogMessage; -void GlonassL1CaDllPllTracking::stop_tracking() -{ -} GlonassL1CaDllPllTracking::GlonassL1CaDllPllTracking( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { DLOG(INFO) << "role " << role; @@ -78,7 +75,7 @@ GlonassL1CaDllPllTracking::GlonassL1CaDllPllTracking( vector_length = std::round(fs_in / (GLONASS_L1_CA_CODE_RATE_HZ / GLONASS_L1_CA_CODE_LENGTH_CHIPS)); //################# MAKE TRACKING GNURadio object ################### - if (item_type.compare("gr_complex") == 0) + if (item_type == "gr_complex") { item_size_ = sizeof(gr_complex); tracking_ = glonass_l1_ca_dll_pll_make_tracking_cc( @@ -108,7 +105,10 @@ GlonassL1CaDllPllTracking::GlonassL1CaDllPllTracking( } -GlonassL1CaDllPllTracking::~GlonassL1CaDllPllTracking() +GlonassL1CaDllPllTracking::~GlonassL1CaDllPllTracking() = default; + + +void GlonassL1CaDllPllTracking::stop_tracking() { } diff --git a/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_tracking.h b/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_tracking.h index d5e1a4544..cd8482113 100644 --- a/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_tracking.h +++ b/src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_tracking.h @@ -39,8 +39,8 @@ #ifndef GNSS_SDR_GLONASS_L1_CA_DLL_PLL_TRACKING_H_ #define GNSS_SDR_GLONASS_L1_CA_DLL_PLL_TRACKING_H_ -#include "tracking_interface.h" #include "glonass_l1_ca_dll_pll_tracking_cc.h" +#include "tracking_interface.h" #include class ConfigurationInterface; @@ -52,7 +52,7 @@ class GlonassL1CaDllPllTracking : public TrackingInterface { public: GlonassL1CaDllPllTracking(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_c_aid_tracking.cc b/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_c_aid_tracking.cc index d4d0d0e98..4ddff7163 100644 --- a/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_c_aid_tracking.cc +++ b/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_c_aid_tracking.cc @@ -36,20 +36,17 @@ */ #include "glonass_l2_ca_dll_pll_c_aid_tracking.h" -#include "configuration_interface.h" #include "GLONASS_L1_L2_CA.h" +#include "configuration_interface.h" #include "gnss_sdr_flags.h" #include using google::LogMessage; -void GlonassL2CaDllPllCAidTracking::stop_tracking() -{ -} GlonassL2CaDllPllCAidTracking::GlonassL2CaDllPllCAidTracking( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { DLOG(INFO) << "role " << role; @@ -84,7 +81,7 @@ GlonassL2CaDllPllCAidTracking::GlonassL2CaDllPllCAidTracking( vector_length = std::round(fs_in / (GLONASS_L2_CA_CODE_RATE_HZ / GLONASS_L2_CA_CODE_LENGTH_CHIPS)); //################# MAKE TRACKING GNURadio object ################### - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); tracking_cc = glonass_l2_ca_dll_pll_c_aid_make_tracking_cc( @@ -100,7 +97,7 @@ GlonassL2CaDllPllCAidTracking::GlonassL2CaDllPllCAidTracking( early_late_space_chips); DLOG(INFO) << "tracking(" << tracking_cc->unique_id() << ")"; } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { item_size_ = sizeof(lv_16sc_t); tracking_sc = glonass_l2_ca_dll_pll_c_aid_make_tracking_sc( @@ -133,18 +130,21 @@ GlonassL2CaDllPllCAidTracking::GlonassL2CaDllPllCAidTracking( } -GlonassL2CaDllPllCAidTracking::~GlonassL2CaDllPllCAidTracking() +GlonassL2CaDllPllCAidTracking::~GlonassL2CaDllPllCAidTracking() = default; + + +void GlonassL2CaDllPllCAidTracking::stop_tracking() { } void GlonassL2CaDllPllCAidTracking::start_tracking() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { tracking_cc->start_tracking(); } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { tracking_sc->start_tracking(); } @@ -162,11 +162,11 @@ void GlonassL2CaDllPllCAidTracking::set_channel(unsigned int channel) { channel_ = channel; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { tracking_cc->set_channel(channel); } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { tracking_sc->set_channel(channel); } @@ -179,11 +179,11 @@ void GlonassL2CaDllPllCAidTracking::set_channel(unsigned int channel) void GlonassL2CaDllPllCAidTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { tracking_cc->set_gnss_synchro(p_gnss_synchro); } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { tracking_sc->set_gnss_synchro(p_gnss_synchro); } @@ -214,35 +214,29 @@ void GlonassL2CaDllPllCAidTracking::disconnect(gr::top_block_sptr top_block) gr::basic_block_sptr GlonassL2CaDllPllCAidTracking::get_left_block() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return tracking_cc; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return tracking_sc; } - else - { - LOG(WARNING) << item_type_ << " unknown tracking item type"; - return nullptr; - } + LOG(WARNING) << item_type_ << " unknown tracking item type"; + return nullptr; } gr::basic_block_sptr GlonassL2CaDllPllCAidTracking::get_right_block() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return tracking_cc; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return tracking_sc; } - else - { - LOG(WARNING) << item_type_ << " unknown tracking item type"; - return nullptr; - } + LOG(WARNING) << item_type_ << " unknown tracking item type"; + return nullptr; } diff --git a/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_c_aid_tracking.h b/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_c_aid_tracking.h index 085cf73ac..b5659c527 100644 --- a/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_c_aid_tracking.h +++ b/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_c_aid_tracking.h @@ -38,9 +38,9 @@ #ifndef GNSS_SDR_GLONASS_L2_CA_DLL_PLL_C_AID_TRACKING_H_ #define GNSS_SDR_GLONASS_L2_CA_DLL_PLL_C_AID_TRACKING_H_ -#include "tracking_interface.h" #include "glonass_l2_ca_dll_pll_c_aid_tracking_cc.h" #include "glonass_l2_ca_dll_pll_c_aid_tracking_sc.h" +#include "tracking_interface.h" #include class ConfigurationInterface; @@ -52,7 +52,7 @@ class GlonassL2CaDllPllCAidTracking : public TrackingInterface { public: GlonassL2CaDllPllCAidTracking(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_tracking.cc b/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_tracking.cc index a6a49aa1c..3c39300af 100644 --- a/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_tracking.cc +++ b/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_tracking.cc @@ -35,20 +35,17 @@ */ #include "glonass_l2_ca_dll_pll_tracking.h" -#include "configuration_interface.h" #include "GLONASS_L1_L2_CA.h" +#include "configuration_interface.h" #include "gnss_sdr_flags.h" #include using google::LogMessage; -void GlonassL2CaDllPllTracking::stop_tracking() -{ -} GlonassL2CaDllPllTracking::GlonassL2CaDllPllTracking( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { DLOG(INFO) << "role " << role; @@ -76,7 +73,7 @@ GlonassL2CaDllPllTracking::GlonassL2CaDllPllTracking( vector_length = std::round(fs_in / (GLONASS_L2_CA_CODE_RATE_HZ / GLONASS_L2_CA_CODE_LENGTH_CHIPS)); //################# MAKE TRACKING GNURadio object ################### - if (item_type.compare("gr_complex") == 0) + if (item_type == "gr_complex") { item_size_ = sizeof(gr_complex); tracking_ = glonass_l2_ca_dll_pll_make_tracking_cc( @@ -106,7 +103,10 @@ GlonassL2CaDllPllTracking::GlonassL2CaDllPllTracking( } -GlonassL2CaDllPllTracking::~GlonassL2CaDllPllTracking() +GlonassL2CaDllPllTracking::~GlonassL2CaDllPllTracking() = default; + + +void GlonassL2CaDllPllTracking::stop_tracking() { } diff --git a/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_tracking.h b/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_tracking.h index 1c2b715ed..1ca41a94b 100644 --- a/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_tracking.h +++ b/src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_tracking.h @@ -38,8 +38,8 @@ #ifndef GNSS_SDR_GLONASS_L2_CA_DLL_PLL_TRACKING_H_ #define GNSS_SDR_GLONASS_L2_CA_DLL_PLL_TRACKING_H_ -#include "tracking_interface.h" #include "glonass_l2_ca_dll_pll_tracking_cc.h" +#include "tracking_interface.h" #include class ConfigurationInterface; @@ -51,7 +51,7 @@ class GlonassL2CaDllPllTracking : public TrackingInterface { public: GlonassL2CaDllPllTracking(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_c_aid_tracking.cc b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_c_aid_tracking.cc index c821d311d..899e878e2 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_c_aid_tracking.cc +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_c_aid_tracking.cc @@ -45,12 +45,9 @@ using google::LogMessage; -void GpsL1CaDllPllCAidTracking::stop_tracking() -{ -} GpsL1CaDllPllCAidTracking::GpsL1CaDllPllCAidTracking( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { DLOG(INFO) << "role " << role; @@ -85,7 +82,7 @@ GpsL1CaDllPllCAidTracking::GpsL1CaDllPllCAidTracking( vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); //################# MAKE TRACKING GNURadio object ################### - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { item_size_ = sizeof(gr_complex); tracking_cc = gps_l1_ca_dll_pll_c_aid_make_tracking_cc( @@ -101,7 +98,7 @@ GpsL1CaDllPllCAidTracking::GpsL1CaDllPllCAidTracking( early_late_space_chips); DLOG(INFO) << "tracking(" << tracking_cc->unique_id() << ")"; } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { item_size_ = sizeof(lv_16sc_t); tracking_sc = gps_l1_ca_dll_pll_c_aid_make_tracking_sc( @@ -134,18 +131,21 @@ GpsL1CaDllPllCAidTracking::GpsL1CaDllPllCAidTracking( } -GpsL1CaDllPllCAidTracking::~GpsL1CaDllPllCAidTracking() +GpsL1CaDllPllCAidTracking::~GpsL1CaDllPllCAidTracking() = default; + + +void GpsL1CaDllPllCAidTracking::stop_tracking() { } void GpsL1CaDllPllCAidTracking::start_tracking() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { tracking_cc->start_tracking(); } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { tracking_sc->start_tracking(); } @@ -162,11 +162,11 @@ void GpsL1CaDllPllCAidTracking::set_channel(unsigned int channel) { channel_ = channel; - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { tracking_cc->set_channel(channel); } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { tracking_sc->set_channel(channel); } @@ -178,11 +178,11 @@ void GpsL1CaDllPllCAidTracking::set_channel(unsigned int channel) void GpsL1CaDllPllCAidTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { tracking_cc->set_gnss_synchro(p_gnss_synchro); } - else if (item_type_.compare("cshort") == 0) + else if (item_type_ == "cshort") { tracking_sc->set_gnss_synchro(p_gnss_synchro); } @@ -210,34 +210,28 @@ void GpsL1CaDllPllCAidTracking::disconnect(gr::top_block_sptr top_block) gr::basic_block_sptr GpsL1CaDllPllCAidTracking::get_left_block() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return tracking_cc; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return tracking_sc; } - else - { - LOG(WARNING) << item_type_ << " unknown tracking item type"; - return nullptr; - } + LOG(WARNING) << item_type_ << " unknown tracking item type"; + return nullptr; } gr::basic_block_sptr GpsL1CaDllPllCAidTracking::get_right_block() { - if (item_type_.compare("gr_complex") == 0) + if (item_type_ == "gr_complex") { return tracking_cc; } - else if (item_type_.compare("cshort") == 0) + if (item_type_ == "cshort") { return tracking_sc; } - else - { - LOG(WARNING) << item_type_ << " unknown tracking item type"; - return nullptr; - } + LOG(WARNING) << item_type_ << " unknown tracking item type"; + return nullptr; } diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_c_aid_tracking.h b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_c_aid_tracking.h index 6b4dec2e5..a1c54aa46 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_c_aid_tracking.h +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_c_aid_tracking.h @@ -38,9 +38,9 @@ #ifndef GNSS_SDR_GPS_L1_CA_DLL_PLL_C_AID_TRACKING_H_ #define GNSS_SDR_GPS_L1_CA_DLL_PLL_C_AID_TRACKING_H_ -#include "tracking_interface.h" #include "gps_l1_ca_dll_pll_c_aid_tracking_cc.h" #include "gps_l1_ca_dll_pll_c_aid_tracking_sc.h" +#include "tracking_interface.h" #include @@ -53,7 +53,7 @@ class GpsL1CaDllPllCAidTracking : public TrackingInterface { public: GpsL1CaDllPllCAidTracking(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.cc b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.cc index b0fff7263..394574667 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.cc +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.cc @@ -35,23 +35,19 @@ * ------------------------------------------------------------------------- */ -#include "dll_pll_conf.h" #include "gps_l1_ca_dll_pll_tracking.h" -#include "configuration_interface.h" #include "GPS_L1_CA.h" -#include "gnss_sdr_flags.h" +#include "configuration_interface.h" #include "display.h" +#include "dll_pll_conf.h" +#include "gnss_sdr_flags.h" #include using google::LogMessage; -void GpsL1CaDllPllTracking::stop_tracking() -{ - tracking_->stop_tracking(); -} GpsL1CaDllPllTracking::GpsL1CaDllPllTracking( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { Dll_Pll_Conf trk_param = Dll_Pll_Conf(); @@ -136,7 +132,7 @@ GpsL1CaDllPllTracking::GpsL1CaDllPllTracking( trk_param.carrier_lock_th = carrier_lock_th; //################# MAKE TRACKING GNURadio object ################### - if (item_type.compare("gr_complex") == 0) + if (item_type == "gr_complex") { item_size_ = sizeof(gr_complex); tracking_ = dll_pll_veml_make_tracking(trk_param); @@ -159,8 +155,12 @@ GpsL1CaDllPllTracking::GpsL1CaDllPllTracking( } -GpsL1CaDllPllTracking::~GpsL1CaDllPllTracking() +GpsL1CaDllPllTracking::~GpsL1CaDllPllTracking() = default; + + +void GpsL1CaDllPllTracking::stop_tracking() { + tracking_->stop_tracking(); } diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.h b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.h index cbd4797f2..288de9ae0 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.h +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.h @@ -38,8 +38,8 @@ #ifndef GNSS_SDR_GPS_L1_CA_DLL_PLL_TRACKING_H_ #define GNSS_SDR_GPS_L1_CA_DLL_PLL_TRACKING_H_ -#include "tracking_interface.h" #include "dll_pll_veml_tracking.h" +#include "tracking_interface.h" #include class ConfigurationInterface; @@ -51,7 +51,7 @@ class GpsL1CaDllPllTracking : public TrackingInterface { public: GpsL1CaDllPllTracking(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_fpga.cc b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_fpga.cc index 37f946e9f..e81e7a905 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_fpga.cc +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_fpga.cc @@ -36,13 +36,13 @@ * ------------------------------------------------------------------------- */ -#include -#include "gps_sdr_signal_processing.h" #include "gps_l1_ca_dll_pll_tracking_fpga.h" -#include "configuration_interface.h" #include "GPS_L1_CA.h" -#include "gnss_sdr_flags.h" +#include "configuration_interface.h" #include "display.h" +#include "gnss_sdr_flags.h" +#include "gps_sdr_signal_processing.h" +#include #define NUM_PRNs 32 @@ -53,7 +53,7 @@ void GpsL1CaDllPllTrackingFpga::stop_tracking() } GpsL1CaDllPllTrackingFpga::GpsL1CaDllPllTrackingFpga( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { Dll_Pll_Conf_Fpga trk_param_fpga = Dll_Pll_Conf_Fpga(); diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_fpga.h b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_fpga.h index 80b998246..5cc38f230 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_fpga.h +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_fpga.h @@ -39,9 +39,9 @@ #ifndef GNSS_SDR_GPS_L1_CA_DLL_PLL_TRACKING_FPGA_H_ #define GNSS_SDR_GPS_L1_CA_DLL_PLL_TRACKING_FPGA_H_ -#include -#include "tracking_interface.h" #include "dll_pll_veml_tracking_fpga.h" +#include "tracking_interface.h" +#include class ConfigurationInterface; @@ -53,7 +53,7 @@ class GpsL1CaDllPllTrackingFpga : public TrackingInterface { public: GpsL1CaDllPllTrackingFpga(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_gpu.cc b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_gpu.cc index c82f228b5..848cd2bd6 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_gpu.cc +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_gpu.cc @@ -36,10 +36,10 @@ #include "gps_l1_ca_dll_pll_tracking_gpu.h" -#include #include "GPS_L1_CA.h" #include "configuration_interface.h" #include "gnss_sdr_flags.h" +#include using google::LogMessage; diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_gpu.h b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_gpu.h index 794152bb8..1a5c381ab 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_gpu.h +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_gpu.h @@ -37,9 +37,9 @@ #ifndef GNSS_SDR_GPS_L1_CA_DLL_PLL_TRACKING_GPU_H_ #define GNSS_SDR_GPS_L1_CA_DLL_PLL_TRACKING_GPU_H_ -#include -#include "tracking_interface.h" #include "gps_l1_ca_dll_pll_tracking_gpu_cc.h" +#include "tracking_interface.h" +#include class ConfigurationInterface; diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_kf_tracking.cc b/src/algorithms/tracking/adapters/gps_l1_ca_kf_tracking.cc index 2c33723e6..e0960758f 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_kf_tracking.cc +++ b/src/algorithms/tracking/adapters/gps_l1_ca_kf_tracking.cc @@ -39,20 +39,17 @@ #include "gps_l1_ca_kf_tracking.h" -#include "gnss_sdr_flags.h" #include "GPS_L1_CA.h" #include "configuration_interface.h" +#include "gnss_sdr_flags.h" #include using google::LogMessage; -void GpsL1CaKfTracking::stop_tracking() -{ -} GpsL1CaKfTracking::GpsL1CaKfTracking( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { DLOG(INFO) << "role " << role; @@ -93,7 +90,7 @@ GpsL1CaKfTracking::GpsL1CaKfTracking( bce_kappa = configuration->property(role + ".bce_kappa", 0); //################# MAKE TRACKING GNURadio object ################### - if (item_type.compare("gr_complex") == 0) + if (item_type == "gr_complex") { item_size_ = sizeof(gr_complex); tracking_ = gps_l1_ca_kf_make_tracking_cc( @@ -121,7 +118,10 @@ GpsL1CaKfTracking::GpsL1CaKfTracking( } -GpsL1CaKfTracking::~GpsL1CaKfTracking() +GpsL1CaKfTracking::~GpsL1CaKfTracking() = default; + + +void GpsL1CaKfTracking::stop_tracking() { } diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_kf_tracking.h b/src/algorithms/tracking/adapters/gps_l1_ca_kf_tracking.h index d8af76ce8..e26198619 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_kf_tracking.h +++ b/src/algorithms/tracking/adapters/gps_l1_ca_kf_tracking.h @@ -53,7 +53,7 @@ class GpsL1CaKfTracking : public TrackingInterface { public: GpsL1CaKfTracking(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.cc b/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.cc index 9e3cf4bfa..3000ac8ae 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.cc +++ b/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.cc @@ -36,20 +36,18 @@ */ #include "gps_l1_ca_tcp_connector_tracking.h" -#include #include "GPS_L1_CA.h" #include "configuration_interface.h" +#include +#include using google::LogMessage; -void GpsL1CaTcpConnectorTracking::stop_tracking() -{ -} GpsL1CaTcpConnectorTracking::GpsL1CaTcpConnectorTracking( - ConfigurationInterface* configuration, std::string role, - unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) + ConfigurationInterface* configuration, const std::string& role, + unsigned int in_streams, unsigned int out_streams) : role_(std::move(role)), in_streams_(in_streams), out_streams_(out_streams) { DLOG(INFO) << "role " << role; //################# CONFIGURATION PARAMETERS ######################## @@ -73,7 +71,7 @@ GpsL1CaTcpConnectorTracking::GpsL1CaTcpConnectorTracking( vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); //################# MAKE TRACKING GNURadio object ################### - if (item_type.compare("gr_complex") == 0) + if (item_type == "gr_complex") { item_size_ = sizeof(gr_complex); tracking_ = gps_l1_ca_tcp_connector_make_tracking_cc( @@ -103,7 +101,10 @@ GpsL1CaTcpConnectorTracking::GpsL1CaTcpConnectorTracking( } -GpsL1CaTcpConnectorTracking::~GpsL1CaTcpConnectorTracking() +GpsL1CaTcpConnectorTracking::~GpsL1CaTcpConnectorTracking() = default; + + +void GpsL1CaTcpConnectorTracking::stop_tracking() { } diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.h b/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.h index f2fb94b3a..1e910839e 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.h +++ b/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.h @@ -38,9 +38,9 @@ #ifndef GNSS_SDR_GPS_L1_CA_TCP_CONNECTOR_TRACKING_H_ #define GNSS_SDR_GPS_L1_CA_TCP_CONNECTOR_TRACKING_H_ -#include -#include "tracking_interface.h" #include "gps_l1_ca_tcp_connector_tracking_cc.h" +#include "tracking_interface.h" +#include class ConfigurationInterface; @@ -52,7 +52,7 @@ class GpsL1CaTcpConnectorTracking : public TrackingInterface { public: GpsL1CaTcpConnectorTracking(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking.cc b/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking.cc index f4bb44321..332b7b9c2 100644 --- a/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking.cc +++ b/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking.cc @@ -34,23 +34,20 @@ * ------------------------------------------------------------------------- */ -#include "dll_pll_conf.h" #include "gps_l2_m_dll_pll_tracking.h" -#include "configuration_interface.h" #include "GPS_L2C.h" -#include "gnss_sdr_flags.h" +#include "configuration_interface.h" #include "display.h" +#include "dll_pll_conf.h" +#include "gnss_sdr_flags.h" #include using google::LogMessage; -void GpsL2MDllPllTracking::stop_tracking() -{ -} GpsL2MDllPllTracking::GpsL2MDllPllTracking( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { Dll_Pll_Conf trk_param = Dll_Pll_Conf(); @@ -112,7 +109,7 @@ GpsL2MDllPllTracking::GpsL2MDllPllTracking( trk_param.carrier_lock_th = carrier_lock_th; //################# MAKE TRACKING GNURadio object ################### - if (item_type.compare("gr_complex") == 0) + if (item_type == "gr_complex") { item_size_ = sizeof(gr_complex); tracking_ = dll_pll_veml_make_tracking(trk_param); @@ -135,11 +132,13 @@ GpsL2MDllPllTracking::GpsL2MDllPllTracking( } -GpsL2MDllPllTracking::~GpsL2MDllPllTracking() +GpsL2MDllPllTracking::~GpsL2MDllPllTracking() = default; + + +void GpsL2MDllPllTracking::stop_tracking() { } - void GpsL2MDllPllTracking::start_tracking() { tracking_->start_tracking(); diff --git a/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking.h b/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking.h index 23835c405..20618a4cf 100644 --- a/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking.h +++ b/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking.h @@ -38,8 +38,8 @@ #ifndef GNSS_SDR_gps_l2_m_dll_pll_tracking_H_ #define GNSS_SDR_gps_l2_m_dll_pll_tracking_H_ -#include "tracking_interface.h" #include "dll_pll_veml_tracking.h" +#include "tracking_interface.h" #include class ConfigurationInterface; @@ -51,7 +51,7 @@ class GpsL2MDllPllTracking : public TrackingInterface { public: GpsL2MDllPllTracking(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking_fpga.cc b/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking_fpga.cc index f10d876dc..c133b1ea1 100644 --- a/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking_fpga.cc +++ b/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking_fpga.cc @@ -36,11 +36,11 @@ #include "gps_l2_m_dll_pll_tracking_fpga.h" -#include "configuration_interface.h" #include "GPS_L2C.h" -#include "gps_l2c_signal.h" -#include "gnss_sdr_flags.h" +#include "configuration_interface.h" #include "display.h" +#include "gnss_sdr_flags.h" +#include "gps_l2c_signal.h" #include #define NUM_PRNs 32 @@ -52,7 +52,7 @@ void GpsL2MDllPllTrackingFpga::stop_tracking() } GpsL2MDllPllTrackingFpga::GpsL2MDllPllTrackingFpga( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { //dllpllconf_t trk_param; @@ -125,7 +125,7 @@ GpsL2MDllPllTrackingFpga::GpsL2MDllPllTrackingFpga( //d_tracking_code = static_cast(volk_gnsssdr_malloc(2 * static_cast(GPS_L2_M_CODE_LENGTH_CHIPS) * sizeof(float), volk_gnsssdr_get_alignment())); d_ca_codes = static_cast(volk_gnsssdr_malloc(static_cast(GPS_L2_M_CODE_LENGTH_CHIPS) * NUM_PRNs * sizeof(int), volk_gnsssdr_get_alignment())); - float* ca_codes_f = static_cast(volk_gnsssdr_malloc(static_cast(GPS_L2_M_CODE_LENGTH_CHIPS) * sizeof(float), volk_gnsssdr_get_alignment())); + auto* ca_codes_f = static_cast(volk_gnsssdr_malloc(static_cast(GPS_L2_M_CODE_LENGTH_CHIPS) * sizeof(float), volk_gnsssdr_get_alignment())); //################# PRE-COMPUTE ALL THE CODES ################# d_ca_codes = static_cast(volk_gnsssdr_malloc(static_cast(GPS_L2_M_CODE_LENGTH_CHIPS * NUM_PRNs) * sizeof(int), volk_gnsssdr_get_alignment())); @@ -167,9 +167,7 @@ GpsL2MDllPllTrackingFpga::GpsL2MDllPllTrackingFpga( } -GpsL2MDllPllTrackingFpga::~GpsL2MDllPllTrackingFpga() -{ -} +GpsL2MDllPllTrackingFpga::~GpsL2MDllPllTrackingFpga() = default; void GpsL2MDllPllTrackingFpga::start_tracking() diff --git a/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking_fpga.h b/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking_fpga.h index 2cde19cd7..7d36d1e74 100644 --- a/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking_fpga.h +++ b/src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking_fpga.h @@ -52,7 +52,7 @@ class GpsL2MDllPllTrackingFpga : public TrackingInterface { public: GpsL2MDllPllTrackingFpga(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking.cc b/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking.cc index 9954777ec..c471f98b8 100644 --- a/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking.cc +++ b/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking.cc @@ -34,23 +34,20 @@ * ------------------------------------------------------------------------- */ -#include "dll_pll_conf.h" #include "gps_l5_dll_pll_tracking.h" -#include "configuration_interface.h" #include "GPS_L5.h" -#include "gnss_sdr_flags.h" +#include "configuration_interface.h" #include "display.h" +#include "dll_pll_conf.h" +#include "gnss_sdr_flags.h" #include using google::LogMessage; -void GpsL5DllPllTracking::stop_tracking() -{ -} GpsL5DllPllTracking::GpsL5DllPllTracking( - ConfigurationInterface* configuration, std::string role, + ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { Dll_Pll_Conf trk_param = Dll_Pll_Conf(); @@ -131,7 +128,7 @@ GpsL5DllPllTracking::GpsL5DllPllTracking( trk_param.carrier_lock_th = carrier_lock_th; //################# MAKE TRACKING GNURadio object ################### - if (item_type.compare("gr_complex") == 0) + if (item_type == "gr_complex") { item_size_ = sizeof(gr_complex); tracking_ = dll_pll_veml_make_tracking(trk_param); @@ -154,7 +151,10 @@ GpsL5DllPllTracking::GpsL5DllPllTracking( } -GpsL5DllPllTracking::~GpsL5DllPllTracking() +GpsL5DllPllTracking::~GpsL5DllPllTracking() = default; + + +void GpsL5DllPllTracking::stop_tracking() { } diff --git a/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking.h b/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking.h index 59a8983fc..763df8bb0 100644 --- a/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking.h +++ b/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking.h @@ -37,8 +37,8 @@ #ifndef GNSS_SDR_GPS_L5_DLL_PLL_TRACKING_H_ #define GNSS_SDR_GPS_L5_DLL_PLL_TRACKING_H_ -#include "tracking_interface.h" #include "dll_pll_veml_tracking.h" +#include "tracking_interface.h" #include class ConfigurationInterface; @@ -50,7 +50,7 @@ class GpsL5DllPllTracking : public TrackingInterface { public: GpsL5DllPllTracking(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking_fpga.cc b/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking_fpga.cc index bbc5c17bb..effa0c5b7 100644 --- a/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking_fpga.cc +++ b/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking_fpga.cc @@ -36,11 +36,11 @@ #include "gps_l5_dll_pll_tracking_fpga.h" -#include "configuration_interface.h" #include "GPS_L5.h" -#include "gps_l5_signal.h" -#include "gnss_sdr_flags.h" +#include "configuration_interface.h" #include "display.h" +#include "gnss_sdr_flags.h" +#include "gps_l5_signal.h" #include #define NUM_PRNs 32 @@ -52,7 +52,7 @@ void GpsL5DllPllTrackingFpga::stop_tracking() } GpsL5DllPllTrackingFpga::GpsL5DllPllTrackingFpga( - ConfigurationInterface *configuration, std::string role, + ConfigurationInterface *configuration, const std::string &role, unsigned int in_streams, unsigned int out_streams) : role_(role), in_streams_(in_streams), out_streams_(out_streams) { //printf("L5 TRK CLASS CREATED\n"); @@ -136,7 +136,7 @@ GpsL5DllPllTrackingFpga::GpsL5DllPllTrackingFpga( //################# PRE-COMPUTE ALL THE CODES ################# unsigned int code_samples_per_chip = 1; - unsigned int code_length_chips = static_cast(GPS_L5i_CODE_LENGTH_CHIPS); + auto code_length_chips = static_cast(GPS_L5i_CODE_LENGTH_CHIPS); //printf("TRK code_length_chips = %d\n", code_length_chips); float *tracking_code; diff --git a/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking_fpga.h b/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking_fpga.h index 64043fb70..087f3730c 100644 --- a/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking_fpga.h +++ b/src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking_fpga.h @@ -37,8 +37,8 @@ #ifndef GNSS_SDR_GPS_L5_DLL_PLL_TRACKING_FPGA_H_ #define GNSS_SDR_GPS_L5_DLL_PLL_TRACKING_FPGA_H_ -#include "tracking_interface.h" #include "dll_pll_veml_tracking_fpga.h" +#include "tracking_interface.h" #include class ConfigurationInterface; @@ -50,7 +50,7 @@ class GpsL5DllPllTrackingFpga : public TrackingInterface { public: GpsL5DllPllTrackingFpga(ConfigurationInterface* configuration, - std::string role, + const std::string& role, unsigned int in_streams, unsigned int out_streams); diff --git a/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking.cc b/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking.cc old mode 100755 new mode 100644 index 0a15c7a39..caefee8f7 --- a/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking.cc +++ b/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking.cc @@ -1,8 +1,8 @@ /*! * \file dll_pll_veml_tracking.cc * \brief Implementation of a code DLL + carrier PLL tracking block. + * \author Javier Arribas, 2018. jarribas(at)cttc.es * \author Antonio Ramos, 2018 antonio.ramosdet(at)gmail.com - * Javier Arribas, 2018. jarribas(at)cttc.es * * Code DLL + carrier PLL according to the algorithms described in: * [1] K.Borre, D.M.Akos, N.Bertelsen, P.Rinder, and S.H.Jensen, @@ -35,23 +35,23 @@ */ #include "dll_pll_veml_tracking.h" -#include "tracking_discriminators.h" -#include "lock_detectors.h" -#include "control_message_factory.h" -#include "MATH_CONSTANTS.h" -#include "Galileo_E1.h" -#include "galileo_e1_signal_processing.h" -#include "Galileo_E5a.h" -#include "galileo_e5_signal_processing.h" #include "GPS_L1_CA.h" -#include "gps_sdr_signal_processing.h" #include "GPS_L2C.h" -#include "gps_l2c_signal.h" #include "GPS_L5.h" -#include "gps_l5_signal.h" +#include "Galileo_E1.h" +#include "Galileo_E5a.h" #include "Beidou_B1I.h" +#include "MATH_CONSTANTS.h" +#include "control_message_factory.h" +#include "galileo_e1_signal_processing.h" +#include "galileo_e5_signal_processing.h" #include "beidou_b1i_signal_processing.h" #include "gnss_sdr_create_directory.h" +#include "gps_l2c_signal.h" +#include "gps_l5_signal.h" +#include "gps_sdr_signal_processing.h" +#include "lock_detectors.h" +#include "tracking_discriminators.h" #include #include #include @@ -60,9 +60,8 @@ #include #include #include -#include #include - +#include using google::LogMessage; @@ -117,7 +116,7 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl if (trk_parameters.system == 'G') { systemName = "GPS"; - if (signal_type.compare("1C") == 0) + if (signal_type == "1C") { d_signal_carrier_freq = GPS_L1_FREQ_HZ; d_code_period = GPS_L1_CA_CODE_PERIOD; @@ -137,11 +136,11 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl // preamble bits to sampled symbols d_gps_l1ca_preambles_symbols = static_cast(volk_gnsssdr_malloc(GPS_CA_PREAMBLE_LENGTH_SYMBOLS * sizeof(int32_t), volk_gnsssdr_get_alignment())); int32_t n = 0; - for (int32_t i = 0; i < GPS_CA_PREAMBLE_LENGTH_BITS; i++) + for (uint16_t preambles_bit : preambles_bits) { for (uint32_t j = 0; j < GPS_CA_TELEMETRY_SYMBOLS_PER_BIT; j++) { - if (preambles_bits[i] == 1) + if (preambles_bit == 1) { d_gps_l1ca_preambles_symbols[n] = 1; } @@ -155,7 +154,7 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl d_symbol_history.resize(GPS_CA_PREAMBLE_LENGTH_SYMBOLS); // Change fixed buffer size d_symbol_history.clear(); // Clear all the elements in the buffer } - else if (signal_type.compare("2S") == 0) + else if (signal_type == "2S") { d_signal_carrier_freq = GPS_L2_FREQ_HZ; d_code_period = GPS_L2_M_PERIOD; @@ -169,7 +168,7 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl trk_parameters.track_pilot = false; interchange_iq = false; } - else if (signal_type.compare("L5") == 0) + else if (signal_type == "L5") { d_signal_carrier_freq = GPS_L5_FREQ_HZ; d_code_period = GPS_L5i_PERIOD; @@ -211,7 +210,7 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl else if (trk_parameters.system == 'E') { systemName = "Galileo"; - if (signal_type.compare("1B") == 0) + if (signal_type == "1B") { d_signal_carrier_freq = Galileo_E1_FREQ_HZ; d_code_period = Galileo_E1_CODE_PERIOD; @@ -235,7 +234,7 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl } interchange_iq = false; // Note that E1-B and E1-C are in anti-phase, NOT IN QUADRATURE. See Galileo ICD. } - else if (signal_type.compare("5X") == 0) + else if (signal_type == "5X") { d_signal_carrier_freq = Galileo_E5a_FREQ_HZ; d_code_period = GALILEO_E5a_CODE_PERIOD; @@ -277,7 +276,7 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl else if (trk_parameters.system == 'C') { systemName = "Beidou"; - if (signal_type.compare("B1") == 0) + if (signal_type == "B1") { d_signal_carrier_freq = BEIDOU_B1I_FREQ_HZ; d_code_period = BEIDOU_B1I_CODE_PERIOD; @@ -327,10 +326,10 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl K_blk_samples = 0.0; // Initialize tracking ========================================== - d_code_loop_filter.set_DLL_BW(trk_parameters.dll_bw_hz); - d_carrier_loop_filter.set_PLL_BW(trk_parameters.pll_bw_hz); d_code_loop_filter = Tracking_2nd_DLL_filter(static_cast(d_code_period)); d_carrier_loop_filter = Tracking_2nd_PLL_filter(static_cast(d_code_period)); + d_code_loop_filter.set_DLL_BW(trk_parameters.dll_bw_hz); + d_carrier_loop_filter.set_PLL_BW(trk_parameters.pll_bw_hz); // Initialization of local code replica // Get space for a vector with the sinboc(1,1) replica sampled 2x/chip @@ -440,7 +439,6 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl d_carrier_phase_step_rad = 0.0; d_carrier_phase_rate_step_rad = 0.0; d_rem_code_phase_chips = 0.0; - d_code_phase_samples = 0.0; d_last_prompt = gr_complex(0.0, 0.0); d_state = 0; // initial state: standby clear_tracking_vars(); @@ -462,10 +460,10 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl d_dump_filename = trk_parameters.dump_filename; std::string dump_path; // Get path - if (d_dump_filename.find_last_of("/") != std::string::npos) + if (d_dump_filename.find_last_of('/') != std::string::npos) { - std::string dump_filename_ = d_dump_filename.substr(d_dump_filename.find_last_of("/") + 1); - dump_path = d_dump_filename.substr(0, d_dump_filename.find_last_of("/")); + std::string dump_filename_ = d_dump_filename.substr(d_dump_filename.find_last_of('/') + 1); + dump_path = d_dump_filename.substr(0, d_dump_filename.find_last_of('/')); d_dump_filename = dump_filename_; } else @@ -477,9 +475,9 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl d_dump_filename = "trk_channel_"; } // remove extension if any - if (d_dump_filename.substr(1).find_last_of(".") != std::string::npos) + if (d_dump_filename.substr(1).find_last_of('.') != std::string::npos) { - d_dump_filename = d_dump_filename.substr(0, d_dump_filename.find_last_of(".")); + d_dump_filename = d_dump_filename.substr(0, d_dump_filename.find_last_of('.')); } d_dump_filename = dump_path + boost::filesystem::path::preferred_separator + d_dump_filename; @@ -502,36 +500,6 @@ void dll_pll_veml_tracking::start_tracking() d_acq_carrier_doppler_hz = d_acquisition_gnss_synchro->Acq_doppler_hz; d_acq_sample_stamp = d_acquisition_gnss_synchro->Acq_samplestamp_samples; - int64_t acq_trk_diff_samples = static_cast(d_sample_counter) - static_cast(d_acq_sample_stamp); - double acq_trk_diff_seconds = static_cast(acq_trk_diff_samples) / trk_parameters.fs_in; - DLOG(INFO) << "Number of samples between Acquisition and Tracking = " << acq_trk_diff_samples; - DLOG(INFO) << "Number of seconds between Acquisition and Tracking = " << acq_trk_diff_seconds; - // Doppler effect Fd = (C / (C + Vr)) * F - double radial_velocity = (d_signal_carrier_freq + d_acq_carrier_doppler_hz) / d_signal_carrier_freq; - // new chip and PRN sequence periods based on acq Doppler - d_code_freq_chips = radial_velocity * d_code_chip_rate; - d_code_phase_step_chips = d_code_freq_chips / trk_parameters.fs_in; - d_code_phase_rate_step_chips = 0.0; - double T_chip_mod_seconds = 1.0 / d_code_freq_chips; - double T_prn_mod_seconds = T_chip_mod_seconds * static_cast(d_code_length_chips); - double T_prn_mod_samples = T_prn_mod_seconds * trk_parameters.fs_in; - - //d_current_prn_length_samples = std::round(T_prn_mod_samples); - d_current_prn_length_samples = std::floor(T_prn_mod_samples); - - double T_prn_true_seconds = static_cast(d_code_length_chips) / d_code_chip_rate; - double T_prn_true_samples = T_prn_true_seconds * trk_parameters.fs_in; - double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; - double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; - double corrected_acq_phase_samples = std::fmod(d_acq_code_phase_samples + T_prn_diff_seconds * N_prn_diff * trk_parameters.fs_in, T_prn_true_samples); - if (corrected_acq_phase_samples < 0.0) - { - corrected_acq_phase_samples += T_prn_mod_samples; - } - double delay_correction_samples = d_acq_code_phase_samples - corrected_acq_phase_samples; - - d_acq_code_phase_samples = corrected_acq_phase_samples; - d_carrier_doppler_hz = d_acq_carrier_doppler_hz; d_carrier_phase_step_rad = PI_2 * d_carrier_doppler_hz / trk_parameters.fs_in; d_carrier_phase_rate_step_rad = 0.0; @@ -541,15 +509,15 @@ void dll_pll_veml_tracking::start_tracking() d_carrier_loop_filter.initialize(); // initialize the carrier filter d_code_loop_filter.initialize(); // initialize the code filter - if (systemName.compare("GPS") == 0 and signal_type.compare("1C") == 0) + if (systemName == "GPS" and signal_type == "1C") { gps_l1_ca_code_gen_float(d_tracking_code, d_acquisition_gnss_synchro->PRN, 0); } - else if (systemName.compare("GPS") == 0 and signal_type.compare("2S") == 0) + else if (systemName == "GPS" and signal_type == "2S") { gps_l2c_m_code_gen_float(d_tracking_code, d_acquisition_gnss_synchro->PRN); } - else if (systemName.compare("GPS") == 0 and signal_type.compare("L5") == 0) + else if (systemName == "GPS" and signal_type == "L5") { if (trk_parameters.track_pilot) { @@ -563,7 +531,7 @@ void dll_pll_veml_tracking::start_tracking() gps_l5i_code_gen_float(d_tracking_code, d_acquisition_gnss_synchro->PRN); } } - else if (systemName.compare("Galileo") == 0 and signal_type.compare("1B") == 0) + else if (systemName == "Galileo" and signal_type == "1B") { if (trk_parameters.track_pilot) { @@ -578,9 +546,9 @@ void dll_pll_veml_tracking::start_tracking() galileo_e1_code_gen_sinboc11_float(d_tracking_code, d_acquisition_gnss_synchro->Signal, d_acquisition_gnss_synchro->PRN); } } - else if (systemName.compare("Galileo") == 0 and signal_type.compare("5X") == 0) + else if (systemName == "Galileo" and signal_type == "5X") { - gr_complex *aux_code = static_cast(volk_gnsssdr_malloc(sizeof(gr_complex) * d_code_length_chips, volk_gnsssdr_get_alignment())); + auto *aux_code = static_cast(volk_gnsssdr_malloc(sizeof(gr_complex) * d_code_length_chips, volk_gnsssdr_get_alignment())); galileo_e5_a_code_gen_complex_primary(aux_code, d_acquisition_gnss_synchro->PRN, const_cast(signal_type.c_str())); if (trk_parameters.track_pilot) { @@ -602,7 +570,7 @@ void dll_pll_veml_tracking::start_tracking() } volk_gnsssdr_free(aux_code); } - else if (systemName.compare("Beidou") == 0 and signal_type.compare("B1") == 0) + else if (systemName == "Beidou" and signal_type == "B1") { beidou_b1i_code_gen_float(d_tracking_code, d_acquisition_gnss_synchro->PRN, 0); } @@ -632,7 +600,6 @@ void dll_pll_veml_tracking::start_tracking() d_local_code_shift_chips[2] = trk_parameters.early_late_space_chips * static_cast(d_code_samples_per_chip); } - d_code_phase_samples = d_acq_code_phase_samples; d_code_loop_filter.set_DLL_BW(trk_parameters.dll_bw_hz); d_carrier_loop_filter.set_PLL_BW(trk_parameters.pll_bw_hz); d_carrier_loop_filter.set_pdi(static_cast(d_code_period)); @@ -640,22 +607,19 @@ void dll_pll_veml_tracking::start_tracking() // DEBUG OUTPUT std::cout << "Tracking of " << systemName << " " << signal_pretty_name << " signal started on channel " << d_channel << " for satellite " << Gnss_Satellite(systemName, d_acquisition_gnss_synchro->PRN) << std::endl; - LOG(INFO) << "Starting tracking of satellite " << Gnss_Satellite(systemName, d_acquisition_gnss_synchro->PRN) << " on channel " << d_channel; + DLOG(INFO) << "Starting tracking of satellite " << Gnss_Satellite(systemName, d_acquisition_gnss_synchro->PRN) << " on channel " << d_channel; // enable tracking pull-in d_state = 1; d_cloop = true; d_Prompt_buffer_deque.clear(); d_last_prompt = gr_complex(0.0, 0.0); - LOG(INFO) << "PULL-IN Doppler [Hz] = " << d_carrier_doppler_hz - << ". Code Phase correction [samples] = " << delay_correction_samples - << ". PULL-IN Code Phase [samples] = " << d_acq_code_phase_samples; } dll_pll_veml_tracking::~dll_pll_veml_tracking() { - if (signal_type.compare("1C") == 0) + if (signal_type == "1C") { volk_gnsssdr_free(d_gps_l1ca_preambles_symbols); } @@ -730,17 +694,14 @@ bool dll_pll_veml_tracking::acquire_secondary() { return true; } - else - { + return false; - } } bool dll_pll_veml_tracking::cn0_and_tracking_lock_status(double coh_integration_time_s) { // ####### CN0 ESTIMATION AND LOCK DETECTORS ###### - if (d_cn0_estimation_counter < trk_parameters.cn0_samples) { // fill buffer with prompt correlator output values @@ -748,8 +709,6 @@ bool dll_pll_veml_tracking::cn0_and_tracking_lock_status(double coh_integration_ d_cn0_estimation_counter++; return true; } - else - { d_cn0_estimation_counter = 0; // Code lock indicator d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer, trk_parameters.cn0_samples, coh_integration_time_s); @@ -772,11 +731,7 @@ bool dll_pll_veml_tracking::cn0_and_tracking_lock_status(double coh_integration_ d_carrier_lock_fail_counter = 0; return false; } - else - { return true; - } - } } @@ -1159,28 +1114,28 @@ int32_t dll_pll_veml_tracking::save_matfile() { return 1; } - float *abs_VE = new float[num_epoch]; - float *abs_E = new float[num_epoch]; - float *abs_P = new float[num_epoch]; - float *abs_L = new float[num_epoch]; - float *abs_VL = new float[num_epoch]; - float *Prompt_I = new float[num_epoch]; - float *Prompt_Q = new float[num_epoch]; - uint64_t *PRN_start_sample_count = new uint64_t[num_epoch]; - float *acc_carrier_phase_rad = new float[num_epoch]; - float *carrier_doppler_hz = new float[num_epoch]; - float *carrier_doppler_rate_hz = new float[num_epoch]; - float *code_freq_chips = new float[num_epoch]; - float *code_freq_rate_chips = new float[num_epoch]; - float *carr_error_hz = new float[num_epoch]; - float *carr_error_filt_hz = new float[num_epoch]; - float *code_error_chips = new float[num_epoch]; - float *code_error_filt_chips = new float[num_epoch]; - float *CN0_SNV_dB_Hz = new float[num_epoch]; - float *carrier_lock_test = new float[num_epoch]; - float *aux1 = new float[num_epoch]; - double *aux2 = new double[num_epoch]; - uint32_t *PRN = new uint32_t[num_epoch]; + auto *abs_VE = new float[num_epoch]; + auto *abs_E = new float[num_epoch]; + auto *abs_P = new float[num_epoch]; + auto *abs_L = new float[num_epoch]; + auto *abs_VL = new float[num_epoch]; + auto *Prompt_I = new float[num_epoch]; + auto *Prompt_Q = new float[num_epoch]; + auto *PRN_start_sample_count = new uint64_t[num_epoch]; + auto *acc_carrier_phase_rad = new float[num_epoch]; + auto *carrier_doppler_hz = new float[num_epoch]; + auto *carrier_doppler_rate_hz = new float[num_epoch]; + auto *code_freq_chips = new float[num_epoch]; + auto *code_freq_rate_chips = new float[num_epoch]; + auto *carr_error_hz = new float[num_epoch]; + auto *carr_error_filt_hz = new float[num_epoch]; + auto *code_error_chips = new float[num_epoch]; + auto *code_error_filt_chips = new float[num_epoch]; + auto *CN0_SNV_dB_Hz = new float[num_epoch]; + auto *carrier_lock_test = new float[num_epoch]; + auto *aux1 = new float[num_epoch]; + auto *aux2 = new double[num_epoch]; + auto *PRN = new uint32_t[num_epoch]; try { @@ -1248,8 +1203,8 @@ int32_t dll_pll_veml_tracking::save_matfile() std::string filename = dump_filename_; filename.erase(filename.length() - 4, 4); filename.append(".mat"); - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (reinterpret_cast(matfp) != NULL) + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (reinterpret_cast(matfp) != nullptr) { size_t dims[2] = {1, static_cast(num_epoch)}; matvar = Mat_VarCreate("abs_VE", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VE, 0); @@ -1417,8 +1372,8 @@ int dll_pll_veml_tracking::general_work(int noutput_items __attribute__((unused) gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { gr::thread::scoped_lock l(d_setlock); - const gr_complex *in = reinterpret_cast(input_items[0]); - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto **out = reinterpret_cast(&output_items[0]); Gnss_Synchro current_synchro_data = Gnss_Synchro(); switch (d_state) @@ -1433,16 +1388,33 @@ int dll_pll_veml_tracking::general_work(int noutput_items __attribute__((unused) case 1: // Pull-in { // Signal alignment (skip samples until the incoming signal is aligned with local replica) - uint64_t acq_to_trk_delay_samples = static_cast(d_sample_counter - d_acq_sample_stamp); - double acq_trk_shif_correction_samples = static_cast(d_current_prn_length_samples) - std::fmod(static_cast(acq_to_trk_delay_samples), static_cast(d_current_prn_length_samples)); - int32_t samples_offset = std::round(d_acq_code_phase_samples + acq_trk_shif_correction_samples); - if (samples_offset < 0) - { - samples_offset = 0; - } - d_acc_carrier_phase_rad -= d_carrier_phase_step_rad * d_acq_code_phase_samples; + int64_t acq_trk_diff_samples = static_cast(d_sample_counter) - static_cast(d_acq_sample_stamp); + double acq_trk_diff_seconds = static_cast(acq_trk_diff_samples) / trk_parameters.fs_in; + double delta_trk_to_acq_prn_start_samples = static_cast(acq_trk_diff_samples) - d_acq_code_phase_samples; + + // Doppler effect Fd = (C / (C + Vr)) * F + double radial_velocity = (d_signal_carrier_freq + d_acq_carrier_doppler_hz) / d_signal_carrier_freq; + // new chip and PRN sequence periods based on acq Doppler + d_code_freq_chips = radial_velocity * d_code_chip_rate; + d_code_freq_chips = d_code_chip_rate; + d_code_phase_step_chips = d_code_freq_chips / trk_parameters.fs_in; + d_code_phase_rate_step_chips = 0.0; + double T_chip_mod_seconds = 1.0 / d_code_freq_chips; + double T_prn_mod_seconds = T_chip_mod_seconds * static_cast(d_code_length_chips); + double T_prn_mod_samples = T_prn_mod_seconds * trk_parameters.fs_in; + + d_acq_code_phase_samples = T_prn_mod_samples - std::fmod(delta_trk_to_acq_prn_start_samples, T_prn_mod_samples); + d_current_prn_length_samples = round(T_prn_mod_samples); + + int32_t samples_offset = round(d_acq_code_phase_samples); + d_acc_carrier_phase_rad -= d_carrier_phase_step_rad * static_cast(samples_offset); d_state = 2; - d_sample_counter += static_cast(samples_offset); // count for the processed samples + d_sample_counter += samples_offset; // count for the processed samples + + DLOG(INFO) << "Number of samples between Acquisition and Tracking = " << acq_trk_diff_samples << " ( " << acq_trk_diff_seconds << " s)"; + DLOG(INFO) << "PULL-IN Doppler [Hz] = " << d_carrier_doppler_hz + << ". PULL-IN Code Phase [samples] = " << d_acq_code_phase_samples; + consume_each(samples_offset); // shift input to perform alignment with local replica return 0; } diff --git a/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking.h b/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking.h old mode 100755 new mode 100644 index 37997bb84..a79c7ffc3 --- a/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking.h +++ b/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking.h @@ -1,6 +1,7 @@ /*! * \file dll_pll_veml_tracking.h * \brief Implementation of a code DLL + carrier PLL tracking block. + * \author Javier Arribas, 2018. jarribas(at)cttc.es * \author Antonio Ramos, 2018 antonio.ramosdet(at)gmail.com * * ------------------------------------------------------------------------- @@ -31,18 +32,18 @@ #ifndef GNSS_SDR_DLL_PLL_VEML_TRACKING_H #define GNSS_SDR_DLL_PLL_VEML_TRACKING_H +#include "cpu_multicorrelator_real_codes.h" #include "dll_pll_conf.h" #include "gnss_synchro.h" #include "tracking_2nd_DLL_filter.h" #include "tracking_2nd_PLL_filter.h" -#include "cpu_multicorrelator_real_codes.h" +#include #include #include -#include #include #include +#include #include -#include class dll_pll_veml_tracking; @@ -173,7 +174,6 @@ private: double d_carrier_doppler_hz; double d_acc_carrier_phase_rad; double d_rem_code_phase_chips; - double d_code_phase_samples; double T_chip_seconds; double T_prn_seconds; double T_prn_samples; diff --git a/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.cc b/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.cc index f73ed6c90..b683e6a15 100644 --- a/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.cc +++ b/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.cc @@ -36,18 +36,18 @@ */ #include "dll_pll_veml_tracking_fpga.h" -#include "tracking_discriminators.h" -#include "lock_detectors.h" -#include "control_message_factory.h" -#include "MATH_CONSTANTS.h" -#include "Galileo_E1.h" -#include "Galileo_E5a.h" #include "GPS_L1_CA.h" #include "GPS_L2C.h" -#include "gps_l2c_signal.h" #include "GPS_L5.h" -#include "gps_l5_signal.h" +#include "Galileo_E1.h" +#include "Galileo_E5a.h" +#include "MATH_CONSTANTS.h" +#include "control_message_factory.h" #include "gnss_sdr_create_directory.h" +#include "gps_l2c_signal.h" +#include "gps_l5_signal.h" +#include "lock_detectors.h" +#include "tracking_discriminators.h" #include #include #include @@ -103,7 +103,7 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga & if (trk_parameters.system == 'G') { systemName = "GPS"; - if (signal_type.compare("1C") == 0) + if (signal_type == "1C") { d_signal_carrier_freq = GPS_L1_FREQ_HZ; d_code_period = GPS_L1_CA_CODE_PERIOD; @@ -124,11 +124,11 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga & // preamble bits to sampled symbols d_gps_l1ca_preambles_symbols = static_cast(volk_gnsssdr_malloc(GPS_CA_PREAMBLE_LENGTH_SYMBOLS * sizeof(int32_t), volk_gnsssdr_get_alignment())); int32_t n = 0; - for (int32_t i = 0; i < GPS_CA_PREAMBLE_LENGTH_BITS; i++) + for (unsigned short preambles_bit : preambles_bits) { for (uint32_t j = 0; j < GPS_CA_TELEMETRY_SYMBOLS_PER_BIT; j++) { - if (preambles_bits[i] == 1) + if (preambles_bit == 1) { d_gps_l1ca_preambles_symbols[n] = 1; } @@ -142,7 +142,7 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga & d_symbol_history.resize(GPS_CA_PREAMBLE_LENGTH_SYMBOLS); // Change fixed buffer size d_symbol_history.clear(); // Clear all the elements in the buffer } - else if (signal_type.compare("2S") == 0) + else if (signal_type == "2S") { d_signal_carrier_freq = GPS_L2_FREQ_HZ; d_code_period = GPS_L2_M_PERIOD; @@ -156,7 +156,7 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga & trk_parameters.track_pilot = false; interchange_iq = false; } - else if (signal_type.compare("L5") == 0) + else if (signal_type == "L5") { d_signal_carrier_freq = GPS_L5_FREQ_HZ; d_code_period = GPS_L5i_PERIOD; @@ -199,7 +199,7 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga & else if (trk_parameters.system == 'E') { systemName = "Galileo"; - if (signal_type.compare("1B") == 0) + if (signal_type == "1B") { d_signal_carrier_freq = Galileo_E1_FREQ_HZ; d_code_period = Galileo_E1_CODE_PERIOD; @@ -223,7 +223,7 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga & } interchange_iq = false; // Note that E1-B and E1-C are in anti-phase, NOT IN QUADRATURE. See Galileo ICD. } - else if (signal_type.compare("5X") == 0) + else if (signal_type == "5X") { d_signal_carrier_freq = Galileo_E5a_FREQ_HZ; d_code_period = GALILEO_E5a_CODE_PERIOD; @@ -428,10 +428,10 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga & { d_dump_filename = trk_parameters.dump_filename; std::string dump_path; - if (d_dump_filename.find_last_of("/") != std::string::npos) + if (d_dump_filename.find_last_of('/') != std::string::npos) { - std::string dump_filename_ = d_dump_filename.substr(d_dump_filename.find_last_of("/") + 1); - dump_path = d_dump_filename.substr(0, d_dump_filename.find_last_of("/")); + std::string dump_filename_ = d_dump_filename.substr(d_dump_filename.find_last_of('/') + 1); + dump_path = d_dump_filename.substr(0, d_dump_filename.find_last_of('/')); d_dump_filename = dump_filename_; } else @@ -443,9 +443,9 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga & d_dump_filename = "trk_channel_"; } // remove extension if any - if (d_dump_filename.substr(1).find_last_of(".") != std::string::npos) + if (d_dump_filename.substr(1).find_last_of('.') != std::string::npos) { - d_dump_filename = d_dump_filename.substr(0, d_dump_filename.find_last_of(".")); + d_dump_filename = d_dump_filename.substr(0, d_dump_filename.find_last_of('.')); } d_dump_filename = dump_path + boost::filesystem::path::preferred_separator + d_dump_filename; @@ -501,15 +501,15 @@ void dll_pll_veml_tracking_fpga::start_tracking() d_carrier_loop_filter.initialize(); // initialize the carrier filter d_code_loop_filter.initialize(); // initialize the code filter - if (systemName.compare("GPS") == 0 and signal_type.compare("1C") == 0) + if (systemName == "GPS" and signal_type == "1C") { // nothing to compute : the local codes are pre-computed in the adapter class } - else if (systemName.compare("GPS") == 0 and signal_type.compare("2S") == 0) + else if (systemName == "GPS" and signal_type == "2S") { // nothing to compute : the local codes are pre-computed in the adapter class } - else if (systemName.compare("GPS") == 0 and signal_type.compare("L5") == 0) + else if (systemName == "GPS" and signal_type == "L5") { if (trk_parameters.track_pilot) { @@ -520,7 +520,7 @@ void dll_pll_veml_tracking_fpga::start_tracking() // nothing to compute : the local codes are pre-computed in the adapter class } } - else if (systemName.compare("Galileo") == 0 and signal_type.compare("1B") == 0) + else if (systemName == "Galileo" and signal_type == "1B") { if (trk_parameters.track_pilot) { @@ -533,7 +533,7 @@ void dll_pll_veml_tracking_fpga::start_tracking() // nothing to compute : the local codes are pre-computed in the adapter class } } - else if (systemName.compare("Galileo") == 0 and signal_type.compare("5X") == 0) + else if (systemName == "Galileo" and signal_type == "5X") { if (trk_parameters.track_pilot) { @@ -604,7 +604,7 @@ void dll_pll_veml_tracking_fpga::start_tracking() dll_pll_veml_tracking_fpga::~dll_pll_veml_tracking_fpga() { - if (signal_type.compare("1C") == 0) + if (signal_type == "1C") { volk_gnsssdr_free(d_gps_l1ca_preambles_symbols); } @@ -1025,26 +1025,26 @@ int32_t dll_pll_veml_tracking_fpga::save_matfile() { return 1; } - float *abs_VE = new float[num_epoch]; - float *abs_E = new float[num_epoch]; - float *abs_P = new float[num_epoch]; - float *abs_L = new float[num_epoch]; - float *abs_VL = new float[num_epoch]; - float *Prompt_I = new float[num_epoch]; - float *Prompt_Q = new float[num_epoch]; - uint64_t *PRN_start_sample_count = new uint64_t[num_epoch]; - float *acc_carrier_phase_rad = new float[num_epoch]; - float *carrier_doppler_hz = new float[num_epoch]; - float *code_freq_chips = new float[num_epoch]; - float *carr_error_hz = new float[num_epoch]; - float *carr_error_filt_hz = new float[num_epoch]; - float *code_error_chips = new float[num_epoch]; - float *code_error_filt_chips = new float[num_epoch]; - float *CN0_SNV_dB_Hz = new float[num_epoch]; - float *carrier_lock_test = new float[num_epoch]; - float *aux1 = new float[num_epoch]; - double *aux2 = new double[num_epoch]; - uint32_t *PRN = new uint32_t[num_epoch]; + auto *abs_VE = new float[num_epoch]; + auto *abs_E = new float[num_epoch]; + auto *abs_P = new float[num_epoch]; + auto *abs_L = new float[num_epoch]; + auto *abs_VL = new float[num_epoch]; + auto *Prompt_I = new float[num_epoch]; + auto *Prompt_Q = new float[num_epoch]; + auto *PRN_start_sample_count = new uint64_t[num_epoch]; + auto *acc_carrier_phase_rad = new float[num_epoch]; + auto *carrier_doppler_hz = new float[num_epoch]; + auto *code_freq_chips = new float[num_epoch]; + auto *carr_error_hz = new float[num_epoch]; + auto *carr_error_filt_hz = new float[num_epoch]; + auto *code_error_chips = new float[num_epoch]; + auto *code_error_filt_chips = new float[num_epoch]; + auto *CN0_SNV_dB_Hz = new float[num_epoch]; + auto *carrier_lock_test = new float[num_epoch]; + auto *aux1 = new float[num_epoch]; + auto *aux2 = new double[num_epoch]; + auto *PRN = new uint32_t[num_epoch]; try { @@ -1108,8 +1108,8 @@ int32_t dll_pll_veml_tracking_fpga::save_matfile() std::string filename = dump_filename_; filename.erase(filename.length() - 4, 4); filename.append(".mat"); - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (reinterpret_cast(matfp) != NULL) + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (reinterpret_cast(matfp) != nullptr) { size_t dims[2] = {1, static_cast(num_epoch)}; matvar = Mat_VarCreate("abs_VE", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VE, 0); @@ -1264,7 +1264,7 @@ int dll_pll_veml_tracking_fpga::general_work(int noutput_items __attribute__((un { gr::thread::scoped_lock l(d_setlock); // Block input data and block output stream pointers - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); + auto **out = reinterpret_cast(&output_items[0]); // GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder Gnss_Synchro current_synchro_data = Gnss_Synchro(); @@ -1297,7 +1297,7 @@ int dll_pll_veml_tracking_fpga::general_work(int noutput_items __attribute__((un //printf("333333 d_correlation_length_samples = %d\n", d_correlation_length_samples); uint32_t num_frames = ceil((counter_value - current_synchro_data.Acq_samplestamp_samples - current_synchro_data.Acq_delay_samples) / d_correlation_length_samples); //printf("333333 num_frames = %d\n", num_frames); - uint64_t absolute_samples_offset = static_cast(current_synchro_data.Acq_delay_samples + current_synchro_data.Acq_samplestamp_samples + num_frames * d_correlation_length_samples); + auto absolute_samples_offset = static_cast(current_synchro_data.Acq_delay_samples + current_synchro_data.Acq_samplestamp_samples + num_frames * d_correlation_length_samples); //printf("333333 absolute_samples_offset = %llu\n", absolute_samples_offset); multicorrelator_fpga->set_initial_sample(absolute_samples_offset); d_absolute_samples_offset = absolute_samples_offset; diff --git a/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.h b/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.h index 91e34d400..4230a018d 100644 --- a/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.h +++ b/src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.h @@ -40,17 +40,16 @@ #define GNSS_SDR_DLL_PLL_VEML_TRACKING_FPGA_H #include "dll_pll_conf_fpga.h" +#include "fpga_multicorrelator.h" #include "gnss_synchro.h" #include "tracking_2nd_DLL_filter.h" #include "tracking_2nd_PLL_filter.h" -#include "fpga_multicorrelator.h" +#include #include #include -#include #include #include -#include -#include "fpga_multicorrelator.h" +#include class dll_pll_veml_tracking_fpga; diff --git a/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.cc index ee049869d..2c755b088 100644 --- a/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.cc @@ -37,24 +37,25 @@ */ #include "galileo_e1_tcp_connector_tracking_cc.h" +#include "GPS_L1_CA.h" +#include "Galileo_E1.h" +#include "control_message_factory.h" +#include "galileo_e1_signal_processing.h" +#include "gnss_sdr_flags.h" +#include "lock_detectors.h" +#include "tcp_communication.h" +#include "tcp_packet_data.h" +#include "tracking_discriminators.h" +#include +#include +#include +#include +#include #include #include #include #include -#include -#include -#include -#include -#include -#include "galileo_e1_signal_processing.h" -#include "tracking_discriminators.h" -#include "lock_detectors.h" -#include "GPS_L1_CA.h" -#include "Galileo_E1.h" -#include "control_message_factory.h" -#include "gnss_sdr_flags.h" -#include "tcp_communication.h" -#include "tcp_packet_data.h" +#include using google::LogMessage; @@ -63,7 +64,7 @@ galileo_e1_tcp_connector_tracking_cc_sptr galileo_e1_tcp_connector_make_tracking int64_t fs_in, uint32_t vector_length, bool dump, - std::string dump_filename, + const std::string &dump_filename, float pll_bw_hz, float dll_bw_hz, float early_late_space_chips, @@ -89,7 +90,7 @@ Galileo_E1_Tcp_Connector_Tracking_cc::Galileo_E1_Tcp_Connector_Tracking_cc( int64_t fs_in, uint32_t vector_length, bool dump, - std::string dump_filename, + const std::string &dump_filename, float pll_bw_hz __attribute__((unused)), float dll_bw_hz __attribute__((unused)), float early_late_space_chips, @@ -103,7 +104,7 @@ Galileo_E1_Tcp_Connector_Tracking_cc::Galileo_E1_Tcp_Connector_Tracking_cc( d_dump = dump; d_fs_in = fs_in; d_vector_length = vector_length; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); // Initialize tracking ========================================== //--- DLL variables -------------------------------------------------------- @@ -172,7 +173,7 @@ Galileo_E1_Tcp_Connector_Tracking_cc::Galileo_E1_Tcp_Connector_Tracking_cc( d_carrier_lock_threshold = FLAGS_carrier_lock_th; systemName["E"] = std::string("Galileo"); - d_acquisition_gnss_synchro = 0; + d_acquisition_gnss_synchro = nullptr; d_channel = 0; d_next_rem_code_phase_samples = 0; d_acq_code_phase_samples = 0.0; @@ -525,7 +526,7 @@ int Galileo_E1_Tcp_Connector_Tracking_cc::general_work(int noutput_items __attri // AUX vars (for debug purposes) tmp_float = 0.0; d_dump_file.write(reinterpret_cast(&tmp_float), sizeof(float)); - double tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); + auto tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); d_dump_file.write(reinterpret_cast(&tmp_double), sizeof(double)); // PRN uint32_t prn_ = d_acquisition_gnss_synchro->PRN; @@ -543,8 +544,6 @@ int Galileo_E1_Tcp_Connector_Tracking_cc::general_work(int noutput_items __attri { return 1; } - else - { - return 0; - } + + return 0; } diff --git a/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.h b/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.h index 724207ab3..acce9db54 100644 --- a/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.h +++ b/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.h @@ -39,14 +39,14 @@ #ifndef GNSS_SDR_GALILEO_E1_TCP_CONNECTOR_TRACKING_CC_H #define GNSS_SDR_GALILEO_E1_TCP_CONNECTOR_TRACKING_CC_H +#include "cpu_multicorrelator.h" +#include "gnss_synchro.h" +#include "tcp_communication.h" +#include +#include #include #include #include -#include -#include -#include "gnss_synchro.h" -#include "cpu_multicorrelator.h" -#include "tcp_communication.h" class Galileo_E1_Tcp_Connector_Tracking_cc; @@ -57,7 +57,7 @@ galileo_e1_tcp_connector_tracking_cc_sptr galileo_e1_tcp_connector_make_tracking_cc( int64_t fs_in, uint32_t vector_length, bool dump, - std::string dump_filename, + const std::string &dump_filename, float pll_bw_hz, float dll_bw_hz, float early_late_space_chips, @@ -87,7 +87,7 @@ private: galileo_e1_tcp_connector_make_tracking_cc( int64_t fs_in, uint32_t vector_length, bool dump, - std::string dump_filename, + const std::string &dump_filename, float pll_bw_hz, float dll_bw_hz, float early_late_space_chips, @@ -97,7 +97,7 @@ private: Galileo_E1_Tcp_Connector_Tracking_cc( int64_t fs_in, uint32_t vector_length, bool dump, - std::string dump_filename, + const std::string &dump_filename, float pll_bw_hz, float dll_bw_hz, float early_late_space_chips, diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc index 2689e382f..77603d0aa 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc @@ -37,23 +37,23 @@ */ #include "glonass_l1_ca_dll_pll_c_aid_tracking_cc.h" -#include "glonass_l1_signal_processing.h" #include "GLONASS_L1_L2_CA.h" -#include "tracking_discriminators.h" -#include "lock_detectors.h" -#include "gnss_sdr_flags.h" #include "control_message_factory.h" -#include +#include "glonass_l1_signal_processing.h" +#include "gnss_sdr_flags.h" +#include "lock_detectors.h" +#include "tracking_discriminators.h" #include +#include #include #include #include #include -#include #include #include #include #include +#include #define CN0_ESTIMATION_SAMPLES 10 @@ -74,7 +74,7 @@ glonass_l1_ca_dll_pll_c_aid_make_tracking_cc( float early_late_space_chips) { return glonass_l1_ca_dll_pll_c_aid_tracking_cc_sptr(new glonass_l1_ca_dll_pll_c_aid_tracking_cc( - fs_in, vector_length, dump, dump_filename, pll_bw_hz, dll_bw_hz, pll_bw_narrow_hz, dll_bw_narrow_hz, extend_correlation_ms, early_late_space_chips)); + fs_in, vector_length, dump, std::move(dump_filename), pll_bw_hz, dll_bw_hz, pll_bw_narrow_hz, dll_bw_narrow_hz, extend_correlation_ms, early_late_space_chips)); } @@ -94,7 +94,7 @@ void glonass_l1_ca_dll_pll_c_aid_tracking_cc::msg_handler_preamble_index(pmt::pm DLOG(INFO) << "Extended correlation enabled for Tracking CH " << d_channel << ": Satellite " << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN); if (d_enable_extended_integration == false) //avoid re-setting preamble indicator { - d_preamble_timestamp_s = pmt::to_double(msg); + d_preamble_timestamp_s = pmt::to_double(std::move(msg)); d_enable_extended_integration = true; d_preamble_synchronized = false; } @@ -125,7 +125,7 @@ glonass_l1_ca_dll_pll_c_aid_tracking_cc::glonass_l1_ca_dll_pll_c_aid_tracking_cc d_dump = dump; d_fs_in = fs_in; d_vector_length = vector_length; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_correlation_length_samples = static_cast(d_vector_length); // Initialize tracking ========================================== @@ -185,7 +185,7 @@ glonass_l1_ca_dll_pll_c_aid_tracking_cc::glonass_l1_ca_dll_pll_c_aid_tracking_cc set_relative_rate(1.0 / static_cast(d_vector_length)); - d_acquisition_gnss_synchro = 0; + d_acquisition_gnss_synchro = nullptr; d_channel = 0; d_acq_code_phase_samples = 0.0; d_acq_carrier_doppler_hz = 0.0; @@ -379,24 +379,24 @@ int32_t glonass_l1_ca_dll_pll_c_aid_tracking_cc::save_matfile() { return 1; } - float *abs_E = new float[num_epoch]; - float *abs_P = new float[num_epoch]; - float *abs_L = new float[num_epoch]; - float *Prompt_I = new float[num_epoch]; - float *Prompt_Q = new float[num_epoch]; - uint64_t *PRN_start_sample_count = new uint64_t[num_epoch]; - double *acc_carrier_phase_rad = new double[num_epoch]; - double *carrier_doppler_hz = new double[num_epoch]; - double *code_freq_chips = new double[num_epoch]; - double *carr_error_hz = new double[num_epoch]; - double *carr_error_filt_hz = new double[num_epoch]; - double *code_error_chips = new double[num_epoch]; - double *code_error_filt_chips = new double[num_epoch]; - double *CN0_SNV_dB_Hz = new double[num_epoch]; - double *carrier_lock_test = new double[num_epoch]; - double *aux1 = new double[num_epoch]; - double *aux2 = new double[num_epoch]; - uint32_t *PRN = new uint32_t[num_epoch]; + auto *abs_E = new float[num_epoch]; + auto *abs_P = new float[num_epoch]; + auto *abs_L = new float[num_epoch]; + auto *Prompt_I = new float[num_epoch]; + auto *Prompt_Q = new float[num_epoch]; + auto *PRN_start_sample_count = new uint64_t[num_epoch]; + auto *acc_carrier_phase_rad = new double[num_epoch]; + auto *carrier_doppler_hz = new double[num_epoch]; + auto *code_freq_chips = new double[num_epoch]; + auto *carr_error_hz = new double[num_epoch]; + auto *carr_error_filt_hz = new double[num_epoch]; + auto *code_error_chips = new double[num_epoch]; + auto *code_error_filt_chips = new double[num_epoch]; + auto *CN0_SNV_dB_Hz = new double[num_epoch]; + auto *carrier_lock_test = new double[num_epoch]; + auto *aux1 = new double[num_epoch]; + auto *aux2 = new double[num_epoch]; + auto *PRN = new uint32_t[num_epoch]; try { @@ -456,8 +456,8 @@ int32_t glonass_l1_ca_dll_pll_c_aid_tracking_cc::save_matfile() std::string filename = d_dump_filename; filename.erase(filename.length() - 4, 4); filename.append(".mat"); - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (reinterpret_cast(matfp) != NULL) + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (reinterpret_cast(matfp) != nullptr) { size_t dims[2] = {1, static_cast(num_epoch)}; matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); @@ -566,15 +566,15 @@ void glonass_l1_ca_dll_pll_c_aid_tracking_cc::set_channel(uint32_t channel) { try { - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); LOG(INFO) << "Tracking dump enabled on channel " << d_channel << " Log file: " << d_dump_filename.c_str() << std::endl; } - catch (const std::ifstream::failure *e) + catch (const std::ifstream::failure &e) { - LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e->what() << std::endl; + LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e.what(); } } } @@ -591,8 +591,8 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __at gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { // Block input data and block output stream pointers - const gr_complex *in = reinterpret_cast(input_items[0]); // PRN start block alignment - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); // PRN start block alignment + auto **out = reinterpret_cast(&output_items[0]); // GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder Gnss_Synchro current_synchro_data = Gnss_Synchro(); @@ -907,15 +907,15 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __at // AUX vars (for debug purposes) tmp_float = d_code_error_chips_Ti * CURRENT_INTEGRATION_TIME_S; d_dump_file.write(reinterpret_cast(&tmp_float), sizeof(float)); - double tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); + auto tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); d_dump_file.write(reinterpret_cast(&tmp_double), sizeof(double)); // PRN uint32_t prn_ = d_acquisition_gnss_synchro->PRN; d_dump_file.write(reinterpret_cast(&prn_), sizeof(uint32_t)); } - catch (const std::ifstream::failure *e) + catch (const std::ifstream::failure &e) { - LOG(WARNING) << "Exception writing trk dump file " << e->what(); + LOG(WARNING) << "Exception writing trk dump file " << e.what(); } } diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.h b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.h index a5e4dfcf9..10f1064f5 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.h +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.h @@ -46,9 +46,9 @@ #include "cpu_multicorrelator.h" #include #include +#include #include #include -#include #include class glonass_l1_ca_dll_pll_c_aid_tracking_cc; diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc index 1c0b45b9c..96009c777 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc @@ -37,22 +37,22 @@ */ #include "glonass_l1_ca_dll_pll_c_aid_tracking_sc.h" -#include "glonass_l1_signal_processing.h" #include "GLONASS_L1_L2_CA.h" -#include "tracking_discriminators.h" -#include "lock_detectors.h" -#include "gnss_sdr_flags.h" #include "control_message_factory.h" +#include "glonass_l1_signal_processing.h" +#include "gnss_sdr_flags.h" +#include "lock_detectors.h" +#include "tracking_discriminators.h" #include -#include +#include #include #include #include -#include #include #include #include #include +#include #define CN0_ESTIMATION_SAMPLES 10 @@ -72,7 +72,7 @@ glonass_l1_ca_dll_pll_c_aid_make_tracking_sc( float early_late_space_chips) { return glonass_l1_ca_dll_pll_c_aid_tracking_sc_sptr(new glonass_l1_ca_dll_pll_c_aid_tracking_sc( - fs_in, vector_length, dump, dump_filename, pll_bw_hz, dll_bw_hz, pll_bw_narrow_hz, dll_bw_narrow_hz, extend_correlation_ms, early_late_space_chips)); + fs_in, vector_length, dump, std::move(dump_filename), pll_bw_hz, dll_bw_hz, pll_bw_narrow_hz, dll_bw_narrow_hz, extend_correlation_ms, early_late_space_chips)); } @@ -92,7 +92,7 @@ void glonass_l1_ca_dll_pll_c_aid_tracking_sc::msg_handler_preamble_index(pmt::pm DLOG(INFO) << "Extended correlation enabled for Tracking CH " << d_channel << ": Satellite " << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN); if (d_enable_extended_integration == false) //avoid re-setting preamble indicator { - d_preamble_timestamp_s = pmt::to_double(msg); + d_preamble_timestamp_s = pmt::to_double(std::move(msg)); d_enable_extended_integration = true; d_preamble_synchronized = false; } @@ -120,7 +120,7 @@ glonass_l1_ca_dll_pll_c_aid_tracking_sc::glonass_l1_ca_dll_pll_c_aid_tracking_sc d_dump = dump; d_fs_in = fs_in; d_vector_length = vector_length; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_correlation_length_samples = static_cast(d_vector_length); // Initialize tracking ========================================== @@ -183,7 +183,7 @@ glonass_l1_ca_dll_pll_c_aid_tracking_sc::glonass_l1_ca_dll_pll_c_aid_tracking_sc set_relative_rate(1.0 / static_cast(d_vector_length)); - d_acquisition_gnss_synchro = 0; + d_acquisition_gnss_synchro = nullptr; d_channel = 0; d_acq_code_phase_samples = 0.0; d_acq_carrier_doppler_hz = 0.0; @@ -333,24 +333,24 @@ int32_t glonass_l1_ca_dll_pll_c_aid_tracking_sc::save_matfile() { return 1; } - float *abs_E = new float[num_epoch]; - float *abs_P = new float[num_epoch]; - float *abs_L = new float[num_epoch]; - float *Prompt_I = new float[num_epoch]; - float *Prompt_Q = new float[num_epoch]; - uint64_t *PRN_start_sample_count = new uint64_t[num_epoch]; - double *acc_carrier_phase_rad = new double[num_epoch]; - double *carrier_doppler_hz = new double[num_epoch]; - double *code_freq_chips = new double[num_epoch]; - double *carr_error_hz = new double[num_epoch]; - double *carr_error_filt_hz = new double[num_epoch]; - double *code_error_chips = new double[num_epoch]; - double *code_error_filt_chips = new double[num_epoch]; - double *CN0_SNV_dB_Hz = new double[num_epoch]; - double *carrier_lock_test = new double[num_epoch]; - double *aux1 = new double[num_epoch]; - double *aux2 = new double[num_epoch]; - uint32_t *PRN = new uint32_t[num_epoch]; + auto *abs_E = new float[num_epoch]; + auto *abs_P = new float[num_epoch]; + auto *abs_L = new float[num_epoch]; + auto *Prompt_I = new float[num_epoch]; + auto *Prompt_Q = new float[num_epoch]; + auto *PRN_start_sample_count = new uint64_t[num_epoch]; + auto *acc_carrier_phase_rad = new double[num_epoch]; + auto *carrier_doppler_hz = new double[num_epoch]; + auto *code_freq_chips = new double[num_epoch]; + auto *carr_error_hz = new double[num_epoch]; + auto *carr_error_filt_hz = new double[num_epoch]; + auto *code_error_chips = new double[num_epoch]; + auto *code_error_filt_chips = new double[num_epoch]; + auto *CN0_SNV_dB_Hz = new double[num_epoch]; + auto *carrier_lock_test = new double[num_epoch]; + auto *aux1 = new double[num_epoch]; + auto *aux2 = new double[num_epoch]; + auto *PRN = new uint32_t[num_epoch]; try { @@ -410,8 +410,8 @@ int32_t glonass_l1_ca_dll_pll_c_aid_tracking_sc::save_matfile() std::string filename = d_dump_filename; filename.erase(filename.length() - 4, 4); filename.append(".mat"); - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (reinterpret_cast(matfp) != NULL) + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (reinterpret_cast(matfp) != nullptr) { size_t dims[2] = {1, static_cast(num_epoch)}; matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); @@ -557,15 +557,15 @@ void glonass_l1_ca_dll_pll_c_aid_tracking_sc::set_channel(uint32_t channel) { try { - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); LOG(INFO) << "Tracking dump enabled on channel " << d_channel << " Log file: " << d_dump_filename.c_str() << std::endl; } - catch (const std::ifstream::failure *e) + catch (const std::ifstream::failure &e) { - LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e->what() << std::endl; + LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e.what(); } } } @@ -582,8 +582,8 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __at gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { // Block input data and block output stream pointers - const lv_16sc_t *in = reinterpret_cast(input_items[0]); // PRN start block alignment - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); // PRN start block alignment + auto **out = reinterpret_cast(&output_items[0]); // GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder Gnss_Synchro current_synchro_data = Gnss_Synchro(); @@ -896,15 +896,15 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __at // AUX vars (for debug purposes) tmp_float = d_code_error_chips_Ti * CURRENT_INTEGRATION_TIME_S; d_dump_file.write(reinterpret_cast(&tmp_float), sizeof(float)); - double tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); + auto tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); d_dump_file.write(reinterpret_cast(&tmp_double), sizeof(double)); // PRN uint32_t prn_ = d_acquisition_gnss_synchro->PRN; d_dump_file.write(reinterpret_cast(&prn_), sizeof(uint32_t)); } - catch (const std::ifstream::failure *e) + catch (const std::ifstream::failure &e) { - LOG(WARNING) << "Exception writing trk dump file " << e->what(); + LOG(WARNING) << "Exception writing trk dump file " << e.what(); } } diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.h b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.h index 83fbe4007..b0717532e 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.h +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.h @@ -39,11 +39,11 @@ #ifndef GNSS_SDR_GLONASS_L1_CA_DLL_PLL_C_AID_TRACKING_SC_H #define GNSS_SDR_GLONASS_L1_CA_DLL_PLL_C_AID_TRACKING_SC_H +#include "cpu_multicorrelator_16sc.h" #include "glonass_l1_signal_processing.h" #include "gnss_synchro.h" #include "tracking_2nd_DLL_filter.h" #include "tracking_FLL_PLL_filter.h" -#include "cpu_multicorrelator_16sc.h" #include #include #include diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.cc index 2050d0f1f..70cc662bb 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.cc @@ -37,21 +37,21 @@ */ #include "glonass_l1_ca_dll_pll_tracking_cc.h" -#include "glonass_l1_signal_processing.h" #include "GLONASS_L1_L2_CA.h" -#include "tracking_discriminators.h" -#include "lock_detectors.h" -#include "gnss_sdr_flags.h" #include "control_message_factory.h" -#include -#include +#include "glonass_l1_signal_processing.h" +#include "gnss_sdr_flags.h" +#include "lock_detectors.h" +#include "tracking_discriminators.h" #include +#include #include #include #include #include #include #include +#include #define CN0_ESTIMATION_SAMPLES 10 @@ -68,7 +68,7 @@ glonass_l1_ca_dll_pll_make_tracking_cc( float early_late_space_chips) { return glonass_l1_ca_dll_pll_tracking_cc_sptr(new Glonass_L1_Ca_Dll_Pll_Tracking_cc( - fs_in, vector_length, dump, dump_filename, pll_bw_hz, dll_bw_hz, early_late_space_chips)); + fs_in, vector_length, dump, std::move(dump_filename), pll_bw_hz, dll_bw_hz, early_late_space_chips)); } @@ -98,7 +98,7 @@ Glonass_L1_Ca_Dll_Pll_Tracking_cc::Glonass_L1_Ca_Dll_Pll_Tracking_cc( d_dump = dump; d_fs_in = fs_in; d_vector_length = vector_length; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_current_prn_length_samples = static_cast(d_vector_length); @@ -154,7 +154,7 @@ Glonass_L1_Ca_Dll_Pll_Tracking_cc::Glonass_L1_Ca_Dll_Pll_Tracking_cc( systemName["R"] = std::string("Glonass"); - d_acquisition_gnss_synchro = 0; + d_acquisition_gnss_synchro = nullptr; d_channel = 0; d_acq_code_phase_samples = 0.0; d_acq_carrier_doppler_hz = 0.0; @@ -331,24 +331,24 @@ int32_t Glonass_L1_Ca_Dll_Pll_Tracking_cc::save_matfile() { return 1; } - float *abs_E = new float[num_epoch]; - float *abs_P = new float[num_epoch]; - float *abs_L = new float[num_epoch]; - float *Prompt_I = new float[num_epoch]; - float *Prompt_Q = new float[num_epoch]; - uint64_t *PRN_start_sample_count = new uint64_t[num_epoch]; - double *acc_carrier_phase_rad = new double[num_epoch]; - double *carrier_doppler_hz = new double[num_epoch]; - double *code_freq_chips = new double[num_epoch]; - double *carr_error_hz = new double[num_epoch]; - double *carr_error_filt_hz = new double[num_epoch]; - double *code_error_chips = new double[num_epoch]; - double *code_error_filt_chips = new double[num_epoch]; - double *CN0_SNV_dB_Hz = new double[num_epoch]; - double *carrier_lock_test = new double[num_epoch]; - double *aux1 = new double[num_epoch]; - double *aux2 = new double[num_epoch]; - uint32_t *PRN = new uint32_t[num_epoch]; + auto *abs_E = new float[num_epoch]; + auto *abs_P = new float[num_epoch]; + auto *abs_L = new float[num_epoch]; + auto *Prompt_I = new float[num_epoch]; + auto *Prompt_Q = new float[num_epoch]; + auto *PRN_start_sample_count = new uint64_t[num_epoch]; + auto *acc_carrier_phase_rad = new double[num_epoch]; + auto *carrier_doppler_hz = new double[num_epoch]; + auto *code_freq_chips = new double[num_epoch]; + auto *carr_error_hz = new double[num_epoch]; + auto *carr_error_filt_hz = new double[num_epoch]; + auto *code_error_chips = new double[num_epoch]; + auto *code_error_filt_chips = new double[num_epoch]; + auto *CN0_SNV_dB_Hz = new double[num_epoch]; + auto *carrier_lock_test = new double[num_epoch]; + auto *aux1 = new double[num_epoch]; + auto *aux2 = new double[num_epoch]; + auto *PRN = new uint32_t[num_epoch]; try { @@ -408,8 +408,8 @@ int32_t Glonass_L1_Ca_Dll_Pll_Tracking_cc::save_matfile() std::string filename = d_dump_filename; filename.erase(filename.length() - 4, 4); filename.append(".mat"); - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (reinterpret_cast(matfp) != NULL) + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (reinterpret_cast(matfp) != nullptr) { size_t dims[2] = {1, static_cast(num_epoch)}; matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); @@ -518,7 +518,7 @@ void Glonass_L1_Ca_Dll_Pll_Tracking_cc::set_channel(uint32_t channel) { try { - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); @@ -549,8 +549,8 @@ int Glonass_L1_Ca_Dll_Pll_Tracking_cc::general_work(int noutput_items __attribut double code_error_filt_chips = 0.0; // Block input data and block output stream pointers - const gr_complex *in = reinterpret_cast(input_items[0]); // PRN start block alignment - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); // PRN start block alignment + auto **out = reinterpret_cast(&output_items[0]); // GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder Gnss_Synchro current_synchro_data = Gnss_Synchro(); @@ -749,7 +749,7 @@ int Glonass_L1_Ca_Dll_Pll_Tracking_cc::general_work(int noutput_items __attribut // AUX vars (for debug purposes) tmp_float = d_rem_code_phase_samples; d_dump_file.write(reinterpret_cast(&tmp_float), sizeof(float)); - double tmp_double = static_cast(d_sample_counter + d_current_prn_length_samples); + auto tmp_double = static_cast(d_sample_counter + d_current_prn_length_samples); d_dump_file.write(reinterpret_cast(&tmp_double), sizeof(double)); // PRN uint32_t prn_ = d_acquisition_gnss_synchro->PRN; diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.h b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.h index 8f64c5d86..d8716f5ee 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.h +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.h @@ -39,10 +39,10 @@ #ifndef GNSS_SDR_GLONASS_L1_CA_DLL_PLL_TRACKING_CC_H #define GNSS_SDR_GLONASS_L1_CA_DLL_PLL_TRACKING_CC_H +#include "cpu_multicorrelator.h" #include "gnss_synchro.h" #include "tracking_2nd_DLL_filter.h" #include "tracking_2nd_PLL_filter.h" -#include "cpu_multicorrelator.h" #include #include #include diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc index 19c5cca3e..0299968b3 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc @@ -35,23 +35,23 @@ */ #include "glonass_l2_ca_dll_pll_c_aid_tracking_cc.h" -#include "glonass_l2_signal_processing.h" -#include "tracking_discriminators.h" -#include "lock_detectors.h" #include "GLONASS_L1_L2_CA.h" -#include "gnss_sdr_flags.h" #include "control_message_factory.h" -#include +#include "glonass_l2_signal_processing.h" +#include "gnss_sdr_flags.h" +#include "lock_detectors.h" +#include "tracking_discriminators.h" #include +#include #include #include #include #include -#include #include #include #include #include +#include #define CN0_ESTIMATION_SAMPLES 10 @@ -71,7 +71,7 @@ glonass_l2_ca_dll_pll_c_aid_make_tracking_cc( float early_late_space_chips) { return glonass_l2_ca_dll_pll_c_aid_tracking_cc_sptr(new glonass_l2_ca_dll_pll_c_aid_tracking_cc( - fs_in, vector_length, dump, dump_filename, pll_bw_hz, dll_bw_hz, pll_bw_narrow_hz, dll_bw_narrow_hz, extend_correlation_ms, early_late_space_chips)); + fs_in, vector_length, dump, std::move(dump_filename), pll_bw_hz, dll_bw_hz, pll_bw_narrow_hz, dll_bw_narrow_hz, extend_correlation_ms, early_late_space_chips)); } @@ -91,7 +91,7 @@ void glonass_l2_ca_dll_pll_c_aid_tracking_cc::msg_handler_preamble_index(pmt::pm DLOG(INFO) << "Extended correlation enabled for Tracking CH " << d_channel << ": Satellite " << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN); if (d_enable_extended_integration == false) //avoid re-setting preamble indicator { - d_preamble_timestamp_s = pmt::to_double(msg); + d_preamble_timestamp_s = pmt::to_double(std::move(msg)); d_enable_extended_integration = true; d_preamble_synchronized = false; } @@ -122,7 +122,7 @@ glonass_l2_ca_dll_pll_c_aid_tracking_cc::glonass_l2_ca_dll_pll_c_aid_tracking_cc d_dump = dump; d_fs_in = fs_in; d_vector_length = vector_length; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_correlation_length_samples = static_cast(d_vector_length); // Initialize tracking ========================================== @@ -182,7 +182,7 @@ glonass_l2_ca_dll_pll_c_aid_tracking_cc::glonass_l2_ca_dll_pll_c_aid_tracking_cc set_relative_rate(1.0 / static_cast(d_vector_length)); - d_acquisition_gnss_synchro = 0; + d_acquisition_gnss_synchro = nullptr; d_channel = 0; d_acq_code_phase_samples = 0.0; d_acq_carrier_doppler_hz = 0.0; @@ -376,24 +376,24 @@ int32_t glonass_l2_ca_dll_pll_c_aid_tracking_cc::save_matfile() { return 1; } - float *abs_E = new float[num_epoch]; - float *abs_P = new float[num_epoch]; - float *abs_L = new float[num_epoch]; - float *Prompt_I = new float[num_epoch]; - float *Prompt_Q = new float[num_epoch]; - uint64_t *PRN_start_sample_count = new uint64_t[num_epoch]; - double *acc_carrier_phase_rad = new double[num_epoch]; - double *carrier_doppler_hz = new double[num_epoch]; - double *code_freq_chips = new double[num_epoch]; - double *carr_error_hz = new double[num_epoch]; - double *carr_error_filt_hz = new double[num_epoch]; - double *code_error_chips = new double[num_epoch]; - double *code_error_filt_chips = new double[num_epoch]; - double *CN0_SNV_dB_Hz = new double[num_epoch]; - double *carrier_lock_test = new double[num_epoch]; - double *aux1 = new double[num_epoch]; - double *aux2 = new double[num_epoch]; - uint32_t *PRN = new uint32_t[num_epoch]; + auto *abs_E = new float[num_epoch]; + auto *abs_P = new float[num_epoch]; + auto *abs_L = new float[num_epoch]; + auto *Prompt_I = new float[num_epoch]; + auto *Prompt_Q = new float[num_epoch]; + auto *PRN_start_sample_count = new uint64_t[num_epoch]; + auto *acc_carrier_phase_rad = new double[num_epoch]; + auto *carrier_doppler_hz = new double[num_epoch]; + auto *code_freq_chips = new double[num_epoch]; + auto *carr_error_hz = new double[num_epoch]; + auto *carr_error_filt_hz = new double[num_epoch]; + auto *code_error_chips = new double[num_epoch]; + auto *code_error_filt_chips = new double[num_epoch]; + auto *CN0_SNV_dB_Hz = new double[num_epoch]; + auto *carrier_lock_test = new double[num_epoch]; + auto *aux1 = new double[num_epoch]; + auto *aux2 = new double[num_epoch]; + auto *PRN = new uint32_t[num_epoch]; try { @@ -453,8 +453,8 @@ int32_t glonass_l2_ca_dll_pll_c_aid_tracking_cc::save_matfile() std::string filename = d_dump_filename; filename.erase(filename.length() - 4, 4); filename.append(".mat"); - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (reinterpret_cast(matfp) != NULL) + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (reinterpret_cast(matfp) != nullptr) { size_t dims[2] = {1, static_cast(num_epoch)}; matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); @@ -563,15 +563,15 @@ void glonass_l2_ca_dll_pll_c_aid_tracking_cc::set_channel(uint32_t channel) { try { - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); LOG(INFO) << "Tracking dump enabled on channel " << d_channel << " Log file: " << d_dump_filename.c_str() << std::endl; } - catch (const std::ifstream::failure *e) + catch (const std::ifstream::failure &e) { - LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e->what() << std::endl; + LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e.what(); } } } @@ -588,8 +588,8 @@ int glonass_l2_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __at gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { // Block input data and block output stream pointers - const gr_complex *in = reinterpret_cast(input_items[0]); // PRN start block alignment - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); // PRN start block alignment + auto **out = reinterpret_cast(&output_items[0]); // GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder Gnss_Synchro current_synchro_data = Gnss_Synchro(); @@ -904,15 +904,15 @@ int glonass_l2_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __at // AUX vars (for debug purposes) tmp_float = d_code_error_chips_Ti * CURRENT_INTEGRATION_TIME_S; d_dump_file.write(reinterpret_cast(&tmp_float), sizeof(float)); - double tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); + auto tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); d_dump_file.write(reinterpret_cast(&tmp_double), sizeof(double)); // PRN uint32_t prn_ = d_acquisition_gnss_synchro->PRN; d_dump_file.write(reinterpret_cast(&prn_), sizeof(uint32_t)); } - catch (const std::ifstream::failure *e) + catch (const std::ifstream::failure &e) { - LOG(WARNING) << "Exception writing trk dump file " << e->what(); + LOG(WARNING) << "Exception writing trk dump file " << e.what(); } } diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.h b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.h index 34462476c..129e4609e 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.h +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.h @@ -44,9 +44,9 @@ #include "cpu_multicorrelator.h" #include #include +#include #include #include -#include #include class glonass_l2_ca_dll_pll_c_aid_tracking_cc; diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc index a02b9f358..ec9db011a 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc @@ -35,22 +35,22 @@ */ #include "glonass_l2_ca_dll_pll_c_aid_tracking_sc.h" -#include "glonass_l2_signal_processing.h" -#include "tracking_discriminators.h" -#include "lock_detectors.h" #include "GLONASS_L1_L2_CA.h" -#include "gnss_sdr_flags.h" #include "control_message_factory.h" +#include "glonass_l2_signal_processing.h" +#include "gnss_sdr_flags.h" +#include "lock_detectors.h" +#include "tracking_discriminators.h" #include -#include +#include #include #include #include -#include #include #include #include #include +#include #define CN0_ESTIMATION_SAMPLES 10 @@ -70,7 +70,7 @@ glonass_l2_ca_dll_pll_c_aid_make_tracking_sc( float early_late_space_chips) { return glonass_l2_ca_dll_pll_c_aid_tracking_sc_sptr(new glonass_l2_ca_dll_pll_c_aid_tracking_sc( - fs_in, vector_length, dump, dump_filename, pll_bw_hz, dll_bw_hz, pll_bw_narrow_hz, dll_bw_narrow_hz, extend_correlation_ms, early_late_space_chips)); + fs_in, vector_length, dump, std::move(dump_filename), pll_bw_hz, dll_bw_hz, pll_bw_narrow_hz, dll_bw_narrow_hz, extend_correlation_ms, early_late_space_chips)); } @@ -90,7 +90,7 @@ void glonass_l2_ca_dll_pll_c_aid_tracking_sc::msg_handler_preamble_index(pmt::pm DLOG(INFO) << "Extended correlation enabled for Tracking CH " << d_channel << ": Satellite " << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN); if (d_enable_extended_integration == false) //avoid re-setting preamble indicator { - d_preamble_timestamp_s = pmt::to_double(msg); + d_preamble_timestamp_s = pmt::to_double(std::move(msg)); d_enable_extended_integration = true; d_preamble_synchronized = false; } @@ -119,7 +119,7 @@ glonass_l2_ca_dll_pll_c_aid_tracking_sc::glonass_l2_ca_dll_pll_c_aid_tracking_sc d_dump = dump; d_fs_in = fs_in; d_vector_length = vector_length; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_correlation_length_samples = static_cast(d_vector_length); // Initialize tracking ========================================== @@ -182,7 +182,7 @@ glonass_l2_ca_dll_pll_c_aid_tracking_sc::glonass_l2_ca_dll_pll_c_aid_tracking_sc set_relative_rate(1.0 / static_cast(d_vector_length)); - d_acquisition_gnss_synchro = 0; + d_acquisition_gnss_synchro = nullptr; d_channel = 0; d_acq_code_phase_samples = 0.0; d_acq_carrier_doppler_hz = 0.0; @@ -332,24 +332,24 @@ int32_t glonass_l2_ca_dll_pll_c_aid_tracking_sc::save_matfile() { return 1; } - float *abs_E = new float[num_epoch]; - float *abs_P = new float[num_epoch]; - float *abs_L = new float[num_epoch]; - float *Prompt_I = new float[num_epoch]; - float *Prompt_Q = new float[num_epoch]; - uint64_t *PRN_start_sample_count = new uint64_t[num_epoch]; - double *acc_carrier_phase_rad = new double[num_epoch]; - double *carrier_doppler_hz = new double[num_epoch]; - double *code_freq_chips = new double[num_epoch]; - double *carr_error_hz = new double[num_epoch]; - double *carr_error_filt_hz = new double[num_epoch]; - double *code_error_chips = new double[num_epoch]; - double *code_error_filt_chips = new double[num_epoch]; - double *CN0_SNV_dB_Hz = new double[num_epoch]; - double *carrier_lock_test = new double[num_epoch]; - double *aux1 = new double[num_epoch]; - double *aux2 = new double[num_epoch]; - uint32_t *PRN = new uint32_t[num_epoch]; + auto *abs_E = new float[num_epoch]; + auto *abs_P = new float[num_epoch]; + auto *abs_L = new float[num_epoch]; + auto *Prompt_I = new float[num_epoch]; + auto *Prompt_Q = new float[num_epoch]; + auto *PRN_start_sample_count = new uint64_t[num_epoch]; + auto *acc_carrier_phase_rad = new double[num_epoch]; + auto *carrier_doppler_hz = new double[num_epoch]; + auto *code_freq_chips = new double[num_epoch]; + auto *carr_error_hz = new double[num_epoch]; + auto *carr_error_filt_hz = new double[num_epoch]; + auto *code_error_chips = new double[num_epoch]; + auto *code_error_filt_chips = new double[num_epoch]; + auto *CN0_SNV_dB_Hz = new double[num_epoch]; + auto *carrier_lock_test = new double[num_epoch]; + auto *aux1 = new double[num_epoch]; + auto *aux2 = new double[num_epoch]; + auto *PRN = new uint32_t[num_epoch]; try { @@ -409,8 +409,8 @@ int32_t glonass_l2_ca_dll_pll_c_aid_tracking_sc::save_matfile() std::string filename = d_dump_filename; filename.erase(filename.length() - 4, 4); filename.append(".mat"); - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (reinterpret_cast(matfp) != NULL) + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (reinterpret_cast(matfp) != nullptr) { size_t dims[2] = {1, static_cast(num_epoch)}; matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); @@ -556,15 +556,15 @@ void glonass_l2_ca_dll_pll_c_aid_tracking_sc::set_channel(uint32_t channel) { try { - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); LOG(INFO) << "Tracking dump enabled on channel " << d_channel << " Log file: " << d_dump_filename.c_str() << std::endl; } - catch (const std::ifstream::failure *e) + catch (const std::ifstream::failure &e) { - LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e->what() << std::endl; + LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e.what(); } } } @@ -581,8 +581,8 @@ int glonass_l2_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __at gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { // Block input data and block output stream pointers - const lv_16sc_t *in = reinterpret_cast(input_items[0]); // PRN start block alignment - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); // PRN start block alignment + auto **out = reinterpret_cast(&output_items[0]); // GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder Gnss_Synchro current_synchro_data = Gnss_Synchro(); @@ -895,15 +895,15 @@ int glonass_l2_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __at // AUX vars (for debug purposes) tmp_float = d_code_error_chips_Ti * CURRENT_INTEGRATION_TIME_S; d_dump_file.write(reinterpret_cast(&tmp_float), sizeof(float)); - double tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); + auto tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); d_dump_file.write(reinterpret_cast(&tmp_double), sizeof(double)); // PRN uint32_t prn_ = d_acquisition_gnss_synchro->PRN; d_dump_file.write(reinterpret_cast(&prn_), sizeof(uint32_t)); } - catch (const std::ifstream::failure *e) + catch (const std::ifstream::failure &e) { - LOG(WARNING) << "Exception writing trk dump file " << e->what(); + LOG(WARNING) << "Exception writing trk dump file " << e.what(); } } diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.h b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.h index 746df0595..5745d8ff9 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.h +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.h @@ -37,11 +37,11 @@ #ifndef GNSS_SDR_GLONASS_L2_CA_DLL_PLL_C_AID_TRACKING_SC_H #define GNSS_SDR_GLONASS_L2_CA_DLL_PLL_C_AID_TRACKING_SC_H +#include "cpu_multicorrelator_16sc.h" #include "glonass_l2_signal_processing.h" #include "gnss_synchro.h" #include "tracking_2nd_DLL_filter.h" #include "tracking_FLL_PLL_filter.h" -#include "cpu_multicorrelator_16sc.h" #include #include #include diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.cc index e90341eac..62b90e984 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.cc @@ -37,21 +37,21 @@ */ #include "glonass_l2_ca_dll_pll_tracking_cc.h" -#include "glonass_l2_signal_processing.h" -#include "tracking_discriminators.h" -#include "lock_detectors.h" #include "GLONASS_L1_L2_CA.h" -#include "gnss_sdr_flags.h" #include "control_message_factory.h" -#include -#include +#include "glonass_l2_signal_processing.h" +#include "gnss_sdr_flags.h" +#include "lock_detectors.h" +#include "tracking_discriminators.h" #include +#include #include #include #include #include #include #include +#include #define CN0_ESTIMATION_SAMPLES 10 @@ -68,7 +68,7 @@ glonass_l2_ca_dll_pll_make_tracking_cc( float early_late_space_chips) { return glonass_l2_ca_dll_pll_tracking_cc_sptr(new Glonass_L2_Ca_Dll_Pll_Tracking_cc( - fs_in, vector_length, dump, dump_filename, pll_bw_hz, dll_bw_hz, early_late_space_chips)); + fs_in, vector_length, dump, std::move(dump_filename), pll_bw_hz, dll_bw_hz, early_late_space_chips)); } @@ -98,7 +98,7 @@ Glonass_L2_Ca_Dll_Pll_Tracking_cc::Glonass_L2_Ca_Dll_Pll_Tracking_cc( d_dump = dump; d_fs_in = fs_in; d_vector_length = vector_length; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_current_prn_length_samples = static_cast(d_vector_length); @@ -154,7 +154,7 @@ Glonass_L2_Ca_Dll_Pll_Tracking_cc::Glonass_L2_Ca_Dll_Pll_Tracking_cc( systemName["R"] = std::string("Glonass"); - d_acquisition_gnss_synchro = 0; + d_acquisition_gnss_synchro = nullptr; d_channel = 0; d_acq_code_phase_samples = 0.0; d_acq_carrier_doppler_hz = 0.0; @@ -331,24 +331,24 @@ int32_t Glonass_L2_Ca_Dll_Pll_Tracking_cc::save_matfile() { return 1; } - float *abs_E = new float[num_epoch]; - float *abs_P = new float[num_epoch]; - float *abs_L = new float[num_epoch]; - float *Prompt_I = new float[num_epoch]; - float *Prompt_Q = new float[num_epoch]; - uint64_t *PRN_start_sample_count = new uint64_t[num_epoch]; - double *acc_carrier_phase_rad = new double[num_epoch]; - double *carrier_doppler_hz = new double[num_epoch]; - double *code_freq_chips = new double[num_epoch]; - double *carr_error_hz = new double[num_epoch]; - double *carr_error_filt_hz = new double[num_epoch]; - double *code_error_chips = new double[num_epoch]; - double *code_error_filt_chips = new double[num_epoch]; - double *CN0_SNV_dB_Hz = new double[num_epoch]; - double *carrier_lock_test = new double[num_epoch]; - double *aux1 = new double[num_epoch]; - double *aux2 = new double[num_epoch]; - uint32_t *PRN = new uint32_t[num_epoch]; + auto *abs_E = new float[num_epoch]; + auto *abs_P = new float[num_epoch]; + auto *abs_L = new float[num_epoch]; + auto *Prompt_I = new float[num_epoch]; + auto *Prompt_Q = new float[num_epoch]; + auto *PRN_start_sample_count = new uint64_t[num_epoch]; + auto *acc_carrier_phase_rad = new double[num_epoch]; + auto *carrier_doppler_hz = new double[num_epoch]; + auto *code_freq_chips = new double[num_epoch]; + auto *carr_error_hz = new double[num_epoch]; + auto *carr_error_filt_hz = new double[num_epoch]; + auto *code_error_chips = new double[num_epoch]; + auto *code_error_filt_chips = new double[num_epoch]; + auto *CN0_SNV_dB_Hz = new double[num_epoch]; + auto *carrier_lock_test = new double[num_epoch]; + auto *aux1 = new double[num_epoch]; + auto *aux2 = new double[num_epoch]; + auto *PRN = new uint32_t[num_epoch]; try { @@ -408,8 +408,8 @@ int32_t Glonass_L2_Ca_Dll_Pll_Tracking_cc::save_matfile() std::string filename = d_dump_filename; filename.erase(filename.length() - 4, 4); filename.append(".mat"); - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (reinterpret_cast(matfp) != NULL) + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (reinterpret_cast(matfp) != nullptr) { size_t dims[2] = {1, static_cast(num_epoch)}; matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); @@ -518,7 +518,7 @@ void Glonass_L2_Ca_Dll_Pll_Tracking_cc::set_channel(uint32_t channel) { try { - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); @@ -549,8 +549,8 @@ int Glonass_L2_Ca_Dll_Pll_Tracking_cc::general_work(int noutput_items __attribut double code_error_filt_chips = 0.0; // Block input data and block output stream pointers - const gr_complex *in = reinterpret_cast(input_items[0]); // PRN start block alignment - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); // PRN start block alignment + auto **out = reinterpret_cast(&output_items[0]); // GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder Gnss_Synchro current_synchro_data = Gnss_Synchro(); @@ -749,7 +749,7 @@ int Glonass_L2_Ca_Dll_Pll_Tracking_cc::general_work(int noutput_items __attribut // AUX vars (for debug purposes) tmp_float = d_rem_code_phase_samples; d_dump_file.write(reinterpret_cast(&tmp_float), sizeof(float)); - double tmp_double = static_cast(d_sample_counter + d_current_prn_length_samples); + auto tmp_double = static_cast(d_sample_counter + d_current_prn_length_samples); d_dump_file.write(reinterpret_cast(&tmp_double), sizeof(double)); // PRN uint32_t prn_ = d_acquisition_gnss_synchro->PRN; diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.h b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.h index 1839ea51b..f2f4ebab5 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.h +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.h @@ -37,10 +37,10 @@ #ifndef GNSS_SDR_GLONASS_L2_CA_DLL_PLL_TRACKING_CC_H #define GNSS_SDR_GLONASS_L2_CA_DLL_PLL_TRACKING_CC_H +#include "cpu_multicorrelator.h" #include "gnss_synchro.h" #include "tracking_2nd_DLL_filter.h" #include "tracking_2nd_PLL_filter.h" -#include "cpu_multicorrelator.h" #include #include #include diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc index 33879066e..5db4bef9b 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc @@ -29,22 +29,22 @@ */ #include "gps_l1_ca_dll_pll_c_aid_tracking_cc.h" -#include "gps_sdr_signal_processing.h" -#include "tracking_discriminators.h" -#include "lock_detectors.h" -#include "gnss_sdr_flags.h" #include "GPS_L1_CA.h" #include "control_message_factory.h" -#include +#include "gnss_sdr_flags.h" +#include "gps_sdr_signal_processing.h" +#include "lock_detectors.h" +#include "tracking_discriminators.h" #include +#include #include #include #include -#include #include #include #include #include +#include using google::LogMessage; @@ -63,7 +63,7 @@ gps_l1_ca_dll_pll_c_aid_make_tracking_cc( float early_late_space_chips) { return gps_l1_ca_dll_pll_c_aid_tracking_cc_sptr(new gps_l1_ca_dll_pll_c_aid_tracking_cc( - fs_in, vector_length, dump, dump_filename, pll_bw_hz, dll_bw_hz, pll_bw_narrow_hz, dll_bw_narrow_hz, extend_correlation_ms, early_late_space_chips)); + fs_in, vector_length, dump, std::move(dump_filename), pll_bw_hz, dll_bw_hz, pll_bw_narrow_hz, dll_bw_narrow_hz, extend_correlation_ms, early_late_space_chips)); } @@ -83,7 +83,7 @@ void gps_l1_ca_dll_pll_c_aid_tracking_cc::msg_handler_preamble_index(pmt::pmt_t DLOG(INFO) << "Extended correlation enabled for Tracking CH " << d_channel << ": Satellite " << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN); if (d_enable_extended_integration == false) //avoid re-setting preamble indicator { - d_preamble_timestamp_s = pmt::to_double(msg); + d_preamble_timestamp_s = pmt::to_double(std::move(msg)); d_enable_extended_integration = true; d_preamble_synchronized = false; } @@ -114,7 +114,7 @@ gps_l1_ca_dll_pll_c_aid_tracking_cc::gps_l1_ca_dll_pll_c_aid_tracking_cc( d_dump = dump; d_fs_in = fs_in; d_vector_length = vector_length; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_correlation_length_samples = static_cast(d_vector_length); // Initialize tracking ========================================== @@ -175,7 +175,7 @@ gps_l1_ca_dll_pll_c_aid_tracking_cc::gps_l1_ca_dll_pll_c_aid_tracking_cc( set_relative_rate(1.0 / static_cast(d_vector_length)); - d_acquisition_gnss_synchro = 0; + d_acquisition_gnss_synchro = nullptr; d_channel = 0; d_acq_code_phase_samples = 0.0; d_acq_carrier_doppler_hz = 0.0; @@ -358,24 +358,24 @@ int32_t gps_l1_ca_dll_pll_c_aid_tracking_cc::save_matfile() { return 1; } - float *abs_E = new float[num_epoch]; - float *abs_P = new float[num_epoch]; - float *abs_L = new float[num_epoch]; - float *Prompt_I = new float[num_epoch]; - float *Prompt_Q = new float[num_epoch]; - uint64_t *PRN_start_sample_count = new uint64_t[num_epoch]; - double *acc_carrier_phase_rad = new double[num_epoch]; - double *carrier_doppler_hz = new double[num_epoch]; - double *code_freq_chips = new double[num_epoch]; - double *carr_error_hz = new double[num_epoch]; - double *carr_error_filt_hz = new double[num_epoch]; - double *code_error_chips = new double[num_epoch]; - double *code_error_filt_chips = new double[num_epoch]; - double *CN0_SNV_dB_Hz = new double[num_epoch]; - double *carrier_lock_test = new double[num_epoch]; - double *aux1 = new double[num_epoch]; - double *aux2 = new double[num_epoch]; - uint32_t *PRN = new uint32_t[num_epoch]; + auto *abs_E = new float[num_epoch]; + auto *abs_P = new float[num_epoch]; + auto *abs_L = new float[num_epoch]; + auto *Prompt_I = new float[num_epoch]; + auto *Prompt_Q = new float[num_epoch]; + auto *PRN_start_sample_count = new uint64_t[num_epoch]; + auto *acc_carrier_phase_rad = new double[num_epoch]; + auto *carrier_doppler_hz = new double[num_epoch]; + auto *code_freq_chips = new double[num_epoch]; + auto *carr_error_hz = new double[num_epoch]; + auto *carr_error_filt_hz = new double[num_epoch]; + auto *code_error_chips = new double[num_epoch]; + auto *code_error_filt_chips = new double[num_epoch]; + auto *CN0_SNV_dB_Hz = new double[num_epoch]; + auto *carrier_lock_test = new double[num_epoch]; + auto *aux1 = new double[num_epoch]; + auto *aux2 = new double[num_epoch]; + auto *PRN = new uint32_t[num_epoch]; try { @@ -435,8 +435,8 @@ int32_t gps_l1_ca_dll_pll_c_aid_tracking_cc::save_matfile() std::string filename = d_dump_filename; filename.erase(filename.length() - 4, 4); filename.append(".mat"); - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (reinterpret_cast(matfp) != NULL) + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (reinterpret_cast(matfp) != nullptr) { size_t dims[2] = {1, static_cast(num_epoch)}; matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); @@ -545,15 +545,15 @@ void gps_l1_ca_dll_pll_c_aid_tracking_cc::set_channel(uint32_t channel) { try { - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); LOG(INFO) << "Tracking dump enabled on channel " << d_channel << " Log file: " << d_dump_filename.c_str(); } - catch (const std::ifstream::failure *e) + catch (const std::ifstream::failure &e) { - LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e->what() << std::endl; + LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e.what(); } } } @@ -570,8 +570,8 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __attrib gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { // Block input data and block output stream pointers - const gr_complex *in = reinterpret_cast(input_items[0]); - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto **out = reinterpret_cast(&output_items[0]); // GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder Gnss_Synchro current_synchro_data = Gnss_Synchro(); @@ -885,15 +885,15 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __attrib // AUX vars (for debug purposes) tmp_float = d_code_error_chips_Ti * CURRENT_INTEGRATION_TIME_S; d_dump_file.write(reinterpret_cast(&tmp_float), sizeof(float)); - double tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); + auto tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); d_dump_file.write(reinterpret_cast(&tmp_double), sizeof(double)); // PRN uint32_t prn_ = d_acquisition_gnss_synchro->PRN; d_dump_file.write(reinterpret_cast(&prn_), sizeof(uint32_t)); } - catch (const std::ifstream::failure *e) + catch (const std::ifstream::failure &e) { - LOG(WARNING) << "Exception writing trk dump file " << e->what(); + LOG(WARNING) << "Exception writing trk dump file " << e.what(); } } @@ -904,8 +904,6 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __attrib { return 1; } - else - { - return 0; - } + + return 0; } diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.h b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.h index 42f5a4902..43db468ae 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.h +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.h @@ -44,9 +44,9 @@ #include "cpu_multicorrelator.h" #include #include +#include #include #include -#include #include class gps_l1_ca_dll_pll_c_aid_tracking_cc; diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.cc index b1defca22..457b7e65f 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.cc @@ -29,22 +29,22 @@ */ #include "gps_l1_ca_dll_pll_c_aid_tracking_sc.h" -#include "gps_sdr_signal_processing.h" -#include "tracking_discriminators.h" -#include "lock_detectors.h" #include "GPS_L1_CA.h" -#include "gnss_sdr_flags.h" #include "control_message_factory.h" +#include "gnss_sdr_flags.h" +#include "gps_sdr_signal_processing.h" +#include "lock_detectors.h" +#include "tracking_discriminators.h" #include -#include -#include -#include #include +#include #include +#include #include #include #include #include +#include using google::LogMessage; @@ -63,7 +63,7 @@ gps_l1_ca_dll_pll_c_aid_make_tracking_sc( float early_late_space_chips) { return gps_l1_ca_dll_pll_c_aid_tracking_sc_sptr(new gps_l1_ca_dll_pll_c_aid_tracking_sc( - fs_in, vector_length, dump, dump_filename, pll_bw_hz, dll_bw_hz, pll_bw_narrow_hz, dll_bw_narrow_hz, extend_correlation_ms, early_late_space_chips)); + fs_in, vector_length, dump, std::move(dump_filename), pll_bw_hz, dll_bw_hz, pll_bw_narrow_hz, dll_bw_narrow_hz, extend_correlation_ms, early_late_space_chips)); } @@ -83,7 +83,7 @@ void gps_l1_ca_dll_pll_c_aid_tracking_sc::msg_handler_preamble_index(pmt::pmt_t DLOG(INFO) << "Extended correlation enabled for Tracking CH " << d_channel << ": Satellite " << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN); if (d_enable_extended_integration == false) //avoid re-setting preamble indicator { - d_preamble_timestamp_s = pmt::to_double(msg); + d_preamble_timestamp_s = pmt::to_double(std::move(msg)); d_enable_extended_integration = true; d_preamble_synchronized = false; } @@ -111,7 +111,7 @@ gps_l1_ca_dll_pll_c_aid_tracking_sc::gps_l1_ca_dll_pll_c_aid_tracking_sc( d_dump = dump; d_fs_in = fs_in; d_vector_length = vector_length; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_correlation_length_samples = static_cast(d_vector_length); // Initialize tracking ========================================== @@ -175,7 +175,7 @@ gps_l1_ca_dll_pll_c_aid_tracking_sc::gps_l1_ca_dll_pll_c_aid_tracking_sc( set_relative_rate(1.0 / static_cast(d_vector_length)); - d_acquisition_gnss_synchro = 0; + d_acquisition_gnss_synchro = nullptr; d_channel = 0; d_acq_code_phase_samples = 0.0; d_acq_carrier_doppler_hz = 0.0; @@ -360,24 +360,24 @@ int32_t gps_l1_ca_dll_pll_c_aid_tracking_sc::save_matfile() { return 1; } - float *abs_E = new float[num_epoch]; - float *abs_P = new float[num_epoch]; - float *abs_L = new float[num_epoch]; - float *Prompt_I = new float[num_epoch]; - float *Prompt_Q = new float[num_epoch]; - uint64_t *PRN_start_sample_count = new uint64_t[num_epoch]; - double *acc_carrier_phase_rad = new double[num_epoch]; - double *carrier_doppler_hz = new double[num_epoch]; - double *code_freq_chips = new double[num_epoch]; - double *carr_error_hz = new double[num_epoch]; - double *carr_error_filt_hz = new double[num_epoch]; - double *code_error_chips = new double[num_epoch]; - double *code_error_filt_chips = new double[num_epoch]; - double *CN0_SNV_dB_Hz = new double[num_epoch]; - double *carrier_lock_test = new double[num_epoch]; - double *aux1 = new double[num_epoch]; - double *aux2 = new double[num_epoch]; - uint32_t *PRN = new uint32_t[num_epoch]; + auto *abs_E = new float[num_epoch]; + auto *abs_P = new float[num_epoch]; + auto *abs_L = new float[num_epoch]; + auto *Prompt_I = new float[num_epoch]; + auto *Prompt_Q = new float[num_epoch]; + auto *PRN_start_sample_count = new uint64_t[num_epoch]; + auto *acc_carrier_phase_rad = new double[num_epoch]; + auto *carrier_doppler_hz = new double[num_epoch]; + auto *code_freq_chips = new double[num_epoch]; + auto *carr_error_hz = new double[num_epoch]; + auto *carr_error_filt_hz = new double[num_epoch]; + auto *code_error_chips = new double[num_epoch]; + auto *code_error_filt_chips = new double[num_epoch]; + auto *CN0_SNV_dB_Hz = new double[num_epoch]; + auto *carrier_lock_test = new double[num_epoch]; + auto *aux1 = new double[num_epoch]; + auto *aux2 = new double[num_epoch]; + auto *PRN = new uint32_t[num_epoch]; try { @@ -437,8 +437,8 @@ int32_t gps_l1_ca_dll_pll_c_aid_tracking_sc::save_matfile() std::string filename = d_dump_filename; filename.erase(filename.length() - 4, 4); filename.append(".mat"); - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (reinterpret_cast(matfp) != NULL) + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (reinterpret_cast(matfp) != nullptr) { size_t dims[2] = {1, static_cast(num_epoch)}; matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); @@ -547,15 +547,15 @@ void gps_l1_ca_dll_pll_c_aid_tracking_sc::set_channel(uint32_t channel) { try { - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); LOG(INFO) << "Tracking dump enabled on channel " << d_channel << " Log file: " << d_dump_filename.c_str(); } - catch (const std::ifstream::failure *e) + catch (const std::ifstream::failure &e) { - LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e->what(); + LOG(WARNING) << "channel " << d_channel << " Exception opening trk dump file " << e.what(); } } } @@ -572,8 +572,8 @@ int gps_l1_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __attrib gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) { // Block input data and block output stream pointers - const lv_16sc_t *in = reinterpret_cast(input_items[0]); //PRN start block alignment - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); //PRN start block alignment + auto **out = reinterpret_cast(&output_items[0]); // GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder Gnss_Synchro current_synchro_data = Gnss_Synchro(); @@ -886,15 +886,15 @@ int gps_l1_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __attrib // AUX vars (for debug purposes) tmp_float = d_code_error_chips_Ti * CURRENT_INTEGRATION_TIME_S; d_dump_file.write(reinterpret_cast(&tmp_float), sizeof(float)); - double tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); + auto tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); d_dump_file.write(reinterpret_cast(&tmp_double), sizeof(double)); // PRN uint32_t prn_ = d_acquisition_gnss_synchro->PRN; d_dump_file.write(reinterpret_cast(&prn_), sizeof(uint32_t)); } - catch (const std::ifstream::failure *e) + catch (const std::ifstream::failure &e) { - LOG(WARNING) << "Exception writing trk dump file " << e->what(); + LOG(WARNING) << "Exception writing trk dump file " << e.what(); } } @@ -905,8 +905,6 @@ int gps_l1_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __attrib { return 1; } - else - { - return 0; - } + + return 0; } diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.h b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.h index 7bd75d974..f7624e944 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.h +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_sc.h @@ -37,11 +37,11 @@ #ifndef GNSS_SDR_GPS_L1_CA_DLL_PLL_C_AID_TRACKING_SC_H #define GNSS_SDR_GPS_L1_CA_DLL_PLL_C_AID_TRACKING_SC_H -#include "gps_sdr_signal_processing.h" +#include "cpu_multicorrelator_16sc.h" #include "gnss_synchro.h" +#include "gps_sdr_signal_processing.h" #include "tracking_2nd_DLL_filter.h" #include "tracking_FLL_PLL_filter.h" -#include "cpu_multicorrelator_16sc.h" #include #include #include diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.cc index 713d43164..36d27c0f6 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.cc @@ -29,17 +29,17 @@ */ #include "gps_l1_ca_dll_pll_tracking_gpu_cc.h" -#include "gps_sdr_signal_processing.h" -#include "tracking_discriminators.h" -#include "lock_detectors.h" #include "GPS_L1_CA.h" #include "control_message_factory.h" #include "gnss_sdr_flags.h" +#include "gps_sdr_signal_processing.h" +#include "lock_detectors.h" +#include "tracking_discriminators.h" #include -#include -#include #include +#include #include +#include #include #include #include diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_kf_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_kf_tracking_cc.cc index f277bf216..20c800430 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_kf_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_kf_tracking_cc.cc @@ -38,21 +38,21 @@ */ #include "gps_l1_ca_kf_tracking_cc.h" -#include "gps_sdr_signal_processing.h" -#include "tracking_discriminators.h" -#include "lock_detectors.h" -#include "gnss_sdr_flags.h" #include "GPS_L1_CA.h" #include "control_message_factory.h" -#include -#include +#include "gnss_sdr_flags.h" +#include "gps_sdr_signal_processing.h" +#include "lock_detectors.h" +#include "tracking_discriminators.h" #include -#include +#include #include +#include #include #include #include #include +#include using google::LogMessage; @@ -74,7 +74,7 @@ gps_l1_ca_kf_make_tracking_cc( int32_t bce_kappa) { return gps_l1_ca_kf_tracking_cc_sptr(new Gps_L1_Ca_Kf_Tracking_cc(order, if_freq, - fs_in, vector_length, dump, dump_filename, dll_bw_hz, early_late_space_chips, + fs_in, vector_length, dump, std::move(dump_filename), dll_bw_hz, early_late_space_chips, bce_run, bce_ptrans, bce_strans, bce_nu, bce_kappa)); } @@ -115,7 +115,7 @@ Gps_L1_Ca_Kf_Tracking_cc::Gps_L1_Ca_Kf_Tracking_cc( d_if_freq = if_freq; d_fs_in = fs_in; d_vector_length = vector_length; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); d_current_prn_length_samples = static_cast(d_vector_length); @@ -172,7 +172,7 @@ Gps_L1_Ca_Kf_Tracking_cc::Gps_L1_Ca_Kf_Tracking_cc( systemName["G"] = std::string("GPS"); systemName["S"] = std::string("SBAS"); - d_acquisition_gnss_synchro = 0; + d_acquisition_gnss_synchro = nullptr; d_channel = 0; d_acq_code_phase_samples = 0.0; d_acq_carrier_doppler_hz = 0.0; @@ -427,28 +427,28 @@ int32_t Gps_L1_Ca_Kf_Tracking_cc::save_matfile() { return 1; } - float *abs_VE = new float[num_epoch]; - float *abs_E = new float[num_epoch]; - float *abs_P = new float[num_epoch]; - float *abs_L = new float[num_epoch]; - float *abs_VL = new float[num_epoch]; - float *Prompt_I = new float[num_epoch]; - float *Prompt_Q = new float[num_epoch]; - uint64_t *PRN_start_sample_count = new uint64_t[num_epoch]; - float *acc_carrier_phase_rad = new float[num_epoch]; - float *carrier_doppler_hz = new float[num_epoch]; - float *carrier_dopplerrate_hz2 = new float[num_epoch]; - float *code_freq_chips = new float[num_epoch]; - float *carr_error_hz = new float[num_epoch]; - float *carr_noise_sigma2 = new float[num_epoch]; - float *carr_error_filt_hz = new float[num_epoch]; - float *code_error_chips = new float[num_epoch]; - float *code_error_filt_chips = new float[num_epoch]; - float *CN0_SNV_dB_Hz = new float[num_epoch]; - float *carrier_lock_test = new float[num_epoch]; - float *aux1 = new float[num_epoch]; - double *aux2 = new double[num_epoch]; - uint32_t *PRN = new uint32_t[num_epoch]; + auto *abs_VE = new float[num_epoch]; + auto *abs_E = new float[num_epoch]; + auto *abs_P = new float[num_epoch]; + auto *abs_L = new float[num_epoch]; + auto *abs_VL = new float[num_epoch]; + auto *Prompt_I = new float[num_epoch]; + auto *Prompt_Q = new float[num_epoch]; + auto *PRN_start_sample_count = new uint64_t[num_epoch]; + auto *acc_carrier_phase_rad = new float[num_epoch]; + auto *carrier_doppler_hz = new float[num_epoch]; + auto *carrier_dopplerrate_hz2 = new float[num_epoch]; + auto *code_freq_chips = new float[num_epoch]; + auto *carr_error_hz = new float[num_epoch]; + auto *carr_noise_sigma2 = new float[num_epoch]; + auto *carr_error_filt_hz = new float[num_epoch]; + auto *code_error_chips = new float[num_epoch]; + auto *code_error_filt_chips = new float[num_epoch]; + auto *CN0_SNV_dB_Hz = new float[num_epoch]; + auto *carrier_lock_test = new float[num_epoch]; + auto *aux1 = new float[num_epoch]; + auto *aux2 = new double[num_epoch]; + auto *PRN = new uint32_t[num_epoch]; try { @@ -516,8 +516,8 @@ int32_t Gps_L1_Ca_Kf_Tracking_cc::save_matfile() std::string filename = d_dump_filename; filename.erase(filename.length() - 4, 4); filename.append(".mat"); - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - if (reinterpret_cast(matfp) != NULL) + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + if (reinterpret_cast(matfp) != nullptr) { size_t dims[2] = {1, static_cast(num_epoch)}; matvar = Mat_VarCreate("abs_VE", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VE, 0); @@ -647,7 +647,7 @@ void Gps_L1_Ca_Kf_Tracking_cc::set_channel(uint32_t channel) { try { - d_dump_filename.append(boost::lexical_cast(d_channel)); + d_dump_filename.append(std::to_string(d_channel)); d_dump_filename.append(".dat"); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::out | std::ios::binary); @@ -677,8 +677,8 @@ int Gps_L1_Ca_Kf_Tracking_cc::general_work(int noutput_items __attribute__((unus double code_error_filt_chips = 0.0; // Block input data and block output stream pointers - const gr_complex *in = reinterpret_cast(input_items[0]); - Gnss_Synchro **out = reinterpret_cast(&output_items[0]); + const auto *in = reinterpret_cast(input_items[0]); + auto **out = reinterpret_cast(&output_items[0]); // GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder Gnss_Synchro current_synchro_data = Gnss_Synchro(); diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_kf_tracking_cc.h b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_kf_tracking_cc.h index 7f714500e..a40e257b9 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_kf_tracking_cc.h +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_kf_tracking_cc.h @@ -40,11 +40,11 @@ #ifndef GNSS_SDR_GPS_L1_CA_KF_TRACKING_CC_H #define GNSS_SDR_GPS_L1_CA_KF_TRACKING_CC_H +#include "bayesian_estimation.h" +#include "cpu_multicorrelator_real_codes.h" #include "gnss_synchro.h" #include "tracking_2nd_DLL_filter.h" #include "tracking_2nd_PLL_filter.h" -#include "cpu_multicorrelator_real_codes.h" -#include "bayesian_estimation.h" #include #include #include diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc index 232fc7aa8..832e94207 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc @@ -36,22 +36,23 @@ */ #include "gps_l1_ca_tcp_connector_tracking_cc.h" +#include "GPS_L1_CA.h" #include "control_message_factory.h" #include "gnss_sdr_flags.h" #include "gps_sdr_signal_processing.h" -#include "GPS_L1_CA.h" #include "lock_detectors.h" #include "tcp_communication.h" #include "tcp_packet_data.h" #include "tracking_discriminators.h" #include #include -#include #include +#include #include #include #include #include +#include using google::LogMessage; @@ -61,7 +62,7 @@ gps_l1_ca_tcp_connector_make_tracking_cc( int64_t fs_in, uint32_t vector_length, bool dump, - std::string dump_filename, + const std::string &dump_filename, float early_late_space_chips, size_t port_ch0) { @@ -84,7 +85,7 @@ Gps_L1_Ca_Tcp_Connector_Tracking_cc::Gps_L1_Ca_Tcp_Connector_Tracking_cc( int64_t fs_in, uint32_t vector_length, bool dump, - std::string dump_filename, + const std::string &dump_filename, float early_late_space_chips, size_t port_ch0) : gr::block("Gps_L1_Ca_Tcp_Connector_Tracking_cc", gr::io_signature::make(1, 1, sizeof(gr_complex)), gr::io_signature::make(1, 1, sizeof(Gnss_Synchro))) @@ -94,7 +95,7 @@ Gps_L1_Ca_Tcp_Connector_Tracking_cc::Gps_L1_Ca_Tcp_Connector_Tracking_cc( d_dump = dump; d_fs_in = fs_in; d_vector_length = vector_length; - d_dump_filename = dump_filename; + d_dump_filename = std::move(dump_filename); //--- DLL variables -------------------------------------------------------- d_early_late_spc_chips = early_late_space_chips; // Define early-late offset (in chips) @@ -163,7 +164,7 @@ Gps_L1_Ca_Tcp_Connector_Tracking_cc::Gps_L1_Ca_Tcp_Connector_Tracking_cc( systemName["E"] = std::string("Galileo"); systemName["C"] = std::string("Compass"); - d_acquisition_gnss_synchro = 0; + d_acquisition_gnss_synchro = nullptr; d_channel = 0; d_next_rem_code_phase_samples = 0; d_acq_code_phase_samples = 0.0; @@ -562,7 +563,7 @@ int Gps_L1_Ca_Tcp_Connector_Tracking_cc::general_work(int noutput_items __attrib // AUX vars (for debug purposes) tmp_float = 0.0; d_dump_file.write(reinterpret_cast(&tmp_float), sizeof(float)); - double tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); + auto tmp_double = static_cast(d_sample_counter + d_correlation_length_samples); d_dump_file.write(reinterpret_cast(&tmp_double), sizeof(double)); // PRN uint32_t prn_ = d_acquisition_gnss_synchro->PRN; @@ -582,8 +583,6 @@ int Gps_L1_Ca_Tcp_Connector_Tracking_cc::general_work(int noutput_items __attrib { return 1; } - else - { - return 0; - } + + return 0; } diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.h b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.h index f946ed0c8..636a9fe28 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.h +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.h @@ -54,7 +54,7 @@ gps_l1_ca_tcp_connector_tracking_cc_sptr gps_l1_ca_tcp_connector_make_tracking_cc( int64_t fs_in, uint32_t vector_length, bool dump, - std::string dump_filename, + const std::string &dump_filename, float early_late_space_chips, size_t port_ch0); @@ -86,14 +86,14 @@ private: gps_l1_ca_tcp_connector_make_tracking_cc( int64_t fs_in, uint32_t vector_length, bool dump, - std::string dump_filename, + const std::string &dump_filename, float early_late_space_chips, size_t port_ch0); Gps_L1_Ca_Tcp_Connector_Tracking_cc( int64_t fs_in, uint32_t vector_length, bool dump, - std::string dump_filename, + const std::string &dump_filename, float early_late_space_chips, size_t port_ch0); diff --git a/src/algorithms/tracking/libs/bayesian_estimation.cc b/src/algorithms/tracking/libs/bayesian_estimation.cc index 30e7d45ec..227cd6321 100644 --- a/src/algorithms/tracking/libs/bayesian_estimation.cc +++ b/src/algorithms/tracking/libs/bayesian_estimation.cc @@ -74,9 +74,7 @@ Bayesian_estimator::Bayesian_estimator(const arma::vec& mu_prior_0, int kappa_pr Psi_est = Psi_prior; } -Bayesian_estimator::~Bayesian_estimator() -{ -} +Bayesian_estimator::~Bayesian_estimator() = default; void Bayesian_estimator::init(const arma::mat& mu_prior_0, int kappa_prior_0, int nu_prior_0, const arma::mat& Psi_prior_0) { diff --git a/src/algorithms/tracking/libs/bayesian_estimation.h b/src/algorithms/tracking/libs/bayesian_estimation.h index 002e7a75c..02f54143e 100644 --- a/src/algorithms/tracking/libs/bayesian_estimation.h +++ b/src/algorithms/tracking/libs/bayesian_estimation.h @@ -40,8 +40,8 @@ #ifndef GNSS_SDR_BAYESIAN_ESTIMATION_H_ #define GNSS_SDR_BAYESIAN_ESTIMATION_H_ -#include #include +#include /*! \brief Bayesian_estimator is an estimator of noise characteristics (i.e. mean, covariance) * diff --git a/src/algorithms/tracking/libs/dll_pll_conf.h b/src/algorithms/tracking/libs/dll_pll_conf.h index 0fbf07cc3..2304404b1 100644 --- a/src/algorithms/tracking/libs/dll_pll_conf.h +++ b/src/algorithms/tracking/libs/dll_pll_conf.h @@ -65,7 +65,7 @@ public: double carrier_lock_th; bool track_pilot; char system; - char signal[3]; + char signal[3]{}; Dll_Pll_Conf(); }; diff --git a/src/algorithms/tracking/libs/fpga_multicorrelator.cc b/src/algorithms/tracking/libs/fpga_multicorrelator.cc index 80123157d..add36b0a8 100644 --- a/src/algorithms/tracking/libs/fpga_multicorrelator.cc +++ b/src/algorithms/tracking/libs/fpga_multicorrelator.cc @@ -35,27 +35,26 @@ */ #include "fpga_multicorrelator.h" - #include // FPGA stuff #include // libraries used by DMA test code and GIPO test code -#include +#include +#include #include #include -#include // libraries used by DMA test code +#include +#include #include -#include #include -#include // libraries used by GPIO test code -#include -#include +#include +#include #include // logging @@ -63,6 +62,7 @@ // string manipulation #include +#include // constants #include "GPS_L1_CA.h" @@ -161,7 +161,7 @@ fpga_multicorrelator_8sc::fpga_multicorrelator_8sc(int32_t n_correlators, { //printf("tracking fpga class created\n"); d_n_correlators = n_correlators; - d_device_name = device_name; + d_device_name = std::move(device_name); d_device_base = device_base; d_track_pilot = track_pilot; d_device_descriptor = 0; @@ -346,7 +346,7 @@ void fpga_multicorrelator_8sc::set_channel(uint32_t channel) // std::cout << "deviceio" << device_io_name << " opened successfully" << std::endl; // // } - d_map_base = reinterpret_cast(mmap(NULL, PAGE_SIZE, + d_map_base = reinterpret_cast(mmap(nullptr, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, d_device_descriptor, 0)); if (d_map_base == reinterpret_cast(-1)) @@ -710,7 +710,7 @@ void fpga_multicorrelator_8sc::unlock_channel(void) void fpga_multicorrelator_8sc::close_device() { - uint32_t *aux = const_cast(d_map_base); + auto *aux = const_cast(d_map_base); if (munmap(static_cast(aux), PAGE_SIZE) == -1) { printf("Failed to unmap memory uio\n"); diff --git a/src/algorithms/tracking/libs/tcp_communication.cc b/src/algorithms/tracking/libs/tcp_communication.cc index edba15b7f..8ca6fde27 100644 --- a/src/algorithms/tracking/libs/tcp_communication.cc +++ b/src/algorithms/tracking/libs/tcp_communication.cc @@ -29,20 +29,16 @@ * ------------------------------------------------------------------------- */ -#include "tcp_packet_data.h" #include "tcp_communication.h" +#include "tcp_packet_data.h" #include #include -tcp_communication::tcp_communication() : tcp_socket_(io_service_) -{ -} +tcp_communication::tcp_communication() : tcp_socket_(io_service_) {} // NOLINT -tcp_communication::~tcp_communication() -{ -} +tcp_communication::~tcp_communication() = default; int tcp_communication::listen_tcp_connection(size_t d_port_, size_t d_port_ch0_) diff --git a/src/algorithms/tracking/libs/tcp_communication.h b/src/algorithms/tracking/libs/tcp_communication.h index 05860b9cf..1a36d8212 100644 --- a/src/algorithms/tracking/libs/tcp_communication.h +++ b/src/algorithms/tracking/libs/tcp_communication.h @@ -32,9 +32,9 @@ #ifndef GNSS_SDR_TCP_COMMUNICATION_H_ #define GNSS_SDR_TCP_COMMUNICATION_H_ -#include -#include #include "tcp_packet_data.h" +#include +#include #define NUM_TX_VARIABLES_GALILEO_E1 13 #define NUM_TX_VARIABLES_GPS_L1_CA 9 diff --git a/src/algorithms/tracking/libs/tcp_packet_data.cc b/src/algorithms/tracking/libs/tcp_packet_data.cc index 0bd4fcde6..eb53ff59b 100644 --- a/src/algorithms/tracking/libs/tcp_packet_data.cc +++ b/src/algorithms/tracking/libs/tcp_packet_data.cc @@ -37,4 +37,4 @@ tcp_packet_data::tcp_packet_data() proc_pack_carrier_doppler_hz = 0; } -tcp_packet_data::~tcp_packet_data() {} +tcp_packet_data::~tcp_packet_data() = default; diff --git a/src/algorithms/tracking/libs/tracking_2nd_DLL_filter.cc b/src/algorithms/tracking/libs/tracking_2nd_DLL_filter.cc index db7583303..01b8641ea 100644 --- a/src/algorithms/tracking/libs/tracking_2nd_DLL_filter.cc +++ b/src/algorithms/tracking/libs/tracking_2nd_DLL_filter.cc @@ -72,21 +72,23 @@ float Tracking_2nd_DLL_filter::get_code_nco(float DLL_discriminator) return code_nco; } + Tracking_2nd_DLL_filter::Tracking_2nd_DLL_filter(float pdi_code) { d_pdi_code = pdi_code; // Summation interval for code d_dlldampingratio = 0.7; } + Tracking_2nd_DLL_filter::Tracking_2nd_DLL_filter() { d_pdi_code = 0.001; // Summation interval for code d_dlldampingratio = 0.7; } -Tracking_2nd_DLL_filter::~Tracking_2nd_DLL_filter() -{ -} + +Tracking_2nd_DLL_filter::~Tracking_2nd_DLL_filter() = default; + void Tracking_2nd_DLL_filter::set_pdi(float pdi_code) { diff --git a/src/algorithms/tracking/libs/tracking_2nd_PLL_filter.cc b/src/algorithms/tracking/libs/tracking_2nd_PLL_filter.cc index ccbc47fff..bf0b0841b 100644 --- a/src/algorithms/tracking/libs/tracking_2nd_PLL_filter.cc +++ b/src/algorithms/tracking/libs/tracking_2nd_PLL_filter.cc @@ -77,6 +77,7 @@ float Tracking_2nd_PLL_filter::get_carrier_nco(float PLL_discriminator) return carr_nco; } + Tracking_2nd_PLL_filter::Tracking_2nd_PLL_filter(float pdi_carr) { //--- PLL variables -------------------------------------------------------- @@ -94,9 +95,8 @@ Tracking_2nd_PLL_filter::Tracking_2nd_PLL_filter() } -Tracking_2nd_PLL_filter::~Tracking_2nd_PLL_filter() -{ -} +Tracking_2nd_PLL_filter::~Tracking_2nd_PLL_filter() = default; + void Tracking_2nd_PLL_filter::set_pdi(float pdi_carr) { diff --git a/src/algorithms/tracking/libs/tracking_FLL_PLL_filter.cc b/src/algorithms/tracking/libs/tracking_FLL_PLL_filter.cc index ffe5152e5..04624d3f4 100644 --- a/src/algorithms/tracking/libs/tracking_FLL_PLL_filter.cc +++ b/src/algorithms/tracking/libs/tracking_FLL_PLL_filter.cc @@ -131,6 +131,4 @@ Tracking_FLL_PLL_filter::Tracking_FLL_PLL_filter() } -Tracking_FLL_PLL_filter::~Tracking_FLL_PLL_filter() -{ -} +Tracking_FLL_PLL_filter::~Tracking_FLL_PLL_filter() = default; diff --git a/src/algorithms/tracking/libs/tracking_discriminators.cc b/src/algorithms/tracking/libs/tracking_discriminators.cc index 5d7283d65..c7ba2858f 100644 --- a/src/algorithms/tracking/libs/tracking_discriminators.cc +++ b/src/algorithms/tracking/libs/tracking_discriminators.cc @@ -81,10 +81,7 @@ double pll_cloop_two_quadrant_atan(gr_complex prompt_s1) { return atan(prompt_s1.imag() / prompt_s1.real()); } - else - { - return 0.0; - } + return 0.0; } @@ -105,10 +102,7 @@ double dll_nc_e_minus_l_normalized(gr_complex early_s1, gr_complex late_s1) { return 0.0; } - else - { - return 0.5 * (P_early - P_late) / (P_early + P_late); - } + return 0.5 * (P_early - P_late) / (P_early + P_late); } /* @@ -129,8 +123,5 @@ double dll_nc_vemlp_normalized(gr_complex very_early_s1, gr_complex early_s1, gr { return 0.0; } - else - { - return (P_early - P_late) / (P_early + P_late); - } + return (P_early - P_late) / (P_early + P_late); } diff --git a/src/algorithms/tracking/libs/tracking_loop_filter.cc b/src/algorithms/tracking/libs/tracking_loop_filter.cc index 07ff8f730..f5ebd5a10 100644 --- a/src/algorithms/tracking/libs/tracking_loop_filter.cc +++ b/src/algorithms/tracking/libs/tracking_loop_filter.cc @@ -33,8 +33,8 @@ #include "tracking_loop_filter.h" -#include #include +#include Tracking_loop_filter::Tracking_loop_filter(float update_interval, @@ -52,6 +52,7 @@ Tracking_loop_filter::Tracking_loop_filter(float update_interval, update_coefficients(); } + Tracking_loop_filter::Tracking_loop_filter() : d_loop_order(2), d_current_index(0), @@ -64,10 +65,9 @@ Tracking_loop_filter::Tracking_loop_filter() update_coefficients(); } -Tracking_loop_filter::~Tracking_loop_filter() -{ - // Don't need to do anything here -} + +Tracking_loop_filter::~Tracking_loop_filter() = default; + float Tracking_loop_filter::apply(float current_input) { @@ -108,6 +108,7 @@ float Tracking_loop_filter::apply(float current_input) return result; } + void Tracking_loop_filter::update_coefficients(void) { // Analog gains: @@ -216,17 +217,20 @@ void Tracking_loop_filter::update_coefficients(void) }; } + void Tracking_loop_filter::set_noise_bandwidth(float noise_bandwidth) { d_noise_bandwidth = noise_bandwidth; update_coefficients(); } + float Tracking_loop_filter::get_noise_bandwidth(void) const { return d_noise_bandwidth; } + void Tracking_loop_filter::set_update_interval(float update_interval) { d_update_interval = update_interval; @@ -238,17 +242,20 @@ float Tracking_loop_filter::get_update_interval(void) const return d_update_interval; } + void Tracking_loop_filter::set_include_last_integrator(bool include_last_integrator) { d_include_last_integrator = include_last_integrator; update_coefficients(); } + bool Tracking_loop_filter::get_include_last_integrator(void) const { return d_include_last_integrator; } + void Tracking_loop_filter::set_order(int loop_order) { if (loop_order < 1 or loop_order > MAX_LOOP_ORDER) @@ -264,11 +271,13 @@ void Tracking_loop_filter::set_order(int loop_order) update_coefficients(); } + int Tracking_loop_filter::get_order(void) const { return d_loop_order; } + void Tracking_loop_filter::initialize(float initial_output) { d_inputs.assign(MAX_LOOP_HISTORY_LENGTH, 0.0); diff --git a/src/core/interfaces/acquisition_interface.h b/src/core/interfaces/acquisition_interface.h index d76e79bfc..794748175 100644 --- a/src/core/interfaces/acquisition_interface.h +++ b/src/core/interfaces/acquisition_interface.h @@ -65,6 +65,7 @@ public: virtual signed int mag() = 0; virtual void reset() = 0; virtual void stop_acquisition() = 0; + virtual void set_resampler_latency(uint32_t latency_samples) = 0; }; #endif /* GNSS_SDR_ACQUISITION_INTERFACE */ diff --git a/src/core/interfaces/channel_interface.h b/src/core/interfaces/channel_interface.h index db449941c..d4f97aea5 100644 --- a/src/core/interfaces/channel_interface.h +++ b/src/core/interfaces/channel_interface.h @@ -51,6 +51,10 @@ class ChannelInterface : public GNSSBlockInterface { public: + virtual gr::basic_block_sptr get_left_block_trk() = 0; + virtual gr::basic_block_sptr get_left_block_acq() = 0; + virtual gr::basic_block_sptr get_left_block() = 0; + virtual gr::basic_block_sptr get_right_block() = 0; virtual Gnss_Signal get_signal() const = 0; virtual void start_acquisition() = 0; virtual void stop_channel() = 0; diff --git a/src/core/interfaces/configuration_interface.h b/src/core/interfaces/configuration_interface.h index 48e6eefa1..0108f3283 100644 --- a/src/core/interfaces/configuration_interface.h +++ b/src/core/interfaces/configuration_interface.h @@ -35,6 +35,7 @@ #ifndef GNSS_SDR_CONFIGURATION_INTERFACE_H_ #define GNSS_SDR_CONFIGURATION_INTERFACE_H_ +#include #include /*! @@ -51,13 +52,15 @@ class ConfigurationInterface { public: - virtual ~ConfigurationInterface() {} + virtual ~ConfigurationInterface() = default; virtual std::string property(std::string property_name, std::string default_value) = 0; virtual bool property(std::string property_name, bool default_value) = 0; - virtual long property(std::string property_name, long default_value) = 0; - virtual int property(std::string property_name, int default_value) = 0; - virtual unsigned int property(std::string property_name, unsigned int default_value) = 0; - virtual unsigned short property(std::string property_name, unsigned short default_value) = 0; + virtual int64_t property(std::string property_name, int64_t default_value) = 0; + virtual uint64_t property(std::string property_name, uint64_t default_value) = 0; + virtual int32_t property(std::string property_name, int32_t default_value) = 0; + virtual uint32_t property(std::string property_name, uint32_t default_value) = 0; + virtual int16_t property(std::string property_name, int16_t default_value) = 0; + virtual uint16_t property(std::string property_name, uint16_t default_value) = 0; virtual float property(std::string property_name, float default_value) = 0; virtual double property(std::string property_name, double default_value) = 0; virtual void set_property(std::string property_name, std::string value) = 0; diff --git a/src/core/interfaces/gnss_block_interface.h b/src/core/interfaces/gnss_block_interface.h index a861d87f8..8a59d14cb 100644 --- a/src/core/interfaces/gnss_block_interface.h +++ b/src/core/interfaces/gnss_block_interface.h @@ -53,7 +53,7 @@ class GNSSBlockInterface { public: - virtual ~GNSSBlockInterface() {} + virtual ~GNSSBlockInterface() = default; virtual std::string role() = 0; virtual std::string implementation() = 0; virtual size_t item_size() = 0; diff --git a/src/core/interfaces/pvt_interface.h b/src/core/interfaces/pvt_interface.h index afabfa590..20b3df8e4 100644 --- a/src/core/interfaces/pvt_interface.h +++ b/src/core/interfaces/pvt_interface.h @@ -37,11 +37,11 @@ #ifndef GNSS_SDR_PVT_INTERFACE_H_ #define GNSS_SDR_PVT_INTERFACE_H_ -#include "gnss_block_interface.h" -#include "gps_ephemeris.h" -#include "galileo_ephemeris.h" -#include "gps_almanac.h" #include "galileo_almanac.h" +#include "galileo_ephemeris.h" +#include "gnss_block_interface.h" +#include "gps_almanac.h" +#include "gps_ephemeris.h" /*! * \brief This class represents an interface to a PVT block. diff --git a/src/core/libs/INIReader.cc b/src/core/libs/INIReader.cc index 1a8a63815..9ca9dd039 100644 --- a/src/core/libs/INIReader.cc +++ b/src/core/libs/INIReader.cc @@ -49,9 +49,10 @@ #include "ini.h" #include // for tolower #include // for stro +#include -INIReader::INIReader(std::string filename) +INIReader::INIReader(const std::string& filename) { _error = ini_parse(filename.c_str(), ValueHandler, this); } @@ -63,30 +64,30 @@ int INIReader::ParseError() } -std::string INIReader::Get(std::string section, std::string name, std::string default_value) +std::string INIReader::Get(const std::string& section, const std::string& name, std::string default_value) { std::string key = MakeKey(section, name); return _values.count(key) ? _values[key] : default_value; } -long INIReader::GetInteger(std::string section, std::string name, long default_value) +int64_t INIReader::GetInteger(const std::string& section, const std::string& name, int64_t default_value) { std::string valstr = Get(section, name, ""); const char* value = valstr.c_str(); char* end; // This parses "1234" (decimal) and also "0x4D2" (hex) - long n = strtol(value, &end, 0); + int64_t n = strtol(value, &end, 0); return end > value ? n : default_value; } -std::string INIReader::MakeKey(std::string section, std::string name) +std::string INIReader::MakeKey(const std::string& section, const std::string& name) { std::string key = section + "." + name; // Convert to lower case to make lookups case-insensitive - for (unsigned int i = 0; i < key.length(); i++) - key[i] = tolower(key[i]); + for (char& i : key) + i = tolower(i); return key; } @@ -94,7 +95,7 @@ std::string INIReader::MakeKey(std::string section, std::string name) int INIReader::ValueHandler(void* user, const char* section, const char* name, const char* value) { - INIReader* reader = static_cast(user); + auto* reader = static_cast(user); reader->_values[MakeKey(section, name)] = value; return 1; } diff --git a/src/core/libs/INIReader.h b/src/core/libs/INIReader.h index 3e70d819e..bfe168bd9 100644 --- a/src/core/libs/INIReader.h +++ b/src/core/libs/INIReader.h @@ -48,6 +48,7 @@ #ifndef __INIREADER_H__ #define __INIREADER_H__ +#include #include #include @@ -59,22 +60,22 @@ class INIReader { public: //! Construct INIReader and parse given filename. See ini.h for more info about the parsing. - INIReader(std::string filename); + INIReader(const std::string& filename); //! Return the result of ini_parse(), i.e., 0 on success, line number of first error on parse error, or -1 on file open error. int ParseError(); //! Get a string value from INI file, returning default_value if not found. - std::string Get(std::string section, std::string name, + std::string Get(const std::string& section, const std::string& name, std::string default_value); //! Get an integer (long) value from INI file, returning default_value if not found. - long GetInteger(std::string section, std::string name, long default_value); + int64_t GetInteger(const std::string& section, const std::string& name, int64_t default_value); private: int _error; std::map _values; - static std::string MakeKey(std::string section, std::string name); + static std::string MakeKey(const std::string& section, const std::string& name); static int ValueHandler(void* user, const char* section, const char* name, const char* value); }; diff --git a/src/core/libs/gnss_sdr_supl_client.cc b/src/core/libs/gnss_sdr_supl_client.cc index f3774379d..0311892bd 100644 --- a/src/core/libs/gnss_sdr_supl_client.cc +++ b/src/core/libs/gnss_sdr_supl_client.cc @@ -49,7 +49,7 @@ gnss_sdr_supl_client::gnss_sdr_supl_client() } -gnss_sdr_supl_client::~gnss_sdr_supl_client() {} +gnss_sdr_supl_client::~gnss_sdr_supl_client() = default; void gnss_sdr_supl_client::print_assistance() @@ -220,12 +220,12 @@ void gnss_sdr_supl_client::read_supl_data() { gps_utc.d_A0 = static_cast(assist.utc.a0) * pow(2.0, -30); gps_utc.d_A1 = static_cast(assist.utc.a1) * pow(2.0, -50); - gps_utc.d_DeltaT_LS = static_cast(assist.utc.delta_tls); - gps_utc.d_DeltaT_LSF = static_cast(assist.utc.delta_tlsf); - gps_utc.d_t_OT = static_cast(assist.utc.tot) * pow(2.0, 12); - gps_utc.i_DN = static_cast(assist.utc.dn); - gps_utc.i_WN_T = static_cast(assist.utc.wnt); - gps_utc.i_WN_LSF = static_cast(assist.utc.wnlsf); + gps_utc.d_DeltaT_LS = static_cast(assist.utc.delta_tls); + gps_utc.d_DeltaT_LSF = static_cast(assist.utc.delta_tlsf); + gps_utc.d_t_OT = static_cast(assist.utc.tot) * pow(2.0, 12); + gps_utc.i_DN = static_cast(assist.utc.dn); + gps_utc.i_WN_T = static_cast(assist.utc.wnt); + gps_utc.i_WN_LSF = static_cast(assist.utc.wnlsf); gps_utc.valid = true; } @@ -268,7 +268,7 @@ void gnss_sdr_supl_client::read_supl_data() gps_almanac_iterator->second.d_OMEGA0 = static_cast(a->OMEGA_0) * pow(2.0, -23); gps_almanac_iterator->second.d_sqrt_A = static_cast(a->A_sqrt) * pow(2.0, -11); gps_almanac_iterator->second.d_OMEGA_DOT = static_cast(a->OMEGA_dot) * pow(2.0, -38); - gps_almanac_iterator->second.i_Toa = static_cast(a->toa) * pow(2.0, 12); + gps_almanac_iterator->second.i_Toa = static_cast(a->toa * pow(2.0, 12)); gps_almanac_iterator->second.d_e_eccentricity = static_cast(a->e) * pow(2.0, -21); gps_almanac_iterator->second.d_M_0 = static_cast(a->M0) * pow(2.0, -23); } @@ -369,7 +369,7 @@ void gnss_sdr_supl_client::read_supl_data() } -bool gnss_sdr_supl_client::load_ephemeris_xml(const std::string file_name) +bool gnss_sdr_supl_client::load_ephemeris_xml(const std::string& file_name) { std::ifstream ifs; try @@ -389,7 +389,7 @@ bool gnss_sdr_supl_client::load_ephemeris_xml(const std::string file_name) } -bool gnss_sdr_supl_client::save_ephemeris_map_xml(const std::string file_name, std::map eph_map) +bool gnss_sdr_supl_client::save_ephemeris_map_xml(const std::string& file_name, std::map eph_map) { if (eph_map.empty() == false) { @@ -416,7 +416,7 @@ bool gnss_sdr_supl_client::save_ephemeris_map_xml(const std::string file_name, s } -bool gnss_sdr_supl_client::load_gal_ephemeris_xml(const std::string file_name) +bool gnss_sdr_supl_client::load_gal_ephemeris_xml(const std::string& file_name) { std::ifstream ifs; try @@ -436,7 +436,7 @@ bool gnss_sdr_supl_client::load_gal_ephemeris_xml(const std::string file_name) } -bool save_gal_ephemeris_map_xml(const std::string file_name, std::map eph_map) +bool save_gal_ephemeris_map_xml(const std::string& file_name, std::map eph_map) { if (eph_map.empty() == false) { @@ -463,7 +463,7 @@ bool save_gal_ephemeris_map_xml(const std::string file_name, std::map eph_map) +bool save_cnav_ephemeris_map_xml(const std::string& file_name, std::map eph_map) { if (eph_map.empty() == false) { @@ -510,7 +510,7 @@ bool save_cnav_ephemeris_map_xml(const std::string file_name, std::map eph_map) +bool save_gnav_ephemeris_map_xml(const std::string& file_name, std::map eph_map) { if (eph_map.empty() == false) { @@ -557,7 +557,7 @@ bool save_gnav_ephemeris_map_xml(const std::string file_name, std::map gps_almanac_map) +bool gnss_sdr_supl_client::save_gps_almanac_xml(const std::string& file_name, std::map gps_almanac_map) { if (gps_almanac_map.empty() == false) { @@ -834,7 +834,7 @@ bool gnss_sdr_supl_client::save_gps_almanac_xml(const std::string file_name, std } -bool gnss_sdr_supl_client::load_gal_almanac_xml(const std::string file_name) +bool gnss_sdr_supl_client::load_gal_almanac_xml(const std::string& file_name) { std::ifstream ifs; try @@ -854,7 +854,7 @@ bool gnss_sdr_supl_client::load_gal_almanac_xml(const std::string file_name) } -bool gnss_sdr_supl_client::read_gal_almanac_from_gsa(const std::string file_name) +bool gnss_sdr_supl_client::read_gal_almanac_from_gsa(const std::string& file_name) { pugi::xml_document doc; pugi::xml_parse_result result = doc.load_file(file_name.c_str()); @@ -904,7 +904,7 @@ bool gnss_sdr_supl_client::read_gal_almanac_from_gsa(const std::string file_name } -bool gnss_sdr_supl_client::save_gal_almanac_xml(const std::string file_name, std::map gal_almanac_map) +bool gnss_sdr_supl_client::save_gal_almanac_xml(const std::string& file_name, std::map gal_almanac_map) { if (gal_almanac_map.empty() == false) { @@ -931,7 +931,7 @@ bool gnss_sdr_supl_client::save_gal_almanac_xml(const std::string file_name, std } -bool gnss_sdr_supl_client::load_glo_utc_xml(const std::string file_name) +bool gnss_sdr_supl_client::load_glo_utc_xml(const std::string& file_name) { std::ifstream ifs; try @@ -950,7 +950,7 @@ bool gnss_sdr_supl_client::load_glo_utc_xml(const std::string file_name) } -bool gnss_sdr_supl_client::save_glo_utc_xml(const std::string file_name, Glonass_Gnav_Utc_Model& utc) +bool gnss_sdr_supl_client::save_glo_utc_xml(const std::string& file_name, Glonass_Gnav_Utc_Model& utc) { if (utc.valid) { @@ -977,7 +977,7 @@ bool gnss_sdr_supl_client::save_glo_utc_xml(const std::string file_name, Glonass } -bool gnss_sdr_supl_client::load_ref_time_xml(const std::string file_name) +bool gnss_sdr_supl_client::load_ref_time_xml(const std::string& file_name) { std::ifstream ifs; try @@ -996,7 +996,7 @@ bool gnss_sdr_supl_client::load_ref_time_xml(const std::string file_name) } -bool gnss_sdr_supl_client::save_ref_time_xml(const std::string file_name, Agnss_Ref_Time& ref_time) +bool gnss_sdr_supl_client::save_ref_time_xml(const std::string& file_name, Agnss_Ref_Time& ref_time) { if (ref_time.valid == true) { @@ -1023,7 +1023,7 @@ bool gnss_sdr_supl_client::save_ref_time_xml(const std::string file_name, Agnss_ } -bool gnss_sdr_supl_client::load_ref_location_xml(const std::string file_name) +bool gnss_sdr_supl_client::load_ref_location_xml(const std::string& file_name) { std::ifstream ifs; try @@ -1042,7 +1042,7 @@ bool gnss_sdr_supl_client::load_ref_location_xml(const std::string file_name) } -bool gnss_sdr_supl_client::save_ref_location_xml(const std::string file_name, Agnss_Ref_Location& ref_location) +bool gnss_sdr_supl_client::save_ref_location_xml(const std::string& file_name, Agnss_Ref_Location& ref_location) { if (ref_location.valid == true) { diff --git a/src/core/libs/gnss_sdr_supl_client.h b/src/core/libs/gnss_sdr_supl_client.h index 2fd599bdf..281d2a82d 100644 --- a/src/core/libs/gnss_sdr_supl_client.h +++ b/src/core/libs/gnss_sdr_supl_client.h @@ -38,24 +38,24 @@ extern "C" { #include "supl.h" } +#include "GPS_L1_CA.h" #include "agnss_ref_location.h" #include "agnss_ref_time.h" -#include "GPS_L1_CA.h" -#include "gps_ephemeris.h" -#include "gps_iono.h" -#include "gps_almanac.h" -#include "gps_utc_model.h" -#include "gps_cnav_utc_model.h" -#include "gps_acq_assist.h" -#include "gps_cnav_ephemeris.h" -#include "galileo_ephemeris.h" -#include "galileo_utc_model.h" -#include "galileo_iono.h" #include "galileo_almanac.h" +#include "galileo_ephemeris.h" +#include "galileo_iono.h" +#include "galileo_utc_model.h" #include "glonass_gnav_ephemeris.h" #include "glonass_gnav_utc_model.h" -#include +#include "gps_acq_assist.h" +#include "gps_almanac.h" +#include "gps_cnav_ephemeris.h" +#include "gps_cnav_utc_model.h" +#include "gps_ephemeris.h" +#include "gps_iono.h" +#include "gps_utc_model.h" #include +#include #include #include #include @@ -74,10 +74,10 @@ private: int lac; int ci; // assistance protocol structure - supl_ctx_t ctx; + supl_ctx_t ctx{}; // assistance data - supl_assist_t assist; - bool read_gal_almanac_from_gsa(const std::string file_name); + supl_assist_t assist{}; + bool read_gal_almanac_from_gsa(const std::string& file_name); public: // SUPL SERVER INFO @@ -127,18 +127,18 @@ public: /*! * \brief Read GPS NAV ephemeris map from XML file */ - bool load_ephemeris_xml(const std::string file_name); + bool load_ephemeris_xml(const std::string& file_name); /*! * \brief Save ephemeris map to XML file. */ - bool save_ephemeris_map_xml(const std::string file_name, + bool save_ephemeris_map_xml(const std::string& file_name, std::map eph_map); /*! * \brief Read GPS CNAV ephemeris map from XML file */ - bool load_cnav_ephemeris_xml(const std::string file_name); + bool load_cnav_ephemeris_xml(const std::string& file_name); /*! * \brief Save GPS CNAV ephemeris map to XML file. @@ -149,7 +149,7 @@ public: /*! * \brief Read Galileo ephemeris map from XML file */ - bool load_gal_ephemeris_xml(const std::string file_name); + bool load_gal_ephemeris_xml(const std::string& file_name); /*! * \brief Save Galileo ephemeris map to XML file. @@ -160,7 +160,7 @@ public: /*! * \brief Read GLONASS GNAV ephemeris map from XML file */ - bool load_gnav_ephemeris_xml(const std::string file_name); + bool load_gnav_ephemeris_xml(const std::string& file_name); /*! * \brief Save GLONASS GNAV ephemeris map to XML file. @@ -171,103 +171,103 @@ public: /*! * \brief Read GPS utc model from XML file */ - bool load_utc_xml(const std::string file_name); + bool load_utc_xml(const std::string& file_name); /*! * \brief Save UTC model map to XML file */ - bool save_utc_xml(const std::string file_name, Gps_Utc_Model& utc); + bool save_utc_xml(const std::string& file_name, Gps_Utc_Model& utc); /*! * \brief Read CNAV GPS utc model from XML file */ - bool load_cnav_utc_xml(const std::string file_name); + bool load_cnav_utc_xml(const std::string& file_name); /*! * \brief Save CNAV UTC model map to XML file */ - bool save_cnav_utc_xml(const std::string file_name, Gps_CNAV_Utc_Model& utc); + bool save_cnav_utc_xml(const std::string& file_name, Gps_CNAV_Utc_Model& utc); /*! * \brief Read Galileo utc model from XML file */ - bool load_gal_utc_xml(const std::string file_name); + bool load_gal_utc_xml(const std::string& file_name); /*! * \brief Save Galileo UTC model map to XML file */ - bool save_gal_utc_xml(const std::string file_name, Galileo_Utc_Model& utc); + bool save_gal_utc_xml(const std::string& file_name, Galileo_Utc_Model& utc); /*! * \brief Read Galileo almanac map from XML file */ - bool load_gal_almanac_xml(const std::string file_name); + bool load_gal_almanac_xml(const std::string& file_name); /*! * \brief Save Galileo almanac map to XML file */ - bool save_gal_almanac_xml(const std::string file_name, std::map gal_almanac); + bool save_gal_almanac_xml(const std::string& file_name, std::map gal_almanac); /*! * \brief Read GPS almanac map from XML file */ - bool load_gps_almanac_xml(const std::string file_name); + bool load_gps_almanac_xml(const std::string& file_name); /*! * \brief Save GPS almanac map to XML file */ - bool save_gps_almanac_xml(const std::string file_name, std::map gps_almanac_map); + bool save_gps_almanac_xml(const std::string& file_name, std::map gps_almanac_map); /*! * \brief Read iono from XML file */ - bool load_iono_xml(const std::string file_name); + bool load_iono_xml(const std::string& file_name); /*! * \brief Save iono map to XML file */ - bool save_iono_xml(const std::string file_name, Gps_Iono& iono); + bool save_iono_xml(const std::string& file_name, Gps_Iono& iono); /*! * \brief Read Galileo iono from XML file */ - bool load_gal_iono_xml(const std::string file_name); + bool load_gal_iono_xml(const std::string& file_name); /*! * \brief Save Galileo iono map to XML file */ - bool save_gal_iono_xml(const std::string file_name, Galileo_Iono& iono); + bool save_gal_iono_xml(const std::string& file_name, Galileo_Iono& iono); /*! * \brief Read Glonass utc model from XML file */ - bool load_glo_utc_xml(const std::string file_name); + bool load_glo_utc_xml(const std::string& file_name); /*! * \brief Save Glonass UTC model map to XML file */ - bool save_glo_utc_xml(const std::string file_name, Glonass_Gnav_Utc_Model& utc); + bool save_glo_utc_xml(const std::string& file_name, Glonass_Gnav_Utc_Model& utc); /*! * \brief Read ref time from XML file */ - bool load_ref_time_xml(const std::string file_name); + bool load_ref_time_xml(const std::string& file_name); /*! * \brief Save ref time map to XML file */ - bool save_ref_time_xml(const std::string file_name, + bool save_ref_time_xml(const std::string& file_name, Agnss_Ref_Time& ref_time_map); /*! * \brief Read ref location from XML file */ - bool load_ref_location_xml(const std::string file_name); + bool load_ref_location_xml(const std::string& file_name); /*! * \brief Save ref location map to XML file */ - bool save_ref_location_xml(std::string file_name, + bool save_ref_location_xml(const std::string& file_name, Agnss_Ref_Location& ref_location); /* diff --git a/src/core/libs/string_converter.cc b/src/core/libs/string_converter.cc index 15360400d..ab84dab07 100644 --- a/src/core/libs/string_converter.cc +++ b/src/core/libs/string_converter.cc @@ -34,46 +34,60 @@ #include -StringConverter::StringConverter() {} +StringConverter::StringConverter() = default; + + +StringConverter::~StringConverter() = default; -StringConverter::~StringConverter() {} bool StringConverter::convert(const std::string& value, bool default_value) { - if (value.compare("true") == 0) + if (value == "true") { return true; } - else if (value.compare("false") == 0) + if (value == "false") { return false; } - else - { - return default_value; - } + + return default_value; } -long StringConverter::convert(const std::string& value, long default_value) +int64_t StringConverter::convert(const std::string& value, int64_t default_value) { std::stringstream stream(value); - long result; + int64_t result; stream >> result; if (stream.fail()) { return default_value; } - else - { - return result; - } + + return result; } -int StringConverter::convert(const std::string& value, int default_value) +uint64_t StringConverter::convert(const std::string& value, uint64_t default_value) +{ + std::stringstream stream(value); + + uint64_t result; + stream >> result; + + if (stream.fail()) + { + return default_value; + } + + return result; +} + + +int32_t StringConverter::convert(const std::string& value, int32_t default_value) { std::stringstream stream(value); @@ -84,46 +98,56 @@ int StringConverter::convert(const std::string& value, int default_value) { return default_value; } - else - { - return result; - } + + return result; } -unsigned int StringConverter::convert(const std::string& value, unsigned int default_value) +uint32_t StringConverter::convert(const std::string& value, uint32_t default_value) { std::stringstream stream(value); - unsigned int result; + uint32_t result; stream >> result; if (stream.fail()) { return default_value; } - else - { - return result; - } + + return result; } -unsigned short StringConverter::convert(const std::string& value, unsigned short default_value) +uint16_t StringConverter::convert(const std::string& value, uint16_t default_value) { std::stringstream stream(value); - unsigned short result; + uint16_t result; stream >> result; if (stream.fail()) { return default_value; } - else + + return result; +} + + +int16_t StringConverter::convert(const std::string& value, int16_t default_value) +{ + std::stringstream stream(value); + + int16_t result; + stream >> result; + + if (stream.fail()) { - return result; + return default_value; } + + return result; } @@ -138,10 +162,8 @@ float StringConverter::convert(const std::string& value, float default_value) { return default_value; } - else - { - return result; - } + + return result; } @@ -156,8 +178,6 @@ double StringConverter::convert(const std::string& value, double default_value) { return default_value; } - else - { - return result; - } + + return result; } diff --git a/src/core/libs/string_converter.h b/src/core/libs/string_converter.h index c1a480a78..1514db265 100644 --- a/src/core/libs/string_converter.h +++ b/src/core/libs/string_converter.h @@ -33,6 +33,7 @@ #ifndef GNSS_SDR_STRING_CONVERTER_H_ #define GNSS_SDR_STRING_CONVERTER_H_ +#include #include /*! @@ -46,10 +47,12 @@ public: virtual ~StringConverter(); bool convert(const std::string& value, bool default_value); - long convert(const std::string& value, long default_value); - int convert(const std::string& value, int default_value); - unsigned int convert(const std::string& value, unsigned int default_value); - unsigned short convert(const std::string& value, unsigned short default_value); + int64_t convert(const std::string& value, int64_t default_value); + uint64_t convert(const std::string& value, uint64_t default_value); + int32_t convert(const std::string& value, int32_t default_value); + uint32_t convert(const std::string& value, uint32_t default_value); + int16_t convert(const std::string& value, int16_t default_value); + uint16_t convert(const std::string& value, uint16_t default_value); float convert(const std::string& value, float default_value); double convert(const std::string& value, double default_value); }; diff --git a/src/core/libs/supl/asn-rrlp/OCTET_STRING.c b/src/core/libs/supl/asn-rrlp/OCTET_STRING.c index 584def8b4..bd2d1d845 100644 --- a/src/core/libs/supl/asn-rrlp/OCTET_STRING.c +++ b/src/core/libs/supl/asn-rrlp/OCTET_STRING.c @@ -52,9 +52,9 @@ asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { #undef NEXT_PHASE #undef PREV_PHASE #define _CH_PHASE(ctx, inc) do { \ - if(ctx->phase == 0) \ - ctx->context = 0; \ - ctx->phase += inc; \ + if((ctx)->phase == 0) \ + (ctx)->context = 0; \ + (ctx)->phase += (inc); \ } while(0) #define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) #define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) diff --git a/src/core/libs/supl/asn-rrlp/ber_decoder.c b/src/core/libs/supl/asn-rrlp/ber_decoder.c index 601f66c0b..77cb8032e 100644 --- a/src/core/libs/supl/asn-rrlp/ber_decoder.c +++ b/src/core/libs/supl/asn-rrlp/ber_decoder.c @@ -16,7 +16,7 @@ asn_dec_rval_t rval; \ rval.code = _code; \ if(opt_ctx) opt_ctx->step = step; /* Save context */ \ - if(_code == RC_OK || opt_ctx) \ + if((_code) == RC_OK || opt_ctx) \ rval.consumed = consumed_myself; \ else \ rval.consumed = 0; /* Context-free */ \ diff --git a/src/core/libs/supl/asn-rrlp/constr_CHOICE.c b/src/core/libs/supl/asn-rrlp/constr_CHOICE.c index a9eb71941..75903fde7 100644 --- a/src/core/libs/supl/asn-rrlp/constr_CHOICE.c +++ b/src/core/libs/supl/asn-rrlp/constr_CHOICE.c @@ -46,8 +46,8 @@ */ #undef NEXT_PHASE #define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ + (ctx)->phase++; \ + (ctx)->step = 0; \ } while(0) /* diff --git a/src/core/libs/supl/asn-rrlp/constr_SEQUENCE.c b/src/core/libs/supl/asn-rrlp/constr_SEQUENCE.c index db3c92581..aba19bd26 100644 --- a/src/core/libs/supl/asn-rrlp/constr_SEQUENCE.c +++ b/src/core/libs/supl/asn-rrlp/constr_SEQUENCE.c @@ -47,10 +47,10 @@ #undef NEXT_PHASE #undef PHASE_OUT #define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ + (ctx)->phase++; \ + (ctx)->step = 0; \ } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) +#define PHASE_OUT(ctx) do { (ctx)->phase = 10; } while(0) /* * Return a standardized complex structure. diff --git a/src/core/libs/supl/asn-rrlp/constr_SET_OF.c b/src/core/libs/supl/asn-rrlp/constr_SET_OF.c index 0bc891abf..8b9c0669a 100644 --- a/src/core/libs/supl/asn-rrlp/constr_SET_OF.c +++ b/src/core/libs/supl/asn-rrlp/constr_SET_OF.c @@ -47,10 +47,10 @@ #undef NEXT_PHASE #undef PHASE_OUT #define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ + (ctx)->phase++; \ + (ctx)->step = 0; \ } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) +#define PHASE_OUT(ctx) do { (ctx)->phase = 10; } while(0) /* * Return a standardized complex structure. diff --git a/src/core/libs/supl/asn-rrlp/converter-sample.c b/src/core/libs/supl/asn-rrlp/converter-sample.c index 13baad2e7..46136ebb3 100644 --- a/src/core/libs/supl/asn-rrlp/converter-sample.c +++ b/src/core/libs/supl/asn-rrlp/converter-sample.c @@ -774,11 +774,11 @@ static int write_out(const void *buffer, size_t size, void *key) { } static int argument_is_stdin(char *av[], int idx) { - if(strcmp(av[idx], "-")) { + if(strcmp(av[idx], "-") != 0) { return 0; /* Certainly not */ } else { /* This might be , unless `./program -- -` */ - if(strcmp(av[-1], "--")) + if(strcmp(av[-1], "--") != 0) return 1; else return 0; @@ -788,7 +788,7 @@ static int argument_is_stdin(char *av[], int idx) { static FILE *argument_to_file(char *av[], int idx) { return argument_is_stdin(av, idx) ? stdin - : fopen(av[idx], "r"); + : fopen(av[idx], "re"); } static char *argument_to_name(char *av[], int idx) { diff --git a/src/core/libs/supl/asn-rrlp/per_encoder.c b/src/core/libs/supl/asn-rrlp/per_encoder.c index f4bace060..8cf95347d 100644 --- a/src/core/libs/supl/asn-rrlp/per_encoder.c +++ b/src/core/libs/supl/asn-rrlp/per_encoder.c @@ -2,7 +2,7 @@ #include #include -static asn_enc_rval_t uper_encode_internal(asn_TYPE_descriptor_t *td, asn_per_constraints_t *, void *sptr, asn_app_consume_bytes_f *cb, void *app_key); +static asn_enc_rval_t uper_encode_internal(asn_TYPE_descriptor_t *td, asn_per_constraints_t * /*constraints*/, void *sptr, asn_app_consume_bytes_f *cb, void *app_key); asn_enc_rval_t uper_encode(asn_TYPE_descriptor_t *td, void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { diff --git a/src/core/libs/supl/asn-rrlp/per_opentype.c b/src/core/libs/supl/asn-rrlp/per_opentype.c index c81caed44..32152e132 100644 --- a/src/core/libs/supl/asn-rrlp/per_opentype.c +++ b/src/core/libs/supl/asn-rrlp/per_opentype.c @@ -17,7 +17,7 @@ typedef struct uper_ugot_key static int uper_ugot_refill(asn_per_data_t *pd); static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); -static asn_dec_rval_t uper_sot_suck(asn_codec_ctx_t *, asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd); +static asn_dec_rval_t uper_sot_suck(asn_codec_ctx_t * /*ctx*/, asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd); int asn_debug_indent; diff --git a/src/core/libs/supl/asn-rrlp/xer_decoder.c b/src/core/libs/supl/asn-rrlp/xer_decoder.c index 161dc78ce..ef5f06481 100644 --- a/src/core/libs/supl/asn-rrlp/xer_decoder.c +++ b/src/core/libs/supl/asn-rrlp/xer_decoder.c @@ -181,12 +181,12 @@ xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { #define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ ssize_t converted_size = body_receiver \ (struct_key, chunk_buf, chunk_size, \ - (size_t)chunk_size < size); \ + (size_t)(chunk_size) < (size)); \ if(converted_size == -1) RETURN(RC_FAIL); \ if(converted_size == 0 \ - && size == (size_t)chunk_size) \ + && (size) == (size_t)(chunk_size)) \ RETURN(RC_WMORE); \ - chunk_size = converted_size; \ + (chunk_size) = converted_size; \ } while(0) #define XER_GOT_EMPTY() do { \ if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ diff --git a/src/core/libs/supl/asn-rrlp/xer_support.c b/src/core/libs/supl/asn-rrlp/xer_support.c index 9e34e6923..cfa30e674 100644 --- a/src/core/libs/supl/asn-rrlp/xer_support.c +++ b/src/core/libs/supl/asn-rrlp/xer_support.c @@ -60,7 +60,7 @@ _charclass[256] = { #define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ int _ret; \ pstate_e ns = _ns; \ - ssize_t _sz = (p - chunk_start) + _current_too; \ + ssize_t _sz = (p - chunk_start) + (_current_too); \ if (!_sz) { \ /* Shortcut */ \ state = _ns; \ @@ -68,11 +68,11 @@ _charclass[256] = { } \ _ret = cb(type, chunk_start, _sz, key); \ if(_ret < _sz) { \ - if(_current_too && _ret == -1) \ + if((_current_too) && _ret == -1) \ state = ns; \ goto finish; \ } \ - chunk_start = p + _current_too; \ + chunk_start = p + (_current_too); \ state = ns; \ } while(0) diff --git a/src/core/libs/supl/asn-supl/GeneralizedTime.c b/src/core/libs/supl/asn-supl/GeneralizedTime.c index 2fd63f262..3007af94e 100644 --- a/src/core/libs/supl/asn-supl/GeneralizedTime.c +++ b/src/core/libs/supl/asn-supl/GeneralizedTime.c @@ -369,7 +369,7 @@ asn_GT2time_frac(const GeneralizedTime_t *st, int *frac_value, int *frac_digits, errno = EINVAL; \ return -1; \ } else { \ - var = var * 10 + (ch - 0x30); \ + (var) = (var) * 10 + (ch - 0x30); \ buf++; \ } \ } while(0) diff --git a/src/core/libs/supl/asn-supl/OCTET_STRING.c b/src/core/libs/supl/asn-supl/OCTET_STRING.c index 584def8b4..bd2d1d845 100644 --- a/src/core/libs/supl/asn-supl/OCTET_STRING.c +++ b/src/core/libs/supl/asn-supl/OCTET_STRING.c @@ -52,9 +52,9 @@ asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { #undef NEXT_PHASE #undef PREV_PHASE #define _CH_PHASE(ctx, inc) do { \ - if(ctx->phase == 0) \ - ctx->context = 0; \ - ctx->phase += inc; \ + if((ctx)->phase == 0) \ + (ctx)->context = 0; \ + (ctx)->phase += (inc); \ } while(0) #define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) #define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) diff --git a/src/core/libs/supl/asn-supl/ber_decoder.c b/src/core/libs/supl/asn-supl/ber_decoder.c index 601f66c0b..77cb8032e 100644 --- a/src/core/libs/supl/asn-supl/ber_decoder.c +++ b/src/core/libs/supl/asn-supl/ber_decoder.c @@ -16,7 +16,7 @@ asn_dec_rval_t rval; \ rval.code = _code; \ if(opt_ctx) opt_ctx->step = step; /* Save context */ \ - if(_code == RC_OK || opt_ctx) \ + if((_code) == RC_OK || opt_ctx) \ rval.consumed = consumed_myself; \ else \ rval.consumed = 0; /* Context-free */ \ diff --git a/src/core/libs/supl/asn-supl/constr_CHOICE.c b/src/core/libs/supl/asn-supl/constr_CHOICE.c index a9eb71941..75903fde7 100644 --- a/src/core/libs/supl/asn-supl/constr_CHOICE.c +++ b/src/core/libs/supl/asn-supl/constr_CHOICE.c @@ -46,8 +46,8 @@ */ #undef NEXT_PHASE #define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ + (ctx)->phase++; \ + (ctx)->step = 0; \ } while(0) /* diff --git a/src/core/libs/supl/asn-supl/constr_SEQUENCE.c b/src/core/libs/supl/asn-supl/constr_SEQUENCE.c index db3c92581..aba19bd26 100644 --- a/src/core/libs/supl/asn-supl/constr_SEQUENCE.c +++ b/src/core/libs/supl/asn-supl/constr_SEQUENCE.c @@ -47,10 +47,10 @@ #undef NEXT_PHASE #undef PHASE_OUT #define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ + (ctx)->phase++; \ + (ctx)->step = 0; \ } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) +#define PHASE_OUT(ctx) do { (ctx)->phase = 10; } while(0) /* * Return a standardized complex structure. diff --git a/src/core/libs/supl/asn-supl/constr_SET_OF.c b/src/core/libs/supl/asn-supl/constr_SET_OF.c index 0bc891abf..8b9c0669a 100644 --- a/src/core/libs/supl/asn-supl/constr_SET_OF.c +++ b/src/core/libs/supl/asn-supl/constr_SET_OF.c @@ -47,10 +47,10 @@ #undef NEXT_PHASE #undef PHASE_OUT #define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ + (ctx)->phase++; \ + (ctx)->step = 0; \ } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) +#define PHASE_OUT(ctx) do { (ctx)->phase = 10; } while(0) /* * Return a standardized complex structure. diff --git a/src/core/libs/supl/asn-supl/per_encoder.c b/src/core/libs/supl/asn-supl/per_encoder.c index f4bace060..8cf95347d 100644 --- a/src/core/libs/supl/asn-supl/per_encoder.c +++ b/src/core/libs/supl/asn-supl/per_encoder.c @@ -2,7 +2,7 @@ #include #include -static asn_enc_rval_t uper_encode_internal(asn_TYPE_descriptor_t *td, asn_per_constraints_t *, void *sptr, asn_app_consume_bytes_f *cb, void *app_key); +static asn_enc_rval_t uper_encode_internal(asn_TYPE_descriptor_t *td, asn_per_constraints_t * /*constraints*/, void *sptr, asn_app_consume_bytes_f *cb, void *app_key); asn_enc_rval_t uper_encode(asn_TYPE_descriptor_t *td, void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { diff --git a/src/core/libs/supl/asn-supl/per_opentype.c b/src/core/libs/supl/asn-supl/per_opentype.c index c81caed44..32152e132 100644 --- a/src/core/libs/supl/asn-supl/per_opentype.c +++ b/src/core/libs/supl/asn-supl/per_opentype.c @@ -17,7 +17,7 @@ typedef struct uper_ugot_key static int uper_ugot_refill(asn_per_data_t *pd); static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); -static asn_dec_rval_t uper_sot_suck(asn_codec_ctx_t *, asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd); +static asn_dec_rval_t uper_sot_suck(asn_codec_ctx_t * /*ctx*/, asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd); int asn_debug_indent; diff --git a/src/core/libs/supl/asn-supl/xer_decoder.c b/src/core/libs/supl/asn-supl/xer_decoder.c index 161dc78ce..ef5f06481 100644 --- a/src/core/libs/supl/asn-supl/xer_decoder.c +++ b/src/core/libs/supl/asn-supl/xer_decoder.c @@ -181,12 +181,12 @@ xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { #define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ ssize_t converted_size = body_receiver \ (struct_key, chunk_buf, chunk_size, \ - (size_t)chunk_size < size); \ + (size_t)(chunk_size) < (size)); \ if(converted_size == -1) RETURN(RC_FAIL); \ if(converted_size == 0 \ - && size == (size_t)chunk_size) \ + && (size) == (size_t)(chunk_size)) \ RETURN(RC_WMORE); \ - chunk_size = converted_size; \ + (chunk_size) = converted_size; \ } while(0) #define XER_GOT_EMPTY() do { \ if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ diff --git a/src/core/libs/supl/asn-supl/xer_support.c b/src/core/libs/supl/asn-supl/xer_support.c index 9e34e6923..cfa30e674 100644 --- a/src/core/libs/supl/asn-supl/xer_support.c +++ b/src/core/libs/supl/asn-supl/xer_support.c @@ -60,7 +60,7 @@ _charclass[256] = { #define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ int _ret; \ pstate_e ns = _ns; \ - ssize_t _sz = (p - chunk_start) + _current_too; \ + ssize_t _sz = (p - chunk_start) + (_current_too); \ if (!_sz) { \ /* Shortcut */ \ state = _ns; \ @@ -68,11 +68,11 @@ _charclass[256] = { } \ _ret = cb(type, chunk_start, _sz, key); \ if(_ret < _sz) { \ - if(_current_too && _ret == -1) \ + if((_current_too) && _ret == -1) \ state = ns; \ goto finish; \ } \ - chunk_start = p + _current_too; \ + chunk_start = p + (_current_too); \ state = ns; \ } while(0) diff --git a/src/core/libs/supl/supl.c b/src/core/libs/supl/supl.c index 021b65327..3722d1af0 100644 --- a/src/core/libs/supl/supl.c +++ b/src/core/libs/supl/supl.c @@ -211,10 +211,10 @@ int EXPORT supl_decode_rrlp(supl_ulp_t *ulp_pdu, PDU_t **ret_rrlp) { ret_rrlp = 0; return E_SUPL_DECODE_RRLP; } - + return E_SUPL_INTERNAL; } - + int EXPORT supl_server_connect(supl_ctx_t *ctx, char *server) { int err; SSL_METHOD *meth; @@ -225,7 +225,7 @@ int EXPORT supl_server_connect(supl_ctx_t *ctx, char *server) { SSL_load_error_strings(); ctx->ssl_ctx = SSL_CTX_new(meth); if (!ctx->ssl_ctx) return E_SUPL_CONNECT; - + ctx->ssl = SSL_new(ctx->ssl_ctx); if (!ctx->ssl) return E_SUPL_CONNECT; @@ -242,13 +242,13 @@ int EXPORT supl_server_connect(supl_ctx_t *ctx, char *server) { { X509 *s_cert = SSL_get_peer_certificate(ctx->ssl); FILE *fp = fopen("/tmp/s_cert.pem", "w"); - if (fp) + if (fp) PEM_write_X509(fp, s_cert); fclose(fp); X509_free(s_cert); } #endif - + return 0; } @@ -315,15 +315,15 @@ static int pdu_make_ulp_start(supl_ctx_t *ctx, supl_ulp_t *pdu) { ulp->message.choice.msSUPLSTART.sETCapabilities.posProtocol.rrlp = 1; if (ctx->p.set & PARAM_GSM_CELL_CURRENT) { - ulp->message.choice.msSUPLSTART.locationId.cellInfo.present = CellInfo_PR_gsmCell; + ulp->message.choice.msSUPLSTART.locationId.cellInfo.present = CellInfo_PR_gsmCell; ulp->message.choice.msSUPLSTART.locationId.cellInfo.choice.gsmCell.refMCC = ctx->p.gsm.mcc; ulp->message.choice.msSUPLSTART.locationId.cellInfo.choice.gsmCell.refMNC = ctx->p.gsm.mnc; ulp->message.choice.msSUPLSTART.locationId.cellInfo.choice.gsmCell.refLAC = ctx->p.gsm.lac; ulp->message.choice.msSUPLSTART.locationId.cellInfo.choice.gsmCell.refCI = ctx->p.gsm.ci; - ulp->message.choice.msSUPLSTART.locationId.cellInfo.choice.gsmCell.nMR = OPTIONAL_MISSING; - ulp->message.choice.msSUPLSTART.locationId.cellInfo.choice.gsmCell.tA = OPTIONAL_MISSING; + ulp->message.choice.msSUPLSTART.locationId.cellInfo.choice.gsmCell.nMR = OPTIONAL_MISSING; + ulp->message.choice.msSUPLSTART.locationId.cellInfo.choice.gsmCell.tA = OPTIONAL_MISSING; } else if (ctx->p.set & PARAM_WCDMA_CELL_CURRENT) { - ulp->message.choice.msSUPLSTART.locationId.cellInfo.present = CellInfo_PR_wcdmaCell; + ulp->message.choice.msSUPLSTART.locationId.cellInfo.present = CellInfo_PR_wcdmaCell; ulp->message.choice.msSUPLSTART.locationId.cellInfo.choice.wcdmaCell.refMCC = ctx->p.wcdma.mcc; ulp->message.choice.msSUPLSTART.locationId.cellInfo.choice.wcdmaCell.refMNC = ctx->p.wcdma.mnc; ulp->message.choice.msSUPLSTART.locationId.cellInfo.choice.wcdmaCell.refUC = ctx->p.wcdma.uc; @@ -447,15 +447,15 @@ static int pdu_make_ulp_pos_init(supl_ctx_t *ctx, supl_ulp_t *pdu) { ulp->message.choice.msSUPLPOSINIT.requestedAssistData = req_adata; if (ctx->p.set & PARAM_GSM_CELL_CURRENT) { - ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.present = CellInfo_PR_gsmCell; + ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.present = CellInfo_PR_gsmCell; ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.choice.gsmCell.refMCC = ctx->p.gsm.mcc; ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.choice.gsmCell.refMNC = ctx->p.gsm.mnc; - ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.choice.gsmCell.refLAC = ctx->p.gsm.lac; - ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.choice.gsmCell.refCI = ctx->p.gsm.ci; - ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.choice.gsmCell.nMR = OPTIONAL_MISSING; - ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.choice.gsmCell.tA = OPTIONAL_MISSING; + ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.choice.gsmCell.refLAC = ctx->p.gsm.lac; + ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.choice.gsmCell.refCI = ctx->p.gsm.ci; + ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.choice.gsmCell.nMR = OPTIONAL_MISSING; + ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.choice.gsmCell.tA = OPTIONAL_MISSING; } else if (ctx->p.set & PARAM_WCDMA_CELL_CURRENT) { - ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.present = CellInfo_PR_wcdmaCell; + ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.present = CellInfo_PR_wcdmaCell; ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.choice.wcdmaCell.refMCC = ctx->p.wcdma.mcc; ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.choice.wcdmaCell.refMNC = ctx->p.wcdma.mnc; ulp->message.choice.msSUPLPOSINIT.locationId.cellInfo.choice.wcdmaCell.refUC = ctx->p.wcdma.uc; @@ -512,7 +512,7 @@ static int pdu_make_ulp_rrlp_ack(supl_ctx_t *ctx, supl_ulp_t *pdu, PDU_t *rrlp) rrlp_ack->referenceNumber = rrlp->referenceNumber; rrlp_ack->component.present = RRLP_Component_PR_assistanceDataAck; - + ret = uper_encode_to_buffer(&asn_DEF_PDU, rrlp_ack, buffer, sizeof(buffer)); asn_DEF_ULP_PDU.free_struct(&asn_DEF_PDU, rrlp_ack, 0); if (ret.encoded == -1) { @@ -524,12 +524,12 @@ static int pdu_make_ulp_rrlp_ack(supl_ctx_t *ctx, supl_ulp_t *pdu, PDU_t *rrlp) ulp = calloc(1, sizeof(ULP_PDU_t)); session_id = calloc(1, sizeof(SetSessionID_t)); - + ulp->length = 0; ulp->version.maj = 1; ulp->version.min = 0; ulp->version.servind = 0; - + session_id->sessionId = 1; // session_id->setId.present = SETId_PR_msisdn; // (void)OCTET_STRING_fromBuf(&session_id->setId.choice.msisdn, ctx->p.msisdn, 8); @@ -594,7 +594,7 @@ int EXPORT supl_collect_rrlp(supl_assist_t *assist, PDU_t *rrlp, struct timeval loc->buf[3]; if (loc->buf[1] & 0x80) l *= -1; lat = 90.0 / (1 << 23) * l; - + l = (loc->buf[4] << 16) | (loc->buf[5] << 8) | loc->buf[6]; @@ -612,7 +612,7 @@ int EXPORT supl_collect_rrlp(supl_assist_t *assist, PDU_t *rrlp, struct timeval assist->pos.uncertainty = l; } } - + if (hdr->acquisAssist) { int n; @@ -825,7 +825,7 @@ int EXPORT supl_get_assist(supl_ctx_t *ctx, char *server, supl_assist_t *assist) supl_response_harvest(ctx, &ulp); supl_ulp_free(&ulp); - + /* ** send SUPL_POS_INIT */ @@ -949,4 +949,3 @@ void EXPORT supl_set_debug(FILE *log, int flags) { if (flags & SUPL_DEBUG_DEBUG) debug.debug = 1; #endif } - diff --git a/src/core/libs/supl/supl.h b/src/core/libs/supl/supl.h index 3761eda24..fc64e1ecd 100644 --- a/src/core/libs/supl/supl.h +++ b/src/core/libs/supl/supl.h @@ -17,7 +17,7 @@ #else #define EXPORT #endif - +// clang-format off #if USE_OPENSSL_FALLBACK #include #include @@ -31,7 +31,7 @@ #include #include #endif - +// clang-format on #include #include diff --git a/src/core/monitor/gnss_synchro_monitor.cc b/src/core/monitor/gnss_synchro_monitor.cc index d788b52b0..4f3918d8a 100644 --- a/src/core/monitor/gnss_synchro_monitor.cc +++ b/src/core/monitor/gnss_synchro_monitor.cc @@ -69,9 +69,7 @@ gnss_synchro_monitor::gnss_synchro_monitor(unsigned int n_channels, } -gnss_synchro_monitor::~gnss_synchro_monitor() -{ -} +gnss_synchro_monitor::~gnss_synchro_monitor() = default; int gnss_synchro_monitor::work(int noutput_items, gr_vector_const_void_star& input_items, diff --git a/src/core/monitor/gnss_synchro_monitor.h b/src/core/monitor/gnss_synchro_monitor.h index 9547bf12d..db991a9ae 100644 --- a/src/core/monitor/gnss_synchro_monitor.h +++ b/src/core/monitor/gnss_synchro_monitor.h @@ -38,8 +38,8 @@ #include "gnss_synchro_udp_sink.h" #include #include -#include #include +#include class gnss_synchro_monitor; diff --git a/src/core/monitor/gnss_synchro_udp_sink.cc b/src/core/monitor/gnss_synchro_udp_sink.cc index 52b53b260..46b2d33c9 100644 --- a/src/core/monitor/gnss_synchro_udp_sink.cc +++ b/src/core/monitor/gnss_synchro_udp_sink.cc @@ -32,10 +32,10 @@ #include "gnss_synchro_udp_sink.h" #include #include -#include #include +#include -Gnss_Synchro_Udp_Sink::Gnss_Synchro_Udp_Sink(std::vector addresses, const unsigned short& port) : socket{io_service} +Gnss_Synchro_Udp_Sink::Gnss_Synchro_Udp_Sink(std::vector addresses, const uint16_t& port) : socket{io_service} { for (auto address : addresses) { diff --git a/src/core/monitor/gnss_synchro_udp_sink.h b/src/core/monitor/gnss_synchro_udp_sink.h index cf3cfc91d..ebfb854a0 100644 --- a/src/core/monitor/gnss_synchro_udp_sink.h +++ b/src/core/monitor/gnss_synchro_udp_sink.h @@ -32,13 +32,13 @@ #ifndef GNSS_SYNCHRO_UDP_SINK_H_ #define GNSS_SYNCHRO_UDP_SINK_H_ -#include #include "gnss_synchro.h" +#include class Gnss_Synchro_Udp_Sink { public: - Gnss_Synchro_Udp_Sink(std::vector addresses, const unsigned short &port); + Gnss_Synchro_Udp_Sink(std::vector addresses, const uint16_t &port); bool write_gnss_synchro(std::vector stocks); private: diff --git a/src/core/receiver/concurrent_map.h b/src/core/receiver/concurrent_map.h index 7df929b82..218030286 100644 --- a/src/core/receiver/concurrent_map.h +++ b/src/core/receiver/concurrent_map.h @@ -94,11 +94,8 @@ public: lock.unlock(); return true; } - else - { - lock.unlock(); - return false; - } + lock.unlock(); + return false; } }; diff --git a/src/core/receiver/control_message_factory.cc b/src/core/receiver/control_message_factory.cc index 2210713c9..d2871d39e 100644 --- a/src/core/receiver/control_message_factory.cc +++ b/src/core/receiver/control_message_factory.cc @@ -35,11 +35,11 @@ using google::LogMessage; // Constructor -ControlMessageFactory::ControlMessageFactory() {} +ControlMessageFactory::ControlMessageFactory() = default; // Destructor -ControlMessageFactory::~ControlMessageFactory() {} +ControlMessageFactory::~ControlMessageFactory() = default; gr::message::sptr ControlMessageFactory::GetQueueMessage(unsigned int who, unsigned int what) @@ -53,7 +53,7 @@ gr::message::sptr ControlMessageFactory::GetQueueMessage(unsigned int who, unsig } -std::shared_ptr>> ControlMessageFactory::GetControlMessages(gr::message::sptr queue_message) +std::shared_ptr>> ControlMessageFactory::GetControlMessages(const gr::message::sptr& queue_message) { std::shared_ptr>> control_messages = std::make_shared>>(); unsigned int control_messages_count = queue_message->length() / sizeof(ControlMessage); diff --git a/src/core/receiver/control_message_factory.h b/src/core/receiver/control_message_factory.h index 53339cea5..3aac015a9 100644 --- a/src/core/receiver/control_message_factory.h +++ b/src/core/receiver/control_message_factory.h @@ -58,7 +58,7 @@ public: virtual ~ControlMessageFactory(); gr::message::sptr GetQueueMessage(unsigned int who, unsigned int what); - std::shared_ptr>> GetControlMessages(gr::message::sptr queue_message); + std::shared_ptr>> GetControlMessages(const gr::message::sptr& queue_message); }; #endif /*GNSS_SDR_CONTROL_MESSAGE_FACTORY_H_*/ diff --git a/src/core/receiver/control_thread.cc b/src/core/receiver/control_thread.cc index fa7001e97..463815bcb 100644 --- a/src/core/receiver/control_thread.cc +++ b/src/core/receiver/control_thread.cc @@ -33,40 +33,41 @@ */ #include "control_thread.h" -#include "concurrent_queue.h" #include "concurrent_map.h" -#include "pvt_interface.h" +#include "concurrent_queue.h" #include "control_message_factory.h" #include "file_configuration.h" -#include "gnss_flowgraph.h" -#include "gnss_sdr_flags.h" +#include "galileo_almanac.h" #include "galileo_ephemeris.h" #include "galileo_iono.h" #include "galileo_utc_model.h" -#include "galileo_almanac.h" +#include "geofunctions.h" +#include "glonass_gnav_ephemeris.h" +#include "glonass_gnav_utc_model.h" +#include "gnss_flowgraph.h" +#include "gnss_sdr_flags.h" +#include "gps_almanac.h" #include "gps_ephemeris.h" #include "gps_iono.h" #include "gps_utc_model.h" -#include "gps_almanac.h" -#include "glonass_gnav_ephemeris.h" -#include "glonass_gnav_utc_model.h" -#include "geofunctions.h" -#include "rtklib_rtkcmn.h" +#include "pvt_interface.h" #include "rtklib_conversions.h" #include "rtklib_ephemeris.h" -#include +#include "rtklib_rtkcmn.h" #include +#include #include #include -#include -#include -#include #include #include #include #include #include #include +#include +#include +#include +#include extern concurrent_map global_gps_acq_assist_map; @@ -166,7 +167,7 @@ void ControlThread::init() else { // fill agnss_ref_time_ - struct tm tm; + struct tm tm = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr}; if (strptime(ref_time_str.c_str(), "%d/%m/%Y %H:%M:%S", &tm) != nullptr) { agnss_ref_time_.d_tv_sec = timegm(&tm); @@ -188,18 +189,20 @@ void ControlThread::init() } -ControlThread::~ControlThread() +ControlThread::~ControlThread() // NOLINT(modernize-use-equals-default) { - // save navigation data to files - // if (save_assistance_to_XML() == true) {} if (msqid != -1) msgctl(msqid, IPC_RMID, NULL); } void ControlThread::telecommand_listener() { - int tcp_cmd_port = configuration_->property("GNSS-SDR.telecontrol_tcp_port", 3333); - cmd_interface_.run_cmd_server(tcp_cmd_port); + bool telecommand_enabled = configuration_->property("GNSS-SDR.telecommand_enabled", false); + if (telecommand_enabled) + { + int tcp_cmd_port = configuration_->property("GNSS-SDR.telecommand_tcp_port", 3333); + cmd_interface_.run_cmd_server(tcp_cmd_port); + } } @@ -291,21 +294,19 @@ int ControlThread::run() { return 42; // signal the gnss-sdr-harness.sh to restart the receiver program } - else - { - return 0; // normal shutdown - } + + return 0; // normal shutdown } -void ControlThread::set_control_queue(gr::msg_queue::sptr control_queue) +void ControlThread::set_control_queue(const gr::msg_queue::sptr &control_queue) { if (flowgraph_->running()) { LOG(WARNING) << "Unable to set control queue while flowgraph is running"; return; } - control_queue_ = control_queue; + control_queue_ = std::move(control_queue); cmd_interface_.set_msg_queue(control_queue_); } @@ -750,7 +751,7 @@ void ControlThread::assist_GNSS() time_t ref_rx_utc_time = 0; if (agnss_ref_time_.valid == true) { - ref_rx_utc_time = agnss_ref_time_.d_tv_sec; + ref_rx_utc_time = static_cast(agnss_ref_time_.d_tv_sec); } std::vector> visible_sats = get_visible_sats(ref_rx_utc_time, ref_LLH); @@ -878,7 +879,7 @@ std::vector> ControlThread::get_visible_sats(time std::vector visible_gps; std::vector visible_gal; std::shared_ptr pvt_ptr = flowgraph_->get_pvt(); - struct tm tstruct; + struct tm tstruct = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr}; char buf[80]; tstruct = *gmtime(&rx_utc_time); strftime(buf, sizeof(buf), "%d/%m/%Y %H:%M:%S ", &tstruct); diff --git a/src/core/receiver/control_thread.h b/src/core/receiver/control_thread.h index bf78028c1..b500e43fa 100644 --- a/src/core/receiver/control_thread.h +++ b/src/core/receiver/control_thread.h @@ -35,19 +35,19 @@ #ifndef GNSS_SDR_CONTROL_THREAD_H_ #define GNSS_SDR_CONTROL_THREAD_H_ -#include "gnss_satellite.h" -#include "control_message_factory.h" -#include "gnss_sdr_supl_client.h" -#include "tcp_cmd_interface.h" -#include "gnss_flowgraph.h" -#include "configuration_interface.h" #include "agnss_ref_location.h" #include "agnss_ref_time.h" +#include "configuration_interface.h" +#include "control_message_factory.h" +#include "gnss_flowgraph.h" +#include "gnss_satellite.h" +#include "gnss_sdr_supl_client.h" +#include "tcp_cmd_interface.h" +#include #include #include #include #include -#include /*! @@ -93,7 +93,7 @@ public: * * \param[in] boost::shared_ptr control_queue */ - void set_control_queue(gr::msg_queue::sptr control_queue); + void set_control_queue(const gr::msg_queue::sptr& control_queue); unsigned int processed_control_messages() diff --git a/src/core/receiver/file_configuration.cc b/src/core/receiver/file_configuration.cc index 43f177502..62992c074 100644 --- a/src/core/receiver/file_configuration.cc +++ b/src/core/receiver/file_configuration.cc @@ -34,8 +34,8 @@ */ #include "file_configuration.h" -#include "in_memory_configuration.h" #include "INIReader.h" +#include "in_memory_configuration.h" #include "string_converter.h" #include #include @@ -45,7 +45,7 @@ using google::LogMessage; FileConfiguration::FileConfiguration(std::string filename) { - filename_ = filename; + filename_ = std::move(filename); init(); } @@ -69,10 +69,7 @@ std::string FileConfiguration::property(std::string property_name, std::string d { return overrided_->property(property_name, default_value); } - else - { - return ini_reader_->Get("GNSS-SDR", property_name, default_value); - } + return ini_reader_->Get("GNSS-SDR", property_name, default_value); } @@ -82,25 +79,30 @@ bool FileConfiguration::property(std::string property_name, bool default_value) { return overrided_->property(property_name, default_value); } - else - { - std::string empty = ""; - return converter_->convert(property(property_name, empty), default_value); - } + std::string empty; + return converter_->convert(property(property_name, empty), default_value); } -long FileConfiguration::property(std::string property_name, long default_value) +int64_t FileConfiguration::property(std::string property_name, int64_t default_value) { if (overrided_->is_present(property_name)) { return overrided_->property(property_name, default_value); } - else + std::string empty; + return converter_->convert(property(property_name, empty), default_value); +} + + +uint64_t FileConfiguration::property(std::string property_name, uint64_t default_value) +{ + if (overrided_->is_present(property_name)) { - std::string empty = ""; - return converter_->convert(property(property_name, empty), default_value); + return overrided_->property(property_name, default_value); } + std::string empty; + return converter_->convert(property(property_name, empty), default_value); } @@ -110,11 +112,8 @@ int FileConfiguration::property(std::string property_name, int default_value) { return overrided_->property(property_name, default_value); } - else - { - std::string empty = ""; - return converter_->convert(property(property_name, empty), default_value); - } + std::string empty; + return converter_->convert(property(property_name, empty), default_value); } @@ -124,25 +123,30 @@ unsigned int FileConfiguration::property(std::string property_name, unsigned int { return overrided_->property(property_name, default_value); } - else - { - std::string empty = ""; - return converter_->convert(property(property_name, empty), default_value); - } + std::string empty; + return converter_->convert(property(property_name, empty), default_value); } -unsigned short FileConfiguration::property(std::string property_name, unsigned short default_value) +uint16_t FileConfiguration::property(std::string property_name, uint16_t default_value) { if (overrided_->is_present(property_name)) { return overrided_->property(property_name, default_value); } - else + std::string empty; + return converter_->convert(property(property_name, empty), default_value); +} + + +int16_t FileConfiguration::property(std::string property_name, int16_t default_value) +{ + if (overrided_->is_present(property_name)) { - std::string empty = ""; - return converter_->convert(property(property_name, empty), default_value); + return overrided_->property(property_name, default_value); } + std::string empty; + return converter_->convert(property(property_name, empty), default_value); } @@ -152,11 +156,8 @@ float FileConfiguration::property(std::string property_name, float default_value { return overrided_->property(property_name, default_value); } - else - { - std::string empty = ""; - return converter_->convert(property(property_name, empty), default_value); - } + std::string empty; + return converter_->convert(property(property_name, empty), default_value); } @@ -166,11 +167,8 @@ double FileConfiguration::property(std::string property_name, double default_val { return overrided_->property(property_name, default_value); } - else - { - std::string empty = ""; - return converter_->convert(property(property_name, empty), default_value); - } + std::string empty; + return converter_->convert(property(property_name, empty), default_value); } diff --git a/src/core/receiver/file_configuration.h b/src/core/receiver/file_configuration.h index 2484438d8..0e2ccb53e 100644 --- a/src/core/receiver/file_configuration.h +++ b/src/core/receiver/file_configuration.h @@ -37,6 +37,7 @@ #define GNSS_SDR_FILE_CONFIGURATION_H_ #include "configuration_interface.h" +#include #include #include @@ -62,10 +63,12 @@ public: ~FileConfiguration(); std::string property(std::string property_name, std::string default_value); bool property(std::string property_name, bool default_value); - long property(std::string property_name, long default_value); - int property(std::string property_name, int default_value); - unsigned int property(std::string property_name, unsigned int default_value); - unsigned short property(std::string property_name, unsigned short default_value); + int64_t property(std::string property_name, int64_t default_value); + uint64_t property(std::string property_name, uint64_t default_value); + int32_t property(std::string property_name, int32_t default_value); + uint32_t property(std::string property_name, uint32_t default_value); + int16_t property(std::string property_name, int16_t default_value); + uint16_t property(std::string property_name, uint16_t default_value); float property(std::string property_name, float default_value); double property(std::string property_name, double default_value); void set_property(std::string property_name, std::string value); diff --git a/src/core/receiver/gnss_block_factory.cc b/src/core/receiver/gnss_block_factory.cc index 8d8fc8368..fde980c3c 100644 --- a/src/core/receiver/gnss_block_factory.cc +++ b/src/core/receiver/gnss_block_factory.cc @@ -36,94 +36,93 @@ #include "gnss_block_factory.h" - -#include "configuration_interface.h" -#include "in_memory_configuration.h" -#include "gnss_block_interface.h" -#include "pass_through.h" -#include "file_signal_source.h" -#include "nsr_file_signal_source.h" -#include "two_bit_cpx_file_signal_source.h" -#include "spir_file_signal_source.h" -#include "spir_gss6450_file_signal_source.h" -#include "rtl_tcp_signal_source.h" -#include "two_bit_packed_file_signal_source.h" -#include "labsat_signal_source.h" -#include "channel.h" -#include "signal_conditioner.h" #include "array_signal_conditioner.h" +#include "beamformer_filter.h" #include "byte_to_short.h" -#include "ibyte_to_cbyte.h" -#include "ibyte_to_cshort.h" -#include "ibyte_to_complex.h" -#include "ishort_to_cshort.h" -#include "ishort_to_complex.h" +#include "channel.h" +#include "configuration_interface.h" #include "direct_resampler_conditioner.h" -#include "mmse_resampler_conditioner.h" +#include "file_signal_source.h" #include "fir_filter.h" #include "freq_xlating_fir_filter.h" -#include "beamformer_filter.h" -#include "pulse_blanking_filter.h" -#include "notch_filter.h" -#include "notch_filter_lite.h" -#include "gps_l1_ca_pcps_acquisition.h" -#include "gps_l2_m_pcps_acquisition.h" -#include "gps_l5i_pcps_acquisition.h" -#include "gps_l1_ca_pcps_tong_acquisition.h" -#include "gps_l1_ca_pcps_assisted_acquisition.h" -#include "gps_l1_ca_pcps_acquisition_fine_doppler.h" -#include "gps_l1_ca_pcps_quicksync_acquisition.h" -#include "galileo_e1_pcps_ambiguous_acquisition.h" +#include "galileo_e1_dll_pll_veml_tracking.h" #include "galileo_e1_pcps_8ms_ambiguous_acquisition.h" -#include "galileo_e1_pcps_tong_ambiguous_acquisition.h" +#include "galileo_e1_pcps_ambiguous_acquisition.h" #include "galileo_e1_pcps_cccwsr_ambiguous_acquisition.h" #include "galileo_e1_pcps_quicksync_ambiguous_acquisition.h" +#include "galileo_e1_pcps_tong_ambiguous_acquisition.h" +#include "galileo_e1_tcp_connector_tracking.h" +#include "galileo_e1b_telemetry_decoder.h" +#include "galileo_e5a_dll_pll_tracking.h" #include "galileo_e5a_noncoherent_iq_acquisition_caf.h" #include "galileo_e5a_pcps_acquisition.h" -#include "glonass_l1_ca_pcps_acquisition.h" -#include "glonass_l2_ca_pcps_acquisition.h" -#include "beidou_b1i_pcps_acquisition.h" -#include "gps_l1_ca_dll_pll_tracking.h" -#include "gps_l1_ca_dll_pll_c_aid_tracking.h" -#include "gps_l1_ca_tcp_connector_tracking.h" -#include "galileo_e1_dll_pll_veml_tracking.h" -#include "galileo_e1_tcp_connector_tracking.h" -#include "galileo_e5a_dll_pll_tracking.h" -#include "gps_l2_m_dll_pll_tracking.h" -#include "glonass_l1_ca_dll_pll_tracking.h" -#include "glonass_l1_ca_dll_pll_c_aid_tracking.h" -#include "glonass_l2_ca_dll_pll_tracking.h" -#include "glonass_l2_ca_dll_pll_c_aid_tracking.h" -#include "gps_l5_dll_pll_tracking.h" -#include "beidou_b1i_dll_pll_tracking.h" -#include "gps_l1_ca_telemetry_decoder.h" -#include "gps_l2c_telemetry_decoder.h" -#include "gps_l5_telemetry_decoder.h" -#include "galileo_e1b_telemetry_decoder.h" #include "galileo_e5a_telemetry_decoder.h" +#include "glonass_l1_ca_dll_pll_c_aid_tracking.h" +#include "glonass_l1_ca_dll_pll_tracking.h" +#include "glonass_l1_ca_pcps_acquisition.h" #include "glonass_l1_ca_telemetry_decoder.h" +#include "glonass_l2_ca_dll_pll_c_aid_tracking.h" +#include "glonass_l2_ca_dll_pll_tracking.h" +#include "glonass_l2_ca_pcps_acquisition.h" #include "glonass_l2_ca_telemetry_decoder.h" +#include "beidou_b1i_pcps_acquisition.h" +#include "beidou_b1i_dll_pll_tracking.h" #include "beidou_b1i_telemetry_decoder.h" -#include "sbas_l1_telemetry_decoder.h" -#include "hybrid_observables.h" -#include "rtklib_pvt.h" +#include "gnss_block_interface.h" +#include "gps_l1_ca_dll_pll_c_aid_tracking.h" +#include "gps_l1_ca_dll_pll_tracking.h" #include "gps_l1_ca_kf_tracking.h" +#include "gps_l1_ca_pcps_acquisition.h" +#include "gps_l1_ca_pcps_acquisition_fine_doppler.h" +#include "gps_l1_ca_pcps_assisted_acquisition.h" +#include "gps_l1_ca_pcps_quicksync_acquisition.h" +#include "gps_l1_ca_pcps_tong_acquisition.h" +#include "gps_l1_ca_tcp_connector_tracking.h" +#include "gps_l1_ca_telemetry_decoder.h" +#include "gps_l2_m_dll_pll_tracking.h" +#include "gps_l2_m_pcps_acquisition.h" +#include "gps_l2c_telemetry_decoder.h" +#include "gps_l5_dll_pll_tracking.h" +#include "gps_l5_telemetry_decoder.h" +#include "gps_l5i_pcps_acquisition.h" +#include "hybrid_observables.h" +#include "ibyte_to_cbyte.h" +#include "ibyte_to_complex.h" +#include "ibyte_to_cshort.h" +#include "in_memory_configuration.h" +#include "ishort_to_complex.h" +#include "ishort_to_cshort.h" +#include "labsat_signal_source.h" +#include "mmse_resampler_conditioner.h" +#include "notch_filter.h" +#include "notch_filter_lite.h" +#include "nsr_file_signal_source.h" +#include "pass_through.h" +#include "pulse_blanking_filter.h" +#include "rtklib_pvt.h" +#include "rtl_tcp_signal_source.h" +#include "sbas_l1_telemetry_decoder.h" +#include "signal_conditioner.h" +#include "spir_file_signal_source.h" +#include "spir_gss6450_file_signal_source.h" +#include "two_bit_cpx_file_signal_source.h" +#include "two_bit_packed_file_signal_source.h" #if RAW_UDP #include "custom_udp_signal_source.h" #endif #if ENABLE_FPGA -#include "gps_l1_ca_pcps_acquisition_fpga.h" -#include "gps_l2_m_pcps_acquisition_fpga.h" -#include "galileo_e1_pcps_ambiguous_acquisition_fpga.h" -#include "galileo_e5a_pcps_acquisition_fpga.h" -#include "gps_l5i_pcps_acquisition_fpga.h" -#include "gps_l1_ca_dll_pll_tracking_fpga.h" -#include "gps_l2_m_dll_pll_tracking_fpga.h" #include "galileo_e1_dll_pll_veml_tracking_fpga.h" +#include "galileo_e1_pcps_ambiguous_acquisition_fpga.h" #include "galileo_e5a_dll_pll_tracking_fpga.h" +#include "galileo_e5a_pcps_acquisition_fpga.h" +#include "gps_l1_ca_dll_pll_tracking_fpga.h" +#include "gps_l1_ca_pcps_acquisition_fpga.h" +#include "gps_l2_m_dll_pll_tracking_fpga.h" +#include "gps_l2_m_pcps_acquisition_fpga.h" #include "gps_l5_dll_pll_tracking_fpga.h" +#include "gps_l5i_pcps_acquisition_fpga.h" #endif #if OPENCL_BLOCKS @@ -167,18 +166,18 @@ #endif #include -#include -#include #include +#include +#include using google::LogMessage; -GNSSBlockFactory::GNSSBlockFactory() {} +GNSSBlockFactory::GNSSBlockFactory() = default; -GNSSBlockFactory::~GNSSBlockFactory() {} +GNSSBlockFactory::~GNSSBlockFactory() = default; std::unique_ptr GNSSBlockFactory::GetSignalSource( @@ -231,7 +230,7 @@ std::unique_ptr GNSSBlockFactory::GetSignalConditioner( std::string data_type_adapter; std::string input_filter; std::string resampler; - if (signal_conditioner.compare("Pass_Through") == 0) + if (signal_conditioner == "Pass_Through") { data_type_adapter = "Pass_Through"; input_filter = "Pass_Through"; @@ -249,7 +248,7 @@ std::unique_ptr GNSSBlockFactory::GetSignalConditioner( << input_filter << ", and Resampler implementation: " << resampler; - if (signal_conditioner.compare("Array_Signal_Conditioner") == 0) + if (signal_conditioner == "Array_Signal_Conditioner") { //instantiate the array version std::unique_ptr conditioner_(new ArraySignalConditioner(configuration.get(), @@ -283,18 +282,19 @@ std::unique_ptr GNSSBlockFactory::GetObservables(std::shared GPS_channels += configuration->property("Channels_2S.count", 0); GPS_channels += configuration->property("Channels_L5.count", 0); unsigned int Glonass_channels = configuration->property("Channels_1G.count", 0); + Glonass_channels += configuration->property("Channels_2G.count", 0); unsigned int Beidou_channels = configuration->property("Channels_B1.count", 0); unsigned int extra_channels = 1; // For monitor channel sample counter return GetBlock(configuration, "Observables", implementation, Galileo_channels + GPS_channels + Glonass_channels + - Beidou_channels + + Beidou_channels + extra_channels, - Galileo_channels + + Galileo_channels + GPS_channels + Glonass_channels + - Beidou_channels); + Beidou_channels); } @@ -309,8 +309,10 @@ std::unique_ptr GNSSBlockFactory::GetPVT(std::shared_ptrproperty("Channels_2S.count", 0); GPS_channels += configuration->property("Channels_L5.count", 0); unsigned int Glonass_channels = configuration->property("Channels_1G.count", 0); + Glonass_channels += configuration->property("Channels_2G.count", 0); unsigned int Beidou_channels = configuration->property("Channels_B1.count", 0); - return GetBlock(configuration, "PVT", implementation, Galileo_channels + GPS_channels + Glonass_channels + Beidou_channels, 0); + return GetBlock(configuration, "PVT", implementation, + Galileo_channels + GPS_channels + Glonass_channels + Beidou_channels, 0); } @@ -328,7 +330,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1C( std::string aux = configuration->property("Acquisition_1C" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix1; - if (aux.compare("W") != 0) + if (aux != "W") { appendix1 = std::to_string(channel); } @@ -338,7 +340,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1C( } aux = configuration->property("Tracking_1C" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix2; - if (aux.compare("W") != 0) + if (aux != "W") { appendix2 = std::to_string(channel); } @@ -348,7 +350,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1C( } aux = configuration->property("TelemetryDecoder_1C" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix3; - if (aux.compare("W") != 0) + if (aux != "W") { appendix3 = std::to_string(channel); } @@ -362,18 +364,17 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1C( std::string default_item_type = "gr_complex"; std::string acq_item_type = configuration->property("Acquisition_1C" + appendix1 + ".item_type", default_item_type); std::string trk_item_type = configuration->property("Tracking_1C" + appendix2 + ".item_type", default_item_type); - if (acq_item_type.compare(trk_item_type)) + if (acq_item_type != trk_item_type) { LOG(ERROR) << "Acquisition and Tracking blocks must have the same input data type!"; } config->set_property("Channel.item_type", acq_item_type); - std::unique_ptr pass_through_ = GetBlock(config, "Channel", "Pass_Through", 1, 1, queue); std::unique_ptr acq_ = GetAcqBlock(configuration, "Acquisition_1C" + appendix1, acq, 1, 0); std::unique_ptr trk_ = GetTrkBlock(configuration, "Tracking_1C" + appendix2, trk, 1, 1); std::unique_ptr tlm_ = GetTlmBlock(configuration, "TelemetryDecoder_1C" + appendix3, tlm, 1, 1); - std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(pass_through_), + std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(acq_), std::move(trk_), std::move(tlm_), @@ -393,7 +394,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_2S( << acq << ", Tracking Implementation: " << trk << ", Telemetry Decoder implementation: " << tlm; std::string aux = configuration->property("Acquisition_2S" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix1; - if (aux.compare("W") != 0) + if (aux != "W") { appendix1 = std::to_string(channel); } @@ -403,7 +404,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_2S( } aux = configuration->property("Tracking_2S" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix2; - if (aux.compare("W") != 0) + if (aux != "W") { appendix2 = std::to_string(channel); } @@ -413,7 +414,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_2S( } aux = configuration->property("TelemetryDecoder_2S" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix3; - if (aux.compare("W") != 0) + if (aux != "W") { appendix3 = std::to_string(channel); } @@ -427,18 +428,17 @@ std::unique_ptr GNSSBlockFactory::GetChannel_2S( std::string default_item_type = "gr_complex"; std::string acq_item_type = configuration->property("Acquisition_2S" + appendix1 + ".item_type", default_item_type); std::string trk_item_type = configuration->property("Tracking_2S" + appendix2 + ".item_type", default_item_type); - if (acq_item_type.compare(trk_item_type)) + if (acq_item_type != trk_item_type) { LOG(ERROR) << "Acquisition and Tracking blocks must have the same input data type!"; } config->set_property("Channel.item_type", acq_item_type); - std::unique_ptr pass_through_ = GetBlock(configuration, "Channel", "Pass_Through", 1, 1, queue); std::unique_ptr acq_ = GetAcqBlock(configuration, "Acquisition_2S" + appendix1, acq, 1, 0); std::unique_ptr trk_ = GetTrkBlock(configuration, "Tracking_2S" + appendix2, trk, 1, 1); std::unique_ptr tlm_ = GetTlmBlock(configuration, "TelemetryDecoder_2S" + appendix3, tlm, 1, 1); - std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(pass_through_), + std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(acq_), std::move(trk_), std::move(tlm_), @@ -461,7 +461,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1B( << acq << ", Tracking Implementation: " << trk << ", Telemetry Decoder implementation: " << tlm; std::string aux = configuration->property("Acquisition_1B" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix1; - if (aux.compare("W") != 0) + if (aux != "W") { appendix1 = std::to_string(channel); } @@ -471,7 +471,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1B( } aux = configuration->property("Tracking_1B" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix2; - if (aux.compare("W") != 0) + if (aux != "W") { appendix2 = std::to_string(channel); } @@ -481,7 +481,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1B( } aux = configuration->property("TelemetryDecoder_1B" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix3; - if (aux.compare("W") != 0) + if (aux != "W") { appendix3 = std::to_string(channel); } @@ -495,18 +495,17 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1B( std::string default_item_type = "gr_complex"; std::string acq_item_type = configuration->property("Acquisition_1B" + appendix1 + ".item_type", default_item_type); std::string trk_item_type = configuration->property("Tracking_1B" + appendix2 + ".item_type", default_item_type); - if (acq_item_type.compare(trk_item_type)) + if (acq_item_type != trk_item_type) { LOG(ERROR) << "Acquisition and Tracking blocks must have the same input data type!"; } config->set_property("Channel.item_type", acq_item_type); - std::unique_ptr pass_through_ = GetBlock(configuration, "Channel", "Pass_Through", 1, 1, queue); std::unique_ptr acq_ = GetAcqBlock(configuration, "Acquisition_1B" + appendix1, acq, 1, 0); std::unique_ptr trk_ = GetTrkBlock(configuration, "Tracking_1B" + appendix2, trk, 1, 1); std::unique_ptr tlm_ = GetTlmBlock(configuration, "TelemetryDecoder_1B" + appendix3, tlm, 1, 1); - std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(pass_through_), + std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(acq_), std::move(trk_), std::move(tlm_), @@ -529,7 +528,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_5X( << acq << ", Tracking Implementation: " << trk << ", Telemetry Decoder implementation: " << tlm; std::string aux = configuration->property("Acquisition_5X" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix1; - if (aux.compare("W") != 0) + if (aux != "W") { appendix1 = std::to_string(channel); } @@ -539,7 +538,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_5X( } aux = configuration->property("Tracking_5X" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix2; - if (aux.compare("W") != 0) + if (aux != "W") { appendix2 = std::to_string(channel); } @@ -549,7 +548,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_5X( } aux = configuration->property("TelemetryDecoder_5X" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix3; - if (aux.compare("W") != 0) + if (aux != "W") { appendix3 = std::to_string(channel); } @@ -563,18 +562,17 @@ std::unique_ptr GNSSBlockFactory::GetChannel_5X( std::string default_item_type = "gr_complex"; std::string acq_item_type = configuration->property("Acquisition_5X" + appendix1 + ".item_type", default_item_type); std::string trk_item_type = configuration->property("Tracking_5X" + appendix2 + ".item_type", default_item_type); - if (acq_item_type.compare(trk_item_type)) + if (acq_item_type != trk_item_type) { LOG(ERROR) << "Acquisition and Tracking blocks must have the same input data type!"; } config->set_property("Channel.item_type", acq_item_type); - std::unique_ptr pass_through_ = GetBlock(configuration, "Channel", "Pass_Through", 1, 1, queue); std::unique_ptr acq_ = GetAcqBlock(configuration, "Acquisition_5X" + appendix1, acq, 1, 0); std::unique_ptr trk_ = GetTrkBlock(configuration, "Tracking_5X" + appendix2, trk, 1, 1); std::unique_ptr tlm_ = GetTlmBlock(configuration, "TelemetryDecoder_5X" + appendix3, tlm, 1, 1); - std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(pass_through_), + std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(acq_), std::move(trk_), std::move(tlm_), @@ -598,7 +596,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1G( std::string aux = configuration->property("Acquisition_1G" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix1; - if (aux.compare("W") != 0) + if (aux != "W") { appendix1 = std::to_string(channel); } @@ -608,7 +606,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1G( } aux = configuration->property("Tracking_1G" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix2; - if (aux.compare("W") != 0) + if (aux != "W") { appendix2 = std::to_string(channel); } @@ -618,7 +616,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1G( } aux = configuration->property("TelemetryDecoder_1G" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix3; - if (aux.compare("W") != 0) + if (aux != "W") { appendix3 = std::to_string(channel); } @@ -632,18 +630,17 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1G( std::string default_item_type = "gr_complex"; std::string acq_item_type = configuration->property("Acquisition_1G" + appendix1 + ".item_type", default_item_type); std::string trk_item_type = configuration->property("Tracking_1G" + appendix2 + ".item_type", default_item_type); - if (acq_item_type.compare(trk_item_type)) + if (acq_item_type != trk_item_type) { LOG(ERROR) << "Acquisition and Tracking blocks must have the same input data type!"; } config->set_property("Channel.item_type", acq_item_type); - std::unique_ptr pass_through_ = GetBlock(config, "Channel", "Pass_Through", 1, 1, queue); std::unique_ptr acq_ = GetAcqBlock(configuration, "Acquisition_1G" + appendix1, acq, 1, 0); std::unique_ptr trk_ = GetTrkBlock(configuration, "Tracking_1G" + appendix2, trk, 1, 1); std::unique_ptr tlm_ = GetTlmBlock(configuration, "TelemetryDecoder_1G" + appendix3, tlm, 1, 1); - std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(pass_through_), + std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(acq_), std::move(trk_), std::move(tlm_), @@ -667,7 +664,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_2G( std::string aux = configuration->property("Acquisition_2G" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix1; - if (aux.compare("W") != 0) + if (aux != "W") { appendix1 = std::to_string(channel); } @@ -677,7 +674,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_2G( } aux = configuration->property("Tracking_2G" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix2; - if (aux.compare("W") != 0) + if (aux != "W") { appendix2 = std::to_string(channel); } @@ -687,7 +684,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_2G( } aux = configuration->property("TelemetryDecoder_2G" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix3; - if (aux.compare("W") != 0) + if (aux != "W") { appendix3 = std::to_string(channel); } @@ -701,18 +698,17 @@ std::unique_ptr GNSSBlockFactory::GetChannel_2G( std::string default_item_type = "gr_complex"; std::string acq_item_type = configuration->property("Acquisition_2G" + appendix1 + ".item_type", default_item_type); std::string trk_item_type = configuration->property("Tracking_2G" + appendix2 + ".item_type", default_item_type); - if (acq_item_type.compare(trk_item_type)) + if (acq_item_type != trk_item_type) { LOG(ERROR) << "Acquisition and Tracking blocks must have the same input data type!"; } config->set_property("Channel.item_type", acq_item_type); - std::unique_ptr pass_through_ = GetBlock(config, "Channel", "Pass_Through", 1, 1, queue); std::unique_ptr acq_ = GetAcqBlock(configuration, "Acquisition_2G" + appendix1, acq, 1, 0); std::unique_ptr trk_ = GetTrkBlock(configuration, "Tracking_2G" + appendix2, trk, 1, 1); std::unique_ptr tlm_ = GetTlmBlock(configuration, "TelemetryDecoder_2G" + appendix3, tlm, 1, 1); - std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(pass_through_), + std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(acq_), std::move(trk_), std::move(tlm_), @@ -735,7 +731,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_L5( << acq << ", Tracking Implementation: " << trk << ", Telemetry Decoder implementation: " << tlm; std::string aux = configuration->property("Acquisition_L5" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix1; - if (aux.compare("W") != 0) + if (aux != "W") { appendix1 = std::to_string(channel); } @@ -745,7 +741,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_L5( } aux = configuration->property("Tracking_L5" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix2; - if (aux.compare("W") != 0) + if (aux != "W") { appendix2 = std::to_string(channel); } @@ -755,7 +751,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_L5( } aux = configuration->property("TelemetryDecoder_L5" + std::to_string(channel) + ".implementation", std::string("W")); std::string appendix3; - if (aux.compare("W") != 0) + if (aux != "W") { appendix3 = std::to_string(channel); } @@ -769,18 +765,17 @@ std::unique_ptr GNSSBlockFactory::GetChannel_L5( std::string default_item_type = "gr_complex"; std::string acq_item_type = configuration->property("Acquisition_L5" + appendix1 + ".item_type", default_item_type); std::string trk_item_type = configuration->property("Tracking_L5" + appendix2 + ".item_type", default_item_type); - if (acq_item_type.compare(trk_item_type)) + if (acq_item_type != trk_item_type) { LOG(ERROR) << "Acquisition and Tracking blocks must have the same input data type!"; } config->set_property("Channel.item_type", acq_item_type); - std::unique_ptr pass_through_ = GetBlock(configuration, "Channel", "Pass_Through", 1, 1, queue); std::unique_ptr acq_ = GetAcqBlock(configuration, "Acquisition_L5" + appendix1, acq, 1, 0); std::unique_ptr trk_ = GetTrkBlock(configuration, "Tracking_L5" + appendix2, trk, 1, 1); std::unique_ptr tlm_ = GetTlmBlock(configuration, "TelemetryDecoder_L5" + appendix3, tlm, 1, 1); - std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(pass_through_), + std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(acq_), std::move(trk_), std::move(tlm_), @@ -837,17 +832,17 @@ std::unique_ptr GNSSBlockFactory::GetChannel_B1( std::string default_item_type = "gr_complex"; std::string acq_item_type = configuration->property("Acquisition_B1" + appendix1 + ".item_type", default_item_type); std::string trk_item_type = configuration->property("Tracking_B1" + appendix2 + ".item_type", default_item_type); - if (acq_item_type.compare(trk_item_type)) + if (acq_item_type != trk_item_type) { LOG(ERROR) << "Acquisition and Tracking blocks must have the same input data type!"; } config->set_property("Channel.item_type", acq_item_type); - std::unique_ptr pass_through_ = GetBlock(configuration, "Channel", "Pass_Through", 1, 1, queue); + std::unique_ptr acq_ = GetAcqBlock(configuration, "Acquisition_B1" + appendix1, acq, 1, 0); std::unique_ptr trk_ = GetTrkBlock(configuration, "Tracking_B1" + appendix2, trk, 1, 1); std::unique_ptr tlm_ = GetTlmBlock(configuration, "TelemetryDecoder_B1" + appendix3, tlm, 1, 1); - std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(pass_through_), + std::unique_ptr channel_(new Channel(configuration.get(), channel, std::move(acq_), std::move(trk_), std::move(tlm_), @@ -1092,6 +1087,7 @@ std::unique_ptr>> GNSSBlockFacto queue); channel_absolute_id++; } + //**************** BEIDOU B1I CHANNELS ********************** LOG(INFO) << "Getting " << Channels_B1_count << " BEIDOU B1I channels"; acquisition_implementation = configuration->property("Acquisition_B1.implementation", default_implementation); @@ -1150,15 +1146,14 @@ std::unique_ptr GNSSBlockFactory::GetBlock( std::unique_ptr block; //PASS THROUGH ---------------------------------------------------------------- - if (implementation.compare("Pass_Through") == 0) + if (implementation == "Pass_Through") { std::unique_ptr block_(new Pass_Through(configuration.get(), role, in_streams, out_streams)); - block = std::move(block_); } // SIGNAL SOURCES ------------------------------------------------------------- - else if (implementation.compare("File_Signal_Source") == 0) + else if (implementation == "File_Signal_Source") { try { @@ -1174,7 +1169,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } } #if RAW_UDP - else if (implementation.compare("Custom_UDP_Signal_Source") == 0) + else if (implementation == "Custom_UDP_Signal_Source") { try { @@ -1190,7 +1185,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } } #endif - else if (implementation.compare("Nsr_File_Signal_Source") == 0) + else if (implementation == "Nsr_File_Signal_Source") { try { @@ -1205,7 +1200,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } } #if MODERN_GNURADIO - else if (implementation.compare("Two_Bit_Cpx_File_Signal_Source") == 0) + else if (implementation == "Two_Bit_Cpx_File_Signal_Source") { try { @@ -1219,7 +1214,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( exit(1); } } - else if (implementation.compare("Two_Bit_Packed_File_Signal_Source") == 0) + else if (implementation == "Two_Bit_Packed_File_Signal_Source") { try { @@ -1234,7 +1229,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } } #endif - else if (implementation.compare("Spir_File_Signal_Source") == 0) + else if (implementation == "Spir_File_Signal_Source") { try { @@ -1248,7 +1243,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( exit(1); } } - else if (implementation.compare("Spir_GSS6450_File_Signal_Source") == 0) + else if (implementation == "Spir_GSS6450_File_Signal_Source") { try { @@ -1262,7 +1257,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( exit(1); } } - else if (implementation.compare("RtlTcp_Signal_Source") == 0) + else if (implementation == "RtlTcp_Signal_Source") { try { @@ -1276,7 +1271,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( exit(1); } } - else if (implementation.compare("Labsat_Signal_Source") == 0) + else if (implementation == "Labsat_Signal_Source") { try { @@ -1292,7 +1287,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } } #if UHD_DRIVER - else if (implementation.compare("UHD_Signal_Source") == 0) + else if (implementation == "UHD_Signal_Source") { std::unique_ptr block_(new UhdSignalSource(configuration.get(), role, in_streams, out_streams, queue)); @@ -1300,7 +1295,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } #endif #if GN3S_DRIVER - else if (implementation.compare("GN3S_Signal_Source") == 0) + else if (implementation == "GN3S_Signal_Source") { std::unique_ptr block_(new Gn3sSignalSource(configuration.get(), role, in_streams, out_streams, queue)); @@ -1309,7 +1304,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( #endif #if RAW_ARRAY_DRIVER - else if (implementation.compare("Raw_Array_Signal_Source") == 0) + else if (implementation == "Raw_Array_Signal_Source") { std::unique_ptr block_(new RawArraySignalSource(configuration.get(), role, in_streams, out_streams, queue)); @@ -1318,7 +1313,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( #endif #if OSMOSDR_DRIVER - else if (implementation.compare("Osmosdr_Signal_Source") == 0) + else if (implementation == "Osmosdr_Signal_Source") { std::unique_ptr block_(new OsmosdrSignalSource(configuration.get(), role, in_streams, out_streams, queue)); @@ -1327,7 +1322,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( #endif #if PLUTOSDR_DRIVER - else if (implementation.compare("Plutosdr_Signal_Source") == 0) + else if (implementation == "Plutosdr_Signal_Source") { std::unique_ptr block_(new PlutosdrSignalSource(configuration.get(), role, in_streams, out_streams, queue)); @@ -1336,7 +1331,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( #endif #if FMCOMMS2_DRIVER - else if (implementation.compare("Fmcomms2_Signal_Source") == 0) + else if (implementation == "Fmcomms2_Signal_Source") { std::unique_ptr block_(new Fmcomms2SignalSource(configuration.get(), role, in_streams, out_streams, queue)); @@ -1345,7 +1340,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( #endif #if AD9361_DRIVER - else if (implementation.compare("Ad9361_Fpga_Signal_Source") == 0) + else if (implementation == "Ad9361_Fpga_Signal_Source") { std::unique_ptr block_(new Ad9361FpgaSignalSource(configuration.get(), role, in_streams, out_streams, queue)); @@ -1354,7 +1349,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( #endif #if FLEXIBAND_DRIVER - else if (implementation.compare("Flexiband_Signal_Source") == 0) + else if (implementation == "Flexiband_Signal_Source") { std::unique_ptr block_(new FlexibandSignalSource(configuration.get(), role, in_streams, out_streams, queue)); @@ -1363,37 +1358,37 @@ std::unique_ptr GNSSBlockFactory::GetBlock( #endif // DATA TYPE ADAPTER ----------------------------------------------------------- - else if (implementation.compare("Byte_To_Short") == 0) + else if (implementation == "Byte_To_Short") { std::unique_ptr block_(new ByteToShort(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Ibyte_To_Cbyte") == 0) + else if (implementation == "Ibyte_To_Cbyte") { std::unique_ptr block_(new IbyteToCbyte(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Ibyte_To_Cshort") == 0) + else if (implementation == "Ibyte_To_Cshort") { std::unique_ptr block_(new IbyteToCshort(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Ibyte_To_Complex") == 0) + else if (implementation == "Ibyte_To_Complex") { std::unique_ptr block_(new IbyteToComplex(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Ishort_To_Cshort") == 0) + else if (implementation == "Ishort_To_Cshort") { std::unique_ptr block_(new IshortToCshort(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Ishort_To_Complex") == 0) + else if (implementation == "Ishort_To_Complex") { std::unique_ptr block_(new IshortToComplex(configuration.get(), role, in_streams, out_streams)); @@ -1401,37 +1396,37 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } // INPUT FILTER ---------------------------------------------------------------- - else if (implementation.compare("Fir_Filter") == 0) + else if (implementation == "Fir_Filter") { std::unique_ptr block_(new FirFilter(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Freq_Xlating_Fir_Filter") == 0) + else if (implementation == "Freq_Xlating_Fir_Filter") { std::unique_ptr block_(new FreqXlatingFirFilter(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Beamformer_Filter") == 0) + else if (implementation == "Beamformer_Filter") { std::unique_ptr block_(new BeamformerFilter(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Pulse_Blanking_Filter") == 0) + else if (implementation == "Pulse_Blanking_Filter") { std::unique_ptr block_(new PulseBlankingFilter(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Notch_Filter") == 0) + else if (implementation == "Notch_Filter") { std::unique_ptr block_(new NotchFilter(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Notch_Filter_Lite") == 0) + else if (implementation == "Notch_Filter_Lite") { std::unique_ptr block_(new NotchFilterLite(configuration.get(), role, in_streams, out_streams)); @@ -1439,14 +1434,14 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } // RESAMPLER ------------------------------------------------------------------- - else if (implementation.compare("Direct_Resampler") == 0) + else if (implementation == "Direct_Resampler") { std::unique_ptr block_(new DirectResamplerConditioner(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if ((implementation.compare("Fractional_Resampler") == 0) || (implementation.compare("Mmse_Resampler") == 0)) + else if ((implementation == "Fractional_Resampler") || (implementation == "Mmse_Resampler")) { std::unique_ptr block_(new MmseResamplerConditioner(configuration.get(), role, in_streams, out_streams)); @@ -1454,7 +1449,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } // ACQUISITION BLOCKS --------------------------------------------------------- - else if (implementation.compare("GPS_L1_CA_PCPS_Acquisition") == 0) + else if (implementation == "GPS_L1_CA_PCPS_Acquisition") { std::unique_ptr block_(new GpsL1CaPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); @@ -1462,20 +1457,20 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } #if ENABLE_FPGA - else if (implementation.compare("GPS_L1_CA_PCPS_Acquisition_Fpga") == 0) + else if (implementation == "GPS_L1_CA_PCPS_Acquisition_Fpga") { std::unique_ptr block_(new GpsL1CaPcpsAcquisitionFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("GPS_L1_CA_PCPS_Assisted_Acquisition") == 0) + else if (implementation == "GPS_L1_CA_PCPS_Assisted_Acquisition") { std::unique_ptr block_(new GpsL1CaPcpsAssistedAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L1_CA_PCPS_Tong_Acquisition") == 0) + else if (implementation == "GPS_L1_CA_PCPS_Tong_Acquisition") { std::unique_ptr block_(new GpsL1CaPcpsTongAcquisition(configuration.get(), role, in_streams, out_streams)); @@ -1483,7 +1478,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } #if OPENCL_BLOCKS - else if (implementation.compare("GPS_L1_CA_PCPS_OpenCl_Acquisition") == 0) + else if (implementation == "GPS_L1_CA_PCPS_OpenCl_Acquisition") { std::unique_ptr block_(new GpsL1CaPcpsOpenClAcquisition(configuration.get(), role, in_streams, out_streams)); @@ -1491,117 +1486,117 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } #endif - else if (implementation.compare("GPS_L1_CA_PCPS_Acquisition_Fine_Doppler") == 0) + else if (implementation == "GPS_L1_CA_PCPS_Acquisition_Fine_Doppler") { std::unique_ptr block_(new GpsL1CaPcpsAcquisitionFineDoppler(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L1_CA_PCPS_QuickSync_Acquisition") == 0) + else if (implementation == "GPS_L1_CA_PCPS_QuickSync_Acquisition") { std::unique_ptr block_(new GpsL1CaPcpsQuickSyncAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L2_M_PCPS_Acquisition") == 0) + else if (implementation == "GPS_L2_M_PCPS_Acquisition") { std::unique_ptr block_(new GpsL2MPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("GPS_L2_M_PCPS_Acquisition_Fpga") == 0) + else if (implementation == "GPS_L2_M_PCPS_Acquisition_Fpga") { std::unique_ptr block_(new GpsL2MPcpsAcquisitionFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("GPS_L5i_PCPS_Acquisition") == 0) + else if (implementation == "GPS_L5i_PCPS_Acquisition") { std::unique_ptr block_(new GpsL5iPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("GPS_L5i_PCPS_Acquisition_Fpga") == 0) + else if (implementation == "GPS_L5i_PCPS_Acquisition_Fpga") { std::unique_ptr block_(new GpsL5iPcpsAcquisitionFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("Galileo_E1_PCPS_Ambiguous_Acquisition") == 0) + else if (implementation == "Galileo_E1_PCPS_Ambiguous_Acquisition") { std::unique_ptr block_(new GalileoE1PcpsAmbiguousAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("Galileo_E1_PCPS_Ambiguous_Acquisition_Fpga") == 0) + else if (implementation == "Galileo_E1_PCPS_Ambiguous_Acquisition_Fpga") { std::unique_ptr block_(new GalileoE1PcpsAmbiguousAcquisitionFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("Galileo_E1_PCPS_8ms_Ambiguous_Acquisition") == 0) + else if (implementation == "Galileo_E1_PCPS_8ms_Ambiguous_Acquisition") { std::unique_ptr block_(new GalileoE1Pcps8msAmbiguousAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E1_PCPS_Tong_Ambiguous_Acquisition") == 0) + else if (implementation == "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition") { std::unique_ptr block_(new GalileoE1PcpsTongAmbiguousAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition") == 0) + else if (implementation == "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition") { std::unique_ptr block_(new GalileoE1PcpsCccwsrAmbiguousAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E5a_Noncoherent_IQ_Acquisition_CAF") == 0) + else if (implementation == "Galileo_E5a_Noncoherent_IQ_Acquisition_CAF") { std::unique_ptr block_(new GalileoE5aNoncoherentIQAcquisitionCaf(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E5a_Pcps_Acquisition") == 0) + else if (implementation == "Galileo_E5a_Pcps_Acquisition") { std::unique_ptr block_(new GalileoE5aPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("Galileo_E5a_Pcps_Acquisition_Fpga") == 0) + else if (implementation == "Galileo_E5a_Pcps_Acquisition_Fpga") { std::unique_ptr block_(new GalileoE5aPcpsAcquisitionFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition") == 0) + else if (implementation == "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition") { std::unique_ptr block_(new GalileoE1PcpsQuickSyncAmbiguousAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GLONASS_L1_CA_PCPS_Acquisition") == 0) + else if (implementation == "GLONASS_L1_CA_PCPS_Acquisition") { std::unique_ptr block_(new GlonassL1CaPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GLONASS_L2_CA_PCPS_Acquisition") == 0) + else if (implementation == "GLONASS_L2_CA_PCPS_Acquisition") { std::unique_ptr block_(new GlonassL2CaPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("BEIDOU_B1I_PCPS_Acquisition") == 0) + else if (implementation == "BEIDOU_B1I_PCPS_Acquisition") { std::unique_ptr block_(new BeidouB1iPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); @@ -1609,60 +1604,60 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } // TRACKING BLOCKS ------------------------------------------------------------- - else if (implementation.compare("GPS_L1_CA_DLL_PLL_Tracking") == 0) + else if (implementation == "GPS_L1_CA_DLL_PLL_Tracking") { std::unique_ptr block_(new GpsL1CaDllPllTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L1_CA_KF_Tracking") == 0) + else if (implementation == "GPS_L1_CA_KF_Tracking") { std::unique_ptr block_(new GpsL1CaKfTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L1_CA_DLL_PLL_C_Aid_Tracking") == 0) + else if (implementation == "GPS_L1_CA_DLL_PLL_C_Aid_Tracking") { std::unique_ptr block_(new GpsL1CaDllPllCAidTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("GPS_L1_CA_DLL_PLL_Tracking_Fpga") == 0) + else if (implementation == "GPS_L1_CA_DLL_PLL_Tracking_Fpga") { std::unique_ptr block_(new GpsL1CaDllPllTrackingFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("GPS_L1_CA_TCP_CONNECTOR_Tracking") == 0) + else if (implementation == "GPS_L1_CA_TCP_CONNECTOR_Tracking") { std::unique_ptr block_(new GpsL1CaTcpConnectorTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L2_M_DLL_PLL_Tracking") == 0) + else if (implementation == "GPS_L2_M_DLL_PLL_Tracking") { std::unique_ptr block_(new GpsL2MDllPllTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("GPS_L2_M_DLL_PLL_Tracking_Fpga") == 0) + else if (implementation == "GPS_L2_M_DLL_PLL_Tracking_Fpga") { std::unique_ptr block_(new GpsL2MDllPllTrackingFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if ((implementation.compare("GPS_L5i_DLL_PLL_Tracking") == 0) or (implementation.compare("GPS_L5_DLL_PLL_Tracking") == 0)) + else if ((implementation == "GPS_L5i_DLL_PLL_Tracking") or (implementation == "GPS_L5_DLL_PLL_Tracking")) { std::unique_ptr block_(new GpsL5DllPllTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if ((implementation.compare("GPS_L5i_DLL_PLL_Tracking_Fpga") == 0) or (implementation.compare("GPS_L5_DLL_PLL_Tracking_Fpga") == 0)) + else if ((implementation == "GPS_L5i_DLL_PLL_Tracking_Fpga") or (implementation == "GPS_L5_DLL_PLL_Tracking_Fpga")) { std::unique_ptr block_(new GpsL5DllPllTrackingFpga(configuration.get(), role, in_streams, out_streams)); @@ -1670,127 +1665,127 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } #endif #if CUDA_GPU_ACCEL - else if (implementation.compare("GPS_L1_CA_DLL_PLL_Tracking_GPU") == 0) + else if (implementation == "GPS_L1_CA_DLL_PLL_Tracking_GPU") { std::unique_ptr block_(new GpsL1CaDllPllTrackingGPU(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("Galileo_E1_DLL_PLL_VEML_Tracking") == 0) + else if (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking") { std::unique_ptr block_(new GalileoE1DllPllVemlTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("Galileo_E1_DLL_PLL_VEML_Tracking_Fpga") == 0) + else if (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga") { std::unique_ptr block_(new GalileoE1DllPllVemlTrackingFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("Galileo_E1_TCP_CONNECTOR_Tracking") == 0) + else if (implementation == "Galileo_E1_TCP_CONNECTOR_Tracking") { std::unique_ptr block_(new GalileoE1TcpConnectorTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E5a_DLL_PLL_Tracking") == 0) + else if (implementation == "Galileo_E5a_DLL_PLL_Tracking") { std::unique_ptr block_(new GalileoE5aDllPllTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("Galileo_E5a_DLL_PLL_Tracking_Fpga") == 0) + else if (implementation == "Galileo_E5a_DLL_PLL_Tracking_Fpga") { std::unique_ptr block_(new GalileoE5aDllPllTrackingFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("GLONASS_L1_CA_DLL_PLL_Tracking") == 0) + else if (implementation == "GLONASS_L1_CA_DLL_PLL_Tracking") { std::unique_ptr block_(new GlonassL1CaDllPllTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking") == 0) + else if (implementation == "GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking") { std::unique_ptr block_(new GlonassL1CaDllPllCAidTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GLONASS_L2_CA_DLL_PLL_Tracking") == 0) + else if (implementation == "GLONASS_L2_CA_DLL_PLL_Tracking") { std::unique_ptr block_(new GlonassL2CaDllPllTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GLONASS_L2_CA_DLL_PLL_C_Aid_Tracking") == 0) + else if (implementation == "GLONASS_L2_CA_DLL_PLL_C_Aid_Tracking") { std::unique_ptr block_(new GlonassL2CaDllPllCAidTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("BEIDOU_B1I_DLL_PLL_Tracking") == 0) + else if (implementation == "BEIDOU_B1I_DLL_PLL_Tracking") { std::unique_ptr block_(new BeidouB1iDllPllTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } // TELEMETRY DECODERS ---------------------------------------------------------- - else if (implementation.compare("GPS_L1_CA_Telemetry_Decoder") == 0) + else if (implementation == "GPS_L1_CA_Telemetry_Decoder") { std::unique_ptr block_(new GpsL1CaTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L2C_Telemetry_Decoder") == 0) + else if (implementation == "GPS_L2C_Telemetry_Decoder") { std::unique_ptr block_(new GpsL2CTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L5_Telemetry_Decoder") == 0) + else if (implementation == "GPS_L5_Telemetry_Decoder") { std::unique_ptr block_(new GpsL5TelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E1B_Telemetry_Decoder") == 0) + else if (implementation == "Galileo_E1B_Telemetry_Decoder") { std::unique_ptr block_(new GalileoE1BTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("SBAS_L1_Telemetry_Decoder") == 0) + else if (implementation == "SBAS_L1_Telemetry_Decoder") { std::unique_ptr block_(new SbasL1TelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E5a_Telemetry_Decoder") == 0) + else if (implementation == "Galileo_E5a_Telemetry_Decoder") { std::unique_ptr block_(new GalileoE5aTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GLONASS_L1_CA_Telemetry_Decoder") == 0) + else if (implementation == "GLONASS_L1_CA_Telemetry_Decoder") { std::unique_ptr block_(new GlonassL1CaTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GLONASS_L2_CA_Telemetry_Decoder") == 0) + else if (implementation == "GLONASS_L2_CA_Telemetry_Decoder") { std::unique_ptr block_(new GlonassL2CaTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("BEIDOU_B1I_Telemetry_Decoder") == 0) + else if (implementation == "BEIDOU_B1I_Telemetry_Decoder") { std::unique_ptr block_(new BeidouB1iTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); @@ -1798,8 +1793,8 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } // OBSERVABLES ----------------------------------------------------------------- - else if ((implementation.compare("Hybrid_Observables") == 0) || (implementation.compare("GPS_L1_CA_Observables") == 0) || (implementation.compare("GPS_L2C_Observables") == 0) || - (implementation.compare("Galileo_E5A_Observables") == 0)) + else if ((implementation == "Hybrid_Observables") || (implementation == "GPS_L1_CA_Observables") || (implementation == "GPS_L2C_Observables") || + (implementation == "Galileo_E5A_Observables")) { std::unique_ptr block_(new HybridObservables(configuration.get(), role, in_streams, out_streams)); @@ -1807,7 +1802,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( } // PVT ------------------------------------------------------------------------- - else if ((implementation.compare("RTKLIB_PVT") == 0) || (implementation.compare("GPS_L1_CA_PVT") == 0) || (implementation.compare("Galileo_E1_PVT") == 0) || (implementation.compare("Hybrid_PVT") == 0)) + else if ((implementation == "RTKLIB_PVT") || (implementation == "GPS_L1_CA_PVT") || (implementation == "Galileo_E1_PVT") || (implementation == "Hybrid_PVT")) { std::unique_ptr block_(new RtklibPvt(configuration.get(), role, in_streams, out_streams)); @@ -1838,27 +1833,27 @@ std::unique_ptr GNSSBlockFactory::GetAcqBlock( { std::unique_ptr block; // ACQUISITION BLOCKS --------------------------------------------------------- - if (implementation.compare("GPS_L1_CA_PCPS_Acquisition") == 0) + if (implementation == "GPS_L1_CA_PCPS_Acquisition") { std::unique_ptr block_(new GpsL1CaPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("GPS_L1_CA_PCPS_Acquisition_Fpga") == 0) + else if (implementation == "GPS_L1_CA_PCPS_Acquisition_Fpga") { std::unique_ptr block_(new GpsL1CaPcpsAcquisitionFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("GPS_L1_CA_PCPS_Assisted_Acquisition") == 0) + else if (implementation == "GPS_L1_CA_PCPS_Assisted_Acquisition") { std::unique_ptr block_(new GpsL1CaPcpsAssistedAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L1_CA_PCPS_Tong_Acquisition") == 0) + else if (implementation == "GPS_L1_CA_PCPS_Tong_Acquisition") { std::unique_ptr block_(new GpsL1CaPcpsTongAcquisition(configuration.get(), role, in_streams, out_streams)); @@ -1866,7 +1861,7 @@ std::unique_ptr GNSSBlockFactory::GetAcqBlock( } #if OPENCL_BLOCKS - else if (implementation.compare("GPS_L1_CA_PCPS_OpenCl_Acquisition") == 0) + else if (implementation == "GPS_L1_CA_PCPS_OpenCl_Acquisition") { std::unique_ptr block_(new GpsL1CaPcpsOpenClAcquisition(configuration.get(), role, in_streams, out_streams)); @@ -1874,118 +1869,118 @@ std::unique_ptr GNSSBlockFactory::GetAcqBlock( } #endif - else if (implementation.compare("GPS_L1_CA_PCPS_Acquisition_Fine_Doppler") == 0) + else if (implementation == "GPS_L1_CA_PCPS_Acquisition_Fine_Doppler") { std::unique_ptr block_(new GpsL1CaPcpsAcquisitionFineDoppler(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L1_CA_PCPS_QuickSync_Acquisition") == 0) + else if (implementation == "GPS_L1_CA_PCPS_QuickSync_Acquisition") { std::unique_ptr block_(new GpsL1CaPcpsQuickSyncAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L2_M_PCPS_Acquisition") == 0) + else if (implementation == "GPS_L2_M_PCPS_Acquisition") { std::unique_ptr block_(new GpsL2MPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("GPS_L2_M_PCPS_Acquisition_Fpga") == 0) + else if (implementation == "GPS_L2_M_PCPS_Acquisition_Fpga") { std::unique_ptr block_(new GpsL2MPcpsAcquisitionFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("GPS_L5i_PCPS_Acquisition") == 0) + else if (implementation == "GPS_L5i_PCPS_Acquisition") { std::unique_ptr block_(new GpsL5iPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("GPS_L5i_PCPS_Acquisition_Fpga") == 0) + else if (implementation == "GPS_L5i_PCPS_Acquisition_Fpga") { std::unique_ptr block_(new GpsL5iPcpsAcquisitionFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("Galileo_E1_PCPS_Ambiguous_Acquisition") == 0) + else if (implementation == "Galileo_E1_PCPS_Ambiguous_Acquisition") { std::unique_ptr block_(new GalileoE1PcpsAmbiguousAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("Galileo_E1_PCPS_Ambiguous_Acquisition_Fpga") == 0) + else if (implementation == "Galileo_E1_PCPS_Ambiguous_Acquisition_Fpga") { std::unique_ptr block_(new GalileoE1PcpsAmbiguousAcquisitionFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("Galileo_E1_PCPS_8ms_Ambiguous_Acquisition") == 0) + else if (implementation == "Galileo_E1_PCPS_8ms_Ambiguous_Acquisition") { std::unique_ptr block_(new GalileoE1Pcps8msAmbiguousAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E1_PCPS_Tong_Ambiguous_Acquisition") == 0) + else if (implementation == "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition") { std::unique_ptr block_(new GalileoE1PcpsTongAmbiguousAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition") == 0) + else if (implementation == "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition") { std::unique_ptr block_(new GalileoE1PcpsCccwsrAmbiguousAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition") == 0) + else if (implementation == "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition") { std::unique_ptr block_(new GalileoE1PcpsQuickSyncAmbiguousAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E5a_Noncoherent_IQ_Acquisition_CAF") == 0) + else if (implementation == "Galileo_E5a_Noncoherent_IQ_Acquisition_CAF") { std::unique_ptr block_(new GalileoE5aNoncoherentIQAcquisitionCaf(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E5a_Pcps_Acquisition") == 0) + else if (implementation == "Galileo_E5a_Pcps_Acquisition") { std::unique_ptr block_(new GalileoE5aPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("Galileo_E5a_Pcps_Acquisition_Fpga") == 0) + else if (implementation == "Galileo_E5a_Pcps_Acquisition_Fpga") { std::unique_ptr block_(new GalileoE5aPcpsAcquisitionFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("GLONASS_L1_CA_PCPS_Acquisition") == 0) + else if (implementation == "GLONASS_L1_CA_PCPS_Acquisition") { std::unique_ptr block_(new GlonassL1CaPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GLONASS_L2_CA_PCPS_Acquisition") == 0) + else if (implementation == "GLONASS_L2_CA_PCPS_Acquisition") { std::unique_ptr block_(new GlonassL2CaPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("BEIDOU_B1I_PCPS_Acquisition") == 0) + else if (implementation == "BEIDOU_B1I_PCPS_Acquisition") { std::unique_ptr block_(new BeidouB1iPcpsAcquisition(configuration.get(), role, in_streams, out_streams)); @@ -2010,94 +2005,94 @@ std::unique_ptr GNSSBlockFactory::GetTrkBlock( std::unique_ptr block; // TRACKING BLOCKS ------------------------------------------------------------- - if (implementation.compare("GPS_L1_CA_DLL_PLL_Tracking") == 0) + if (implementation == "GPS_L1_CA_DLL_PLL_Tracking") { std::unique_ptr block_(new GpsL1CaDllPllTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L1_CA_KF_Tracking") == 0) + else if (implementation == "GPS_L1_CA_KF_Tracking") { std::unique_ptr block_(new GpsL1CaKfTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L1_CA_DLL_PLL_C_Aid_Tracking") == 0) + else if (implementation == "GPS_L1_CA_DLL_PLL_C_Aid_Tracking") { std::unique_ptr block_(new GpsL1CaDllPllCAidTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("GPS_L1_CA_DLL_PLL_Tracking_Fpga") == 0) + else if (implementation == "GPS_L1_CA_DLL_PLL_Tracking_Fpga") { std::unique_ptr block_(new GpsL1CaDllPllTrackingFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("GPS_L1_CA_TCP_CONNECTOR_Tracking") == 0) + else if (implementation == "GPS_L1_CA_TCP_CONNECTOR_Tracking") { std::unique_ptr block_(new GpsL1CaTcpConnectorTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E1_DLL_PLL_VEML_Tracking") == 0) + else if (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking") { std::unique_ptr block_(new GalileoE1DllPllVemlTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("Galileo_E1_DLL_PLL_VEML_Tracking_Fpga") == 0) + else if (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga") { std::unique_ptr block_(new GalileoE1DllPllVemlTrackingFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("Galileo_E1_TCP_CONNECTOR_Tracking") == 0) + else if (implementation == "Galileo_E1_TCP_CONNECTOR_Tracking") { std::unique_ptr block_(new GalileoE1TcpConnectorTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E5a_DLL_PLL_Tracking") == 0) + else if (implementation == "Galileo_E5a_DLL_PLL_Tracking") { std::unique_ptr block_(new GalileoE5aDllPllTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("Galileo_E5a_DLL_PLL_Tracking_Fpga") == 0) + else if (implementation == "Galileo_E5a_DLL_PLL_Tracking_Fpga") { std::unique_ptr block_(new GalileoE5aDllPllTrackingFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("GPS_L2_M_DLL_PLL_Tracking") == 0) + else if (implementation == "GPS_L2_M_DLL_PLL_Tracking") { std::unique_ptr block_(new GpsL2MDllPllTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if (implementation.compare("GPS_L2_M_DLL_PLL_Tracking_Fpga") == 0) + else if (implementation == "GPS_L2_M_DLL_PLL_Tracking_Fpga") { std::unique_ptr block_(new GpsL2MDllPllTrackingFpga(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if ((implementation.compare("GPS_L5i_DLL_PLL_Tracking") == 0) or (implementation.compare("GPS_L5_DLL_PLL_Tracking") == 0)) + else if ((implementation == "GPS_L5i_DLL_PLL_Tracking") or (implementation == "GPS_L5_DLL_PLL_Tracking")) { std::unique_ptr block_(new GpsL5DllPllTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #if ENABLE_FPGA - else if ((implementation.compare("GPS_L5i_DLL_PLL_Tracking_Fpga") == 0) or (implementation.compare("GPS_L5_DLL_PLL_Tracking_Fpga") == 0)) + else if ((implementation == "GPS_L5i_DLL_PLL_Tracking_Fpga") or (implementation == "GPS_L5_DLL_PLL_Tracking_Fpga")) { std::unique_ptr block_(new GpsL5DllPllTrackingFpga(configuration.get(), role, in_streams, out_streams)); @@ -2105,38 +2100,38 @@ std::unique_ptr GNSSBlockFactory::GetTrkBlock( } #endif #if CUDA_GPU_ACCEL - else if (implementation.compare("GPS_L1_CA_DLL_PLL_Tracking_GPU") == 0) + else if (implementation == "GPS_L1_CA_DLL_PLL_Tracking_GPU") { std::unique_ptr block_(new GpsL1CaDllPllTrackingGPU(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } #endif - else if (implementation.compare("GLONASS_L1_CA_DLL_PLL_Tracking") == 0) + else if (implementation == "GLONASS_L1_CA_DLL_PLL_Tracking") { std::unique_ptr block_(new GlonassL1CaDllPllTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking") == 0) + else if (implementation == "GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking") { std::unique_ptr block_(new GlonassL1CaDllPllCAidTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GLONASS_L2_CA_DLL_PLL_Tracking") == 0) + else if (implementation == "GLONASS_L2_CA_DLL_PLL_Tracking") { std::unique_ptr block_(new GlonassL2CaDllPllTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GLONASS_L2_CA_DLL_PLL_C_Aid_Tracking") == 0) + else if (implementation == "GLONASS_L2_CA_DLL_PLL_C_Aid_Tracking") { std::unique_ptr block_(new GlonassL2CaDllPllCAidTracking(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("BEIDOU_B1I_DLL_PLL_Tracking") == 0) + else if (implementation == "BEIDOU_B1I_DLL_PLL_Tracking") { std::unique_ptr block_(new BeidouB1iDllPllTracking(configuration.get(), role, in_streams, out_streams)); @@ -2161,55 +2156,55 @@ std::unique_ptr GNSSBlockFactory::GetTlmBlock( std::unique_ptr block; // TELEMETRY DECODERS ---------------------------------------------------------- - if (implementation.compare("GPS_L1_CA_Telemetry_Decoder") == 0) + if (implementation == "GPS_L1_CA_Telemetry_Decoder") { std::unique_ptr block_(new GpsL1CaTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E1B_Telemetry_Decoder") == 0) + else if (implementation == "Galileo_E1B_Telemetry_Decoder") { std::unique_ptr block_(new GalileoE1BTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("SBAS_L1_Telemetry_Decoder") == 0) + else if (implementation == "SBAS_L1_Telemetry_Decoder") { std::unique_ptr block_(new SbasL1TelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("Galileo_E5a_Telemetry_Decoder") == 0) + else if (implementation == "Galileo_E5a_Telemetry_Decoder") { std::unique_ptr block_(new GalileoE5aTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L2C_Telemetry_Decoder") == 0) + else if (implementation == "GPS_L2C_Telemetry_Decoder") { std::unique_ptr block_(new GpsL2CTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GLONASS_L1_CA_Telemetry_Decoder") == 0) + else if (implementation == "GLONASS_L1_CA_Telemetry_Decoder") { std::unique_ptr block_(new GlonassL1CaTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GLONASS_L2_CA_Telemetry_Decoder") == 0) + else if (implementation == "GLONASS_L2_CA_Telemetry_Decoder") { std::unique_ptr block_(new GlonassL2CaTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("GPS_L5_Telemetry_Decoder") == 0) + else if (implementation == "GPS_L5_Telemetry_Decoder") { std::unique_ptr block_(new GpsL5TelemetryDecoder(configuration.get(), role, in_streams, out_streams)); block = std::move(block_); } - else if (implementation.compare("BEIDOU_B1I_Telemetry_Decoder") == 0) + else if (implementation == "BEIDOU_B1I_Telemetry_Decoder") { std::unique_ptr block_(new BeidouB1iTelemetryDecoder(configuration.get(), role, in_streams, out_streams)); diff --git a/src/core/receiver/gnss_flowgraph.cc b/src/core/receiver/gnss_flowgraph.cc index a9c954ddf..1514e0962 100644 --- a/src/core/receiver/gnss_flowgraph.cc +++ b/src/core/receiver/gnss_flowgraph.cc @@ -33,30 +33,41 @@ */ #include "gnss_flowgraph.h" -#include "gnss_synchro.h" -#include "configuration_interface.h" -#include "gnss_block_interface.h" +#include "GPS_L1_CA.h" +#include "GPS_L2C.h" +#include "GPS_L5.h" +#include "Galileo_E1.h" +#include "Galileo_E5a.h" +#include "channel.h" #include "channel_interface.h" +#include "configuration_interface.h" #include "gnss_block_factory.h" #include #include #include +#include #include #include #include #include +#include +#ifdef GR_GREATER_38 +#include +#else +#include +#endif #define GNSS_SDR_ARRAY_SIGNAL_CONDITIONER_CHANNELS 8 using google::LogMessage; -GNSSFlowgraph::GNSSFlowgraph(std::shared_ptr configuration, gr::msg_queue::sptr queue) +GNSSFlowgraph::GNSSFlowgraph(std::shared_ptr configuration, const gr::msg_queue::sptr& queue) { connected_ = false; running_ = false; configuration_ = configuration; - queue_ = queue; + queue_ = std::move(queue); init(); } @@ -204,7 +215,7 @@ void GNSSFlowgraph::connect() { //TODO: Remove this array implementation and create generic multistream connector //(if a signal source has more than 1 stream, then connect it to the multistream signal conditioner) - if (sig_source_.at(i)->implementation().compare("Raw_Array_Signal_Source") == 0) + if (sig_source_.at(i)->implementation() == "Raw_Array_Signal_Source") { //Multichannel Array std::cout << "ARRAY MODE" << std::endl; @@ -342,6 +353,8 @@ void GNSSFlowgraph::connect() #endif // Signal conditioner (selected_signal_source) >> channels (i) (dependent of their associated SignalSource_ID) int selected_signal_conditioner_ID = 0; + bool use_acq_resampler = configuration_->property("GNSS-SDR.use_acquisition_resampler", false); + uint32_t fs = configuration_->property("GNSS-SDR.internal_fs_sps", 0); for (unsigned int i = 0; i < channels_count_; i++) { if (FPGA_enabled == false) @@ -356,8 +369,122 @@ void GNSSFlowgraph::connect() } try { - top_block_->connect(sig_conditioner_.at(selected_signal_conditioner_ID)->get_right_block(), 0, - channels_.at(i)->get_left_block(), 0); + // Enable automatic resampler for the acquisition, if required + if (use_acq_resampler == true) + { + //create acquisition resamplers if required + double resampler_ratio = 1.0; + double acq_fs = fs; + //find the signal associated to this channel + switch (mapStringValues_[channels_.at(i)->implementation()]) + { + case evGPS_1C: + acq_fs = GPS_L1_CA_OPT_ACQ_FS_HZ; + break; + case evGPS_2S: + acq_fs = GPS_L2C_OPT_ACQ_FS_HZ; + break; + case evGPS_L5: + acq_fs = GPS_L5_OPT_ACQ_FS_HZ; + break; + case evSBAS_1C: + acq_fs = GPS_L1_CA_OPT_ACQ_FS_HZ; + break; + case evGAL_1B: + acq_fs = Galileo_E1_OPT_ACQ_FS_HZ; + break; + case evGAL_5X: + acq_fs = Galileo_E5a_OPT_ACQ_FS_HZ; + break; + case evGLO_1G: + acq_fs = fs; + break; + case evGLO_2G: + acq_fs = fs; + break; + case evBDS_B1: + acq_fs = fs; + break; + } + + if (acq_fs < fs) + { + //check if the resampler is already created for the channel system/signal and for the specific RF Channel + std::string map_key = channels_.at(i)->implementation() + std::to_string(selected_signal_conditioner_ID); + resampler_ratio = static_cast(fs) / acq_fs; + int decimation = floor(resampler_ratio); + while (fs % decimation > 0) + { + decimation--; + }; + double acq_fs = fs / decimation; + + if (decimation > 1) + { + //create a FIR low pass filter + std::vector taps; + taps = gr::filter::firdes::low_pass(1.0, + fs, + acq_fs / 2.1, + acq_fs / 10, + gr::filter::firdes::win_type::WIN_HAMMING); + + gr::basic_block_sptr fir_filter_ccf_ = gr::filter::fir_filter_ccf::make(decimation, taps); + + std::pair::iterator, bool> ret; + ret = acq_resamplers_.insert(std::pair(map_key, fir_filter_ccf_)); + if (ret.second == true) + { + top_block_->connect(sig_conditioner_.at(selected_signal_conditioner_ID)->get_right_block(), 0, + acq_resamplers_.at(map_key), 0); + LOG(INFO) << "Created " + << channels_.at(i)->implementation() + << " acquisition resampler for RF channel " << std::to_string(signal_conditioner_ID) << " with " << taps.size() << " taps and decimation factor of " << decimation; + } + else + { + LOG(INFO) << "Found existing " + << channels_.at(i)->implementation() + << " acquisition resampler for RF channel " << std::to_string(signal_conditioner_ID) << " with " << taps.size() << " taps and decimation factor of " << decimation; + } + + + top_block_->connect(acq_resamplers_.at(map_key), 0, + channels_.at(i)->get_left_block_acq(), 0); + + top_block_->connect(sig_conditioner_.at(selected_signal_conditioner_ID)->get_right_block(), 0, + channels_.at(i)->get_left_block_trk(), 0); + + std::shared_ptr channel_ptr; + channel_ptr = std::dynamic_pointer_cast(channels_.at(i)); + channel_ptr->acquisition()->set_resampler_latency((taps.size() - 1) / 2); + } + else + { + LOG(INFO) << "Disabled acquisition resampler because the input sampling frequency is too low"; + //resampler not required! + top_block_->connect(sig_conditioner_.at(selected_signal_conditioner_ID)->get_right_block(), 0, + channels_.at(i)->get_left_block_acq(), 0); + top_block_->connect(sig_conditioner_.at(selected_signal_conditioner_ID)->get_right_block(), 0, + channels_.at(i)->get_left_block_trk(), 0); + } + } + else + { + LOG(INFO) << "Disabled acquisition resampler because the input sampling frequency is too low"; + top_block_->connect(sig_conditioner_.at(selected_signal_conditioner_ID)->get_right_block(), 0, + channels_.at(i)->get_left_block_acq(), 0); + top_block_->connect(sig_conditioner_.at(selected_signal_conditioner_ID)->get_right_block(), 0, + channels_.at(i)->get_left_block_trk(), 0); + } + } + else + { + top_block_->connect(sig_conditioner_.at(selected_signal_conditioner_ID)->get_right_block(), 0, + channels_.at(i)->get_left_block_acq(), 0); + top_block_->connect(sig_conditioner_.at(selected_signal_conditioner_ID)->get_right_block(), 0, + channels_.at(i)->get_left_block_trk(), 0); + } } catch (const std::exception& e) { @@ -571,7 +698,7 @@ void GNSSFlowgraph::disconnect() { // TODO: Remove this array implementation and create generic multistream connector // (if a signal source has more than 1 stream, then connect it to the multistream signal conditioner) - if (sig_source_.at(i)->implementation().compare("Raw_Array_Signal_Source") == 0) + if (sig_source_.at(i)->implementation() == "Raw_Array_Signal_Source") { //Multichannel Array for (int j = 0; j < GNSS_SDR_ARRAY_SIGNAL_CONDITIONER_CHANNELS; j++) @@ -683,7 +810,7 @@ void GNSSFlowgraph::disconnect() try { top_block_->disconnect(sig_conditioner_.at(selected_signal_conditioner_ID)->get_right_block(), 0, - channels_.at(i)->get_left_block(), 0); + channels_.at(i)->get_left_block_trk(), 0); } catch (const std::exception& e) { @@ -805,7 +932,7 @@ void GNSSFlowgraph::wait() } -bool GNSSFlowgraph::send_telemetry_msg(pmt::pmt_t msg) +bool GNSSFlowgraph::send_telemetry_msg(const pmt::pmt_t& msg) { // Push ephemeris to PVT telemetry msg in port using a channel out port // it uses the first channel as a message producer (it is already connected to PVT) @@ -1351,8 +1478,8 @@ void GNSSFlowgraph::init() // Mark old implementations as deprecated std::string default_str("Default"); std::string obs_implementation = configuration_->property("Observables.implementation", default_str); - if ((obs_implementation.compare("GPS_L1_CA_Observables") == 0) || (obs_implementation.compare("GPS_L2C_Observables") == 0) || - (obs_implementation.compare("Galileo_E1B_Observables") == 0) || (obs_implementation.compare("Galileo_E5A_Observables") == 0)) + if ((obs_implementation == "GPS_L1_CA_Observables") || (obs_implementation == "GPS_L2C_Observables") || + (obs_implementation == "Galileo_E1B_Observables") || (obs_implementation == "Galileo_E5A_Observables")) { std::cout << "WARNING: Implementation '" << obs_implementation << "' of the Observables block has been replaced by 'Hybrid_Observables'." << std::endl; std::cout << "Please update your configuration file." << std::endl; @@ -1361,7 +1488,7 @@ void GNSSFlowgraph::init() pvt_ = block_factory_->GetPVT(configuration_); // Mark old implementations as deprecated std::string pvt_implementation = configuration_->property("PVT.implementation", default_str); - if ((pvt_implementation.compare("GPS_L1_CA_PVT") == 0) || (pvt_implementation.compare("Galileo_E1_PVT") == 0) || (pvt_implementation.compare("Hybrid_PVT") == 0)) + if ((pvt_implementation == "GPS_L1_CA_PVT") || (pvt_implementation == "Galileo_E1_PVT") || (pvt_implementation == "Hybrid_PVT")) { std::cout << "WARNING: Implementation '" << pvt_implementation << "' of the PVT block has been replaced by 'RTKLIB_PVT'." << std::endl; std::cout << "Please update your configuration file." << std::endl; @@ -1667,7 +1794,7 @@ void GNSSFlowgraph::set_channels_state() } -Gnss_Signal GNSSFlowgraph::search_next_signal(std::string searched_signal, bool pop, bool tracked) +Gnss_Signal GNSSFlowgraph::search_next_signal(const std::string& searched_signal, bool pop, bool tracked) { Gnss_Signal result; bool untracked_satellite = true; @@ -1686,7 +1813,7 @@ Gnss_Signal GNSSFlowgraph::search_next_signal(std::string searched_signal, bool { for (unsigned int ch = 0; ch < channels_count_; ch++) { - if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str().compare("1C") != 0)) untracked_satellite = false; + if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str() != "1C")) untracked_satellite = false; } if (untracked_satellite and configuration_->property("Channels_2S.count", 0) > 0) { @@ -1717,7 +1844,7 @@ Gnss_Signal GNSSFlowgraph::search_next_signal(std::string searched_signal, bool { for (unsigned int ch = 0; ch < channels_count_; ch++) { - if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str().compare("2S") != 0)) untracked_satellite = false; + if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str() != "2S")) untracked_satellite = false; } if (untracked_satellite and configuration_->property("Channels_1C.count", 0) > 0) { @@ -1748,7 +1875,7 @@ Gnss_Signal GNSSFlowgraph::search_next_signal(std::string searched_signal, bool { for (unsigned int ch = 0; ch < channels_count_; ch++) { - if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str().compare("L5") != 0)) untracked_satellite = false; + if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str() != "L5")) untracked_satellite = false; } if (untracked_satellite and configuration_->property("Channels_1C.count", 0) > 0) { @@ -1779,7 +1906,7 @@ Gnss_Signal GNSSFlowgraph::search_next_signal(std::string searched_signal, bool { for (unsigned int ch = 0; ch < channels_count_; ch++) { - if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str().compare("1B") != 0)) untracked_satellite = false; + if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str() != "1B")) untracked_satellite = false; } if (untracked_satellite) { @@ -1804,7 +1931,7 @@ Gnss_Signal GNSSFlowgraph::search_next_signal(std::string searched_signal, bool { for (unsigned int ch = 0; ch < channels_count_; ch++) { - if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str().compare("5X") != 0)) untracked_satellite = false; + if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str() != "5X")) untracked_satellite = false; } if (untracked_satellite) { @@ -1829,7 +1956,7 @@ Gnss_Signal GNSSFlowgraph::search_next_signal(std::string searched_signal, bool { for (unsigned int ch = 0; ch < channels_count_; ch++) { - if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str().compare("1G") != 0)) untracked_satellite = false; + if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str() != "1G")) untracked_satellite = false; } if (untracked_satellite) { @@ -1854,7 +1981,7 @@ Gnss_Signal GNSSFlowgraph::search_next_signal(std::string searched_signal, bool { for (unsigned int ch = 0; ch < channels_count_; ch++) { - if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str().compare("2G") != 0)) untracked_satellite = false; + if ((channels_[ch]->get_signal().get_satellite() == result.get_satellite()) and (channels_[ch]->get_signal().get_signal_str() != "2G")) untracked_satellite = false; } if (untracked_satellite) { diff --git a/src/core/receiver/gnss_flowgraph.h b/src/core/receiver/gnss_flowgraph.h index b6d8e925e..ff6d9084a 100644 --- a/src/core/receiver/gnss_flowgraph.h +++ b/src/core/receiver/gnss_flowgraph.h @@ -38,16 +38,16 @@ #define GNSS_SDR_GNSS_FLOWGRAPH_H_ #include "GPS_L1_CA.h" -#include "gnss_signal.h" -#include "gnss_sdr_sample_counter.h" -#include "gnss_synchro_monitor.h" -#include "gnss_block_interface.h" -#include "pvt_interface.h" #include "channel_interface.h" #include "configuration_interface.h" #include "gnss_block_factory.h" -#include +#include "gnss_block_interface.h" +#include "gnss_sdr_sample_counter.h" +#include "gnss_signal.h" +#include "gnss_synchro_monitor.h" +#include "pvt_interface.h" #include +#include #include #include #include @@ -55,6 +55,7 @@ #include #include #include +#include #if ENABLE_FPGA #include "gnss_sdr_fpga_sample_counter.h" @@ -72,7 +73,7 @@ public: /*! * \brief Constructor that initializes the receiver flow graph */ - GNSSFlowgraph(std::shared_ptr configuration, gr::msg_queue::sptr queue); + GNSSFlowgraph(std::shared_ptr configuration, const gr::msg_queue::sptr& queue); /*! * \brief Destructor @@ -128,7 +129,7 @@ public: * * It is used to assist the receiver with external ephemeris data */ - bool send_telemetry_msg(pmt::pmt_t msg); + bool send_telemetry_msg(const pmt::pmt_t& msg); /*! * \brief Returns a smart pointer to the PVT object @@ -148,7 +149,7 @@ private: void set_signals_list(); void set_channels_state(); // Initializes the channels state (start acquisition or keep standby) // using the configuration parameters (number of channels and max channels in acquisition) - Gnss_Signal search_next_signal(std::string searched_signal, bool pop, bool tracked = false); + Gnss_Signal search_next_signal(const std::string& searched_signal, bool pop, bool tracked = false); bool connected_; bool running_; int sources_count_; @@ -166,6 +167,7 @@ private: std::shared_ptr observables_; std::shared_ptr pvt_; + std::map acq_resamplers_; std::vector> channels_; gnss_sdr_sample_counter_sptr ch_out_sample_counter; #if ENABLE_FPGA @@ -202,7 +204,7 @@ private: bool enable_monitor_; gr::basic_block_sptr GnssSynchroMonitor_; - std::vector split_string(const std::string &s, char delim); + std::vector split_string(const std::string& s, char delim); }; #endif /*GNSS_SDR_GNSS_FLOWGRAPH_H_*/ diff --git a/src/core/receiver/in_memory_configuration.cc b/src/core/receiver/in_memory_configuration.cc index 75b520362..4801d2eb2 100644 --- a/src/core/receiver/in_memory_configuration.cc +++ b/src/core/receiver/in_memory_configuration.cc @@ -50,63 +50,74 @@ InMemoryConfiguration::~InMemoryConfiguration() std::string InMemoryConfiguration::property(std::string property_name, std::string default_value) { - std::map::iterator iter = properties_.find(property_name); + auto iter = properties_.find(property_name); if (iter != properties_.end()) { return iter->second; } - else - { - return default_value; - } + return default_value; } bool InMemoryConfiguration::property(std::string property_name, bool default_value) { - std::string empty = ""; + std::string empty; return converter_->convert(property(property_name, empty), default_value); } -long InMemoryConfiguration::property(std::string property_name, long default_value) +int64_t InMemoryConfiguration::property(std::string property_name, int64_t default_value) { - std::string empty = ""; + std::string empty; return converter_->convert(property(property_name, empty), default_value); } -int InMemoryConfiguration::property(std::string property_name, int default_value) +uint64_t InMemoryConfiguration::property(std::string property_name, uint64_t default_value) { - std::string empty = ""; + std::string empty; return converter_->convert(property(property_name, empty), default_value); } -unsigned int InMemoryConfiguration::property(std::string property_name, unsigned int default_value) +int32_t InMemoryConfiguration::property(std::string property_name, int32_t default_value) { - std::string empty = ""; + std::string empty; return converter_->convert(property(property_name, empty), default_value); } -unsigned short InMemoryConfiguration::property(std::string property_name, unsigned short default_value) +uint32_t InMemoryConfiguration::property(std::string property_name, uint32_t default_value) { - std::string empty = ""; + std::string empty; + return converter_->convert(property(property_name, empty), default_value); +} + + +uint16_t InMemoryConfiguration::property(std::string property_name, uint16_t default_value) +{ + std::string empty; + return converter_->convert(property(property_name, empty), default_value); +} + + +int16_t InMemoryConfiguration::property(std::string property_name, int16_t default_value) +{ + std::string empty; return converter_->convert(property(property_name, empty), default_value); } float InMemoryConfiguration::property(std::string property_name, float default_value) { - std::string empty = ""; + std::string empty; return converter_->convert(property(property_name, empty), default_value); } double InMemoryConfiguration::property(std::string property_name, double default_value) { - std::string empty = ""; + std::string empty; return converter_->convert(property(property_name, empty), default_value); } @@ -124,7 +135,7 @@ void InMemoryConfiguration::supersede_property(std::string property_name, std::s } -bool InMemoryConfiguration::is_present(std::string property_name) +bool InMemoryConfiguration::is_present(const std::string& property_name) { return (properties_.find(property_name) != properties_.end()); } diff --git a/src/core/receiver/in_memory_configuration.h b/src/core/receiver/in_memory_configuration.h index 59c1f1baf..698071a36 100644 --- a/src/core/receiver/in_memory_configuration.h +++ b/src/core/receiver/in_memory_configuration.h @@ -36,6 +36,7 @@ #define GNSS_SDR_IN_MEMORY_CONFIGURATION_H_ #include "configuration_interface.h" +#include #include #include #include @@ -56,15 +57,17 @@ public: virtual ~InMemoryConfiguration(); std::string property(std::string property_name, std::string default_value); bool property(std::string property_name, bool default_value); - long property(std::string property_name, long default_value); - int property(std::string property_name, int default_value); - unsigned int property(std::string property_name, unsigned int default_value); - unsigned short property(std::string property_name, unsigned short default_value); + int64_t property(std::string property_name, int64_t default_value); + uint64_t property(std::string property_name, uint64_t default_value); + int32_t property(std::string property_name, int32_t default_value); + uint32_t property(std::string property_name, uint32_t default_value); + int16_t property(std::string property_name, int16_t default_value); + uint16_t property(std::string property_name, uint16_t default_value); float property(std::string property_name, float default_value); double property(std::string property_name, double default_value); void set_property(std::string property_name, std::string value); void supersede_property(std::string property_name, std::string value); - bool is_present(std::string property_name); + bool is_present(const std::string& property_name); private: std::map properties_; diff --git a/src/core/receiver/tcp_cmd_interface.cc b/src/core/receiver/tcp_cmd_interface.cc index ecb175e5f..57b274757 100644 --- a/src/core/receiver/tcp_cmd_interface.cc +++ b/src/core/receiver/tcp_cmd_interface.cc @@ -1,7 +1,7 @@ /*! * \file tcp_cmd_interface.cc * - * \brief Class that implements a TCP telecontrol command line interface + * \brief Class that implements a TCP/IP telecommand command line interface * for GNSS-SDR * \author Javier Arribas jarribas (at) cttc.es * ------------------------------------------------------------------------- @@ -47,9 +47,7 @@ TcpCmdInterface::TcpCmdInterface() } -TcpCmdInterface::~TcpCmdInterface() -{ -} +TcpCmdInterface::~TcpCmdInterface() = default; void TcpCmdInterface::register_functions() @@ -142,7 +140,7 @@ std::string TcpCmdInterface::status(const std::vector &commandLine &course_over_ground_deg, &UTC_time) == true) { - struct tm tstruct; + struct tm tstruct = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr}; char buf1[80]; tstruct = *gmtime(&UTC_time); strftime(buf1, sizeof(buf1), "%d/%m/%Y %H:%M:%S", &tstruct); @@ -173,7 +171,7 @@ std::string TcpCmdInterface::hotstart(const std::vector &commandLin if (commandLine.size() > 5) { // Read commandline time parameter - struct tm tm; + struct tm tm = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr}; if (strptime(commandLine.at(1).c_str(), "%d/%m/%Y %H:%M:%S", &tm) == nullptr) { response = "ERROR: time parameter malformed\n"; @@ -219,7 +217,7 @@ std::string TcpCmdInterface::warmstart(const std::vector &commandLi { std::string tmp_str; // Read commandline time parameter - struct tm tm; + struct tm tm = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr}; tmp_str = commandLine.at(1) + commandLine.at(2); if (strptime(commandLine.at(1).c_str(), "%d/%m/%Y %H:%M:%S", &tm) == nullptr) { @@ -336,7 +334,7 @@ void TcpCmdInterface::run_cmd_server(int tcp_port) { try { - if (cmd_vector.at(0).compare("exit") == 0) + if (cmd_vector.at(0) == "exit") { error = boost::asio::error::eof; // send cmd response diff --git a/src/core/receiver/tcp_cmd_interface.h b/src/core/receiver/tcp_cmd_interface.h index 2323e357d..4cafb898d 100644 --- a/src/core/receiver/tcp_cmd_interface.h +++ b/src/core/receiver/tcp_cmd_interface.h @@ -1,7 +1,7 @@ /*! * \file tcp_cmd_interface.h * - * \brief Class that implements a TCP telecontrol command line interface + * \brief Class that implements a TCP/IP telecommand command line interface * for GNSS-SDR * \author Javier Arribas jarribas (at) cttc.es * ------------------------------------------------------------------------- @@ -28,23 +28,24 @@ * * ------------------------------------------------------------------------- */ -#ifndef GNSS_SDR_TCPCMDINTERFACE_H_ -#define GNSS_SDR_TCPCMDINTERFACE_H_ +#ifndef GNSS_SDR_TCP_CMD_INTERFACE_H_ +#define GNSS_SDR_TCP_CMD_INTERFACE_H_ #include "pvt_interface.h" +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include +#include + class TcpCmdInterface { @@ -53,10 +54,12 @@ public: virtual ~TcpCmdInterface(); void run_cmd_server(int tcp_port); void set_msg_queue(gr::msg_queue::sptr control_queue); + /*! * \brief gets the UTC time parsed from the last TC command issued */ time_t get_utc_time(); + /*! * \brief gets the Latitude, Longitude and Altitude vector from the last TC command issued */ @@ -89,4 +92,4 @@ private: std::shared_ptr PVT_sptr_; }; -#endif /* GNSS_SDR_TCPCMDINTERFACE_H_ */ +#endif /* GNSS_SDR_TCP_CMD_INTERFACE_H_ */ diff --git a/src/core/system_parameters/Beidou_B1I.h b/src/core/system_parameters/Beidou_B1I.h index 2dbe6e8c8..18dc7f34b 100644 --- a/src/core/system_parameters/Beidou_B1I.h +++ b/src/core/system_parameters/Beidou_B1I.h @@ -90,7 +90,8 @@ const int BEIDOU_SUBFRAME_SECONDS = 6; //!< Subframe duration [s const int BEIDOU_SUBFRAME_MS = 6000; //!< Subframe duration [miliseconds] const int BEIDOU_WORD_BITS = 30; //!< Number of bits per word in the NAV message [bits] - +const int BEIDOU_DNAV_PREAMBLE_LENGTH_BITS = 11; +const int BEIDOU_DNAV_PREAMBLE_LENGTH_SYMBOLS = 220; // ************** // BEIDOU D1 NAVIGATION MESSAGE STRUCTURE // GENERAL diff --git a/src/core/system_parameters/GLONASS_L1_L2_CA.h b/src/core/system_parameters/GLONASS_L1_L2_CA.h index 27a7425d8..816b2c9aa 100644 --- a/src/core/system_parameters/GLONASS_L1_L2_CA.h +++ b/src/core/system_parameters/GLONASS_L1_L2_CA.h @@ -33,12 +33,12 @@ #ifndef GNSS_SDR_GLONASS_L1_L2_CA_H_ #define GNSS_SDR_GLONASS_L1_L2_CA_H_ -#include "gnss_frequencies.h" #include "MATH_CONSTANTS.h" +#include "gnss_frequencies.h" #include #include -#include #include // std::pair +#include // Physical constants diff --git a/src/core/system_parameters/GPS_CNAV.h b/src/core/system_parameters/GPS_CNAV.h index 2fbad6e2d..025230930 100644 --- a/src/core/system_parameters/GPS_CNAV.h +++ b/src/core/system_parameters/GPS_CNAV.h @@ -34,8 +34,8 @@ #include "MATH_CONSTANTS.h" #include -#include #include // std::pair +#include // CNAV GPS NAVIGATION MESSAGE STRUCTURE @@ -54,7 +54,7 @@ const int32_t GPS_CNAV_DATA_PAGE_BITS = 300; const std::vector > CNAV_PRN({{9, 6}}); const std::vector > CNAV_MSG_TYPE({{15, 6}}); const std::vector > CNAV_TOW({{21, 17}}); // GPS Time Of Week in seconds -const double CNAV_TOW_LSB = 6.0; +const int32_t CNAV_TOW_LSB = 6; const std::vector > CNAV_ALERT_FLAG({{38, 1}}); // MESSAGE TYPE 10 (Ephemeris 1) @@ -62,11 +62,11 @@ const std::vector > CNAV_ALERT_FLAG({{38, 1}}); const std::vector > CNAV_WN({{39, 13}}); const std::vector > CNAV_HEALTH({{52, 3}}); const std::vector > CNAV_TOP1({{55, 11}}); -const double CNAV_TOP1_LSB = 300.0; +const int32_t CNAV_TOP1_LSB = 300; const std::vector > CNAV_URA({{66, 5}}); const std::vector > CNAV_TOE1({{71, 11}}); -const double CNAV_TOE1_LSB = 300.0; +const int32_t CNAV_TOE1_LSB = 300; const std::vector > CNAV_DELTA_A({{82, 26}}); // Relative to AREF = 26,559,710 meters const double CNAV_DELTA_A_LSB = TWO_N9; @@ -90,7 +90,7 @@ const std::vector > CNAV_L2_PHASING_FLAG({{273, 1}}) // MESSAGE TYPE 11 (Ephemeris 2) const std::vector > CNAV_TOE2({{39, 11}}); -const double CNAV_TOE2_LSB = 300.0; +const int32_t CNAV_TOE2_LSB = 300; const std::vector > CNAV_OMEGA0({{50, 33}}); const double CNAV_OMEGA0_LSB = TWO_N32 * PI; // semi-circles to radians const std::vector > CNAV_I0({{83, 33}}); @@ -116,12 +116,12 @@ const double CNAV_CUC_LSB = TWO_N30; // MESSAGE TYPE 30 (CLOCK, IONO, GRUP DELAY) const std::vector > CNAV_TOP2({{39, 11}}); -const double CNAV_TOP2_LSB = 300.0; +const int32_t CNAV_TOP2_LSB = 300; const std::vector > CNAV_URA_NED0({{50, 5}}); const std::vector > CNAV_URA_NED1({{55, 3}}); const std::vector > CNAV_URA_NED2({{58, 3}}); const std::vector > CNAV_TOC({{61, 11}}); -const double CNAV_TOC_LSB = 300.0; +const int32_t CNAV_TOC_LSB = 300; const std::vector > CNAV_AF0({{72, 26}}); const double CNAV_AF0_LSB = TWO_N35; const std::vector > CNAV_AF1({{98, 20}}); @@ -167,17 +167,17 @@ const double CNAV_A1_LSB = TWO_N51; const std::vector > CNAV_A2({{157, 7}}); const double CNAV_A2_LSB = TWO_N68; const std::vector > CNAV_DELTA_TLS({{164, 8}}); -const double CNAV_DELTA_TLS_LSB = 1; +const int32_t CNAV_DELTA_TLS_LSB = 1; const std::vector > CNAV_TOT({{172, 16}}); -const double CNAV_TOT_LSB = TWO_P4; +const int32_t CNAV_TOT_LSB = TWO_P4; const std::vector > CNAV_WN_OT({{188, 13}}); -const double CNAV_WN_OT_LSB = 1; +const int32_t CNAV_WN_OT_LSB = 1; const std::vector > CNAV_WN_LSF({{201, 13}}); -const double CNAV_WN_LSF_LSB = 1; +const int32_t CNAV_WN_LSF_LSB = 1; const std::vector > CNAV_DN({{214, 4}}); -const double CNAV_DN_LSB = 1; +const int32_t CNAV_DN_LSB = 1; const std::vector > CNAV_DELTA_TLSF({{218, 8}}); -const double CNAV_DELTA_TLSF_LSB = 1; +const int32_t CNAV_DELTA_TLSF_LSB = 1; // TODO: Add more frames (Almanac, etc...) diff --git a/src/core/system_parameters/GPS_L1_CA.h b/src/core/system_parameters/GPS_L1_CA.h index e3a3871f7..349897994 100644 --- a/src/core/system_parameters/GPS_L1_CA.h +++ b/src/core/system_parameters/GPS_L1_CA.h @@ -32,11 +32,11 @@ #ifndef GNSS_SDR_GPS_L1_CA_H_ #define GNSS_SDR_GPS_L1_CA_H_ -#include "gnss_frequencies.h" #include "MATH_CONSTANTS.h" +#include "gnss_frequencies.h" #include -#include #include // std::pair +#include // Physical constants @@ -57,6 +57,9 @@ const double GPS_L1_CA_CODE_PERIOD = 0.001; //!< GPS L1 C/A code period const uint32_t GPS_L1_CA_CODE_PERIOD_MS = 1U; //!< GPS L1 C/A code period [ms] const double GPS_L1_CA_CHIP_PERIOD = 9.7752e-07; //!< GPS L1 C/A chip period [seconds] +//optimum parameters +const uint32_t GPS_L1_CA_OPT_ACQ_FS_HZ = 1000000; //!< Sampling frequncy that maximizes the acquisition SNR while using a non-multiple of chip rate + /*! * \brief Maximum Time-Of-Arrival (TOA) difference between satellites for a receiver operated on Earth surface is 20 ms * @@ -115,7 +118,7 @@ const std::vector> T_GD({{197, 8}}); const double T_GD_LSB = TWO_N31; const std::vector> IODC({{83, 2}, {211, 8}}); const std::vector> T_OC({{219, 16}}); -const double T_OC_LSB = TWO_P4; +const int32_t T_OC_LSB = static_cast(TWO_P4); const std::vector> A_F2({{241, 8}}); const double A_F2_LSB = TWO_N55; const std::vector> A_F1({{249, 16}}); @@ -140,7 +143,7 @@ const double C_US_LSB = TWO_N29; const std::vector> SQRT_A({{227, 8}, {241, 24}}); const double SQRT_A_LSB = TWO_N19; const std::vector> T_OE({{271, 16}}); -const double T_OE_LSB = TWO_P4; +const int32_t T_OE_LSB = static_cast(TWO_P4); const std::vector> FIT_INTERVAL_FLAG({{271, 1}}); const std::vector> AODO({{272, 5}}); const int32_t AODO_LSB = 900; @@ -221,7 +224,7 @@ const std::vector> HEALTH_SV32({{283, 6}}); // page 25 - Health (PRN 1 - 24) const std::vector> T_OA({{69, 8}}); -const double T_OA_LSB = TWO_P12; +const int32_t T_OA_LSB = TWO_P12; const std::vector> WN_A({{77, 8}}); const std::vector> HEALTH_SV1({{91, 6}}); const std::vector> HEALTH_SV2({{97, 6}}); diff --git a/src/core/system_parameters/GPS_L2C.h b/src/core/system_parameters/GPS_L2C.h index b156dfe4a..40986fd5b 100644 --- a/src/core/system_parameters/GPS_L2C.h +++ b/src/core/system_parameters/GPS_L2C.h @@ -33,12 +33,12 @@ #define GNSS_SDR_GPS_L2C_H_ -#include "gnss_frequencies.h" #include "GPS_CNAV.h" #include "MATH_CONSTANTS.h" +#include "gnss_frequencies.h" #include -#include #include // std::pair +#include // Physical constants @@ -63,6 +63,10 @@ const double GPS_L2_L_PERIOD = 1.5; //!< GPS L2 L code period [s const int32_t GPS_L2C_HISTORY_DEEP = 5; +//optimum parameters +const uint32_t GPS_L2C_OPT_ACQ_FS_HZ = 1000000; //!< Sampling frequncy that maximizes the acquisition SNR while using a non-multiple of chip rate + + const int32_t GPS_L2C_M_INIT_REG[115] = {0742417664, 0756014035, 0002747144, 0066265724, // 1:4 0601403471, 0703232733, 0124510070, 0617316361, // 5:8 diff --git a/src/core/system_parameters/GPS_L5.h b/src/core/system_parameters/GPS_L5.h index fe270f204..ff669d8b0 100644 --- a/src/core/system_parameters/GPS_L5.h +++ b/src/core/system_parameters/GPS_L5.h @@ -32,9 +32,9 @@ #ifndef GNSS_SDR_GPS_L5_H_ #define GNSS_SDR_GPS_L5_H_ -#include "gnss_frequencies.h" #include "GPS_CNAV.h" #include "MATH_CONSTANTS.h" +#include "gnss_frequencies.h" #include #include @@ -64,6 +64,9 @@ const double GPS_L5q_PERIOD = 0.001; //!< GPS L5 code period [secon const int32_t GPS_L5_HISTORY_DEEP = 5; +//optimum parameters +const uint32_t GPS_L5_OPT_ACQ_FS_HZ = 10000000; //!< Sampling frequncy that maximizes the acquisition SNR while using a non-multiple of chip rate + const int32_t GPS_L5i_INIT_REG[210] = {266, 365, 804, 1138, 1509, 1559, 1756, 2084, diff --git a/src/core/system_parameters/Galileo_E1.h b/src/core/system_parameters/Galileo_E1.h index cdb43af0a..4c9048c11 100644 --- a/src/core/system_parameters/Galileo_E1.h +++ b/src/core/system_parameters/Galileo_E1.h @@ -33,12 +33,12 @@ #ifndef GNSS_SDR_GALILEO_E1_H_ #define GNSS_SDR_GALILEO_E1_H_ -#include "gnss_frequencies.h" #include "MATH_CONSTANTS.h" +#include "gnss_frequencies.h" #include #include -#include #include // std::pair +#include // Physical constants @@ -63,6 +63,11 @@ const int32_t Galileo_E1_B_SAMPLES_PER_SYMBOL = 1; //!< (Galileo_E1_CODE_ const int32_t Galileo_E1_C_SECONDARY_CODE_LENGTH = 25; //!< Galileo E1-C secondary code length [chips] const int32_t Galileo_E1_NUMBER_OF_CODES = 50; + +//optimum parameters +const uint32_t Galileo_E1_OPT_ACQ_FS_HZ = 2000000; //!< Sampling frequncy that maximizes the acquisition SNR while using a non-multiple of chip rate + + const double GALILEO_STARTOFFSET_ms = 68.802; //[ms] Initial sign. travel time (this cannot go here) @@ -97,7 +102,7 @@ const std::vector> PAGE_TYPE_bit({{1, 6}}); /*Page 1 - Word type 1: Ephemeris (1/4)*/ const std::vector> IOD_nav_1_bit({{7, 10}}); const std::vector> T0E_1_bit({{17, 14}}); -const double t0e_1_LSB = 60; +const int32_t t0e_1_LSB = 60; const std::vector> M0_1_bit({{31, 32}}); const double M0_1_LSB = PI_TWO_N31; const std::vector> e_1_bit({{63, 32}}); @@ -145,7 +150,7 @@ const double C_ic_4_LSB = TWO_N29; const std::vector> C_is_4_bit({{39, 16}}); const double C_is_4_LSB = TWO_N29; const std::vector> t0c_4_bit({{55, 14}}); // -const double t0c_4_LSB = 60; +const int32_t t0c_4_LSB = 60; const std::vector> af0_4_bit({{69, 31}}); // const double af0_4_LSB = TWO_N34; const std::vector> af1_4_bit({{100, 21}}); // @@ -192,7 +197,7 @@ const std::vector> A1_6_bit({{39, 24}}); const double A1_6_LSB = TWO_N50; const std::vector> Delta_tLS_6_bit({{63, 8}}); const std::vector> t0t_6_bit({{71, 8}}); -const double t0t_6_LSB = 3600; +const int32_t t0t_6_LSB = 3600; const std::vector> WNot_6_bit({{79, 8}}); const std::vector> WN_LSF_6_bit({{87, 8}}); const std::vector> DN_6_bit({{95, 3}}); @@ -204,7 +209,7 @@ const std::vector> TOW_6_bit({{106, 20}}); const std::vector> IOD_a_7_bit({{7, 4}}); const std::vector> WN_a_7_bit({{11, 2}}); const std::vector> t0a_7_bit({{13, 10}}); -const double t0a_7_LSB = 600; +const int32_t t0a_7_LSB = 600; const std::vector> SVID1_7_bit({{23, 6}}); const std::vector> DELTA_A_7_bit({{29, 13}}); const double DELTA_A_7_LSB = TWO_N9; @@ -249,7 +254,7 @@ const double Omega_dot_8_LSB = TWO_N33; const std::vector> IOD_a_9_bit({{7, 4}}); const std::vector> WN_a_9_bit({{11, 2}}); const std::vector> t0a_9_bit({{13, 10}}); -const double t0a_9_LSB = 600; +const int32_t t0a_9_LSB = 600; const std::vector> M0_9_bit({{23, 16}}); const double M0_9_LSB = TWO_N15; const std::vector> af0_9_bit({{39, 16}}); @@ -288,7 +293,7 @@ const double A_0G_10_LSB = TWO_N35; const std::vector> A_1G_10_bit({{103, 12}}); const double A_1G_10_LSB = TWO_N51; const std::vector> t_0G_10_bit({{115, 8}}); -const double t_0G_10_LSB = 3600; +const int32_t t_0G_10_LSB = 3600; const std::vector> WN_0G_10_bit({{123, 6}}); diff --git a/src/core/system_parameters/Galileo_E5a.h b/src/core/system_parameters/Galileo_E5a.h index ea84ab3c9..cf7e56ce1 100644 --- a/src/core/system_parameters/Galileo_E5a.h +++ b/src/core/system_parameters/Galileo_E5a.h @@ -31,12 +31,12 @@ #ifndef GNSS_SDR_GALILEO_E5A_H_ #define GNSS_SDR_GALILEO_E5A_H_ -#include "gnss_frequencies.h" #include "MATH_CONSTANTS.h" +#include "gnss_frequencies.h" #include #include -#include #include // std::pair +#include // Carrier and code frequencies @@ -57,6 +57,9 @@ const int32_t Galileo_E5a_NUMBER_OF_CODES = 50; const int32_t GALILEO_E5A_HISTORY_DEEP = 20; const int32_t GALILEO_E5A_CRC_ERROR_LIMIT = 6; +//optimum parameters +const uint32_t Galileo_E5a_OPT_ACQ_FS_HZ = 10000000; //!< Sampling frequncy that maximizes the acquisition SNR while using a non-multiple of chip rate + // F/NAV message structure const int32_t GALILEO_FNAV_PREAMBLE_LENGTH_BITS = 12; @@ -80,7 +83,7 @@ const std::vector> FNAV_PAGE_TYPE_bit({{1, 6}}); const std::vector> FNAV_SV_ID_PRN_1_bit({{7, 6}}); const std::vector> FNAV_IODnav_1_bit({{13, 10}}); const std::vector> FNAV_t0c_1_bit({{23, 14}}); -const double FNAV_t0c_1_LSB = 60; +const int32_t FNAV_t0c_1_LSB = 60; const std::vector> FNAV_af0_1_bit({{37, 31}}); const double FNAV_af0_1_LSB = TWO_N34; const std::vector> FNAV_af1_1_bit({{68, 21}}); @@ -140,7 +143,7 @@ const double FNAV_Crc_3_LSB = TWO_N5; const std::vector> FNAV_Crs_3_bit({{145, 16}}); const double FNAV_Crs_3_LSB = TWO_N5; const std::vector> FNAV_t0e_3_bit({{161, 14}}); -const double FNAV_t0e_3_LSB = 60; +const int32_t FNAV_t0e_3_LSB = 60; const std::vector> FNAV_WN_3_bit({{175, 12}}); const std::vector> FNAV_TOW_3_bit({{187, 20}}); @@ -156,13 +159,13 @@ const std::vector> FNAV_A1_4_bit({{81, 24}}); const double FNAV_A1_4_LSB = TWO_N50; const std::vector> FNAV_deltatls_4_bit({{105, 8}}); const std::vector> FNAV_t0t_4_bit({{113, 8}}); -const double FNAV_t0t_4_LSB = 3600; +const int32_t FNAV_t0t_4_LSB = 3600; const std::vector> FNAV_WNot_4_bit({{121, 8}}); const std::vector> FNAV_WNlsf_4_bit({{129, 8}}); const std::vector> FNAV_DN_4_bit({{137, 3}}); const std::vector> FNAV_deltatlsf_4_bit({{140, 8}}); const std::vector> FNAV_t0g_4_bit({{148, 8}}); -const double FNAV_t0g_4_LSB = 3600; +const int32_t FNAV_t0g_4_LSB = 3600; const std::vector> FNAV_A0g_4_bit({{156, 16}}); const double FNAV_A0g_4_LSB = TWO_N35; const std::vector> FNAV_A1g_4_bit({{172, 12}}); @@ -174,7 +177,7 @@ const std::vector> FNAV_TOW_4_bit({{190, 20}}); const std::vector> FNAV_IODa_5_bit({{7, 4}}); const std::vector> FNAV_WNa_5_bit({{11, 2}}); const std::vector> FNAV_t0a_5_bit({{13, 10}}); -const double FNAV_t0a_5_LSB = 600; +const int32_t FNAV_t0a_5_LSB = 600; const std::vector> FNAV_SVID1_5_bit({{23, 6}}); const std::vector> FNAV_Deltaa12_1_5_bit({{29, 13}}); const double FNAV_Deltaa12_5_LSB = TWO_N9; diff --git a/src/core/system_parameters/MATH_CONSTANTS.h b/src/core/system_parameters/MATH_CONSTANTS.h index b85643555..7acb8270a 100644 --- a/src/core/system_parameters/MATH_CONSTANTS.h +++ b/src/core/system_parameters/MATH_CONSTANTS.h @@ -31,7 +31,7 @@ #ifndef GNSS_SDR_MATH_CONSTANTS_H_ #define GNSS_SDR_MATH_CONSTANTS_H_ -#include +#include /* Constants for scaling the ephemeris found in the data message the format is the following: TWO_N5 -> 2^-5, TWO_P4 -> 2^4, PI_TWO_N43 -> Pi*2^-43, etc etc diff --git a/src/core/system_parameters/galileo_almanac_helper.h b/src/core/system_parameters/galileo_almanac_helper.h index 1b2e1b28e..960ccd09e 100644 --- a/src/core/system_parameters/galileo_almanac_helper.h +++ b/src/core/system_parameters/galileo_almanac_helper.h @@ -45,7 +45,7 @@ public: // Word type 7: Almanac for SVID1 (1/2), almanac reference time and almanac reference week number int32_t IOD_a_7; int32_t WN_a_7; - double t0a_7; + int32_t t0a_7; int32_t SVID1_7; double DELTA_A_7; double e_7; @@ -73,7 +73,7 @@ public: // Word type 9: Almanac for SVID2 (2/2) and SVID3 (1/2) int32_t IOD_a_9; int32_t WN_a_9; - double t0a_9; + int32_t t0a_9; double M0_9; double af0_9; double af1_9; diff --git a/src/core/system_parameters/galileo_ephemeris.cc b/src/core/system_parameters/galileo_ephemeris.cc index 0c1021048..a606b2d20 100644 --- a/src/core/system_parameters/galileo_ephemeris.cc +++ b/src/core/system_parameters/galileo_ephemeris.cc @@ -54,26 +54,26 @@ Galileo_Ephemeris::Galileo_Ephemeris() C_rs_3 = 0.0; // Amplitude of the sine harmonic correction term to the orbit radius [meters] C_ic_4 = 0.0; // Amplitude of the cosine harmonic correction term to the angle of inclination [radians] C_is_4 = 0.0; // Amplitude of the sine harmonic correction term to the angle of inclination [radians] - t0e_1 = 0.0; // Ephemeris reference time [s] + t0e_1 = 0; // Ephemeris reference time [s] // Clock correction parameters - t0c_4 = 0.0; // Clock correction data reference Time of Week [sec] + t0c_4 = 0; // Clock correction data reference Time of Week [sec] af0_4 = 0.0; // SV clock bias correction coefficient [s] af1_4 = 0.0; // SV clock drift correction coefficient [s/s] af2_4 = 0.0; // SV clock drift rate correction coefficient [s/s^2] // GST - WN_5 = 0.0; - TOW_5 = 0.0; + WN_5 = 0; + TOW_5 = 0; // SV status - SISA_3 = 0.0; - E5a_HS = 0U; - E5b_HS_5 = 0.0; - E1B_HS_5 = 0.0; + SISA_3 = 0; + E5a_HS = 0; + E5b_HS_5 = 0; + E1B_HS_5 = 0; E5a_DVS = false; - E5b_DVS_5 = 0.0; - E1B_DVS_5 = 0.0; + E5b_DVS_5 = false; + E1B_DVS_5 = false; BGD_E1E5a_5 = 0.0; // E1-E5a Broadcast Group Delay [s] BGD_E1E5b_5 = 0.0; // E1-E5b Broadcast Group Delay [s] diff --git a/src/core/system_parameters/galileo_ephemeris.h b/src/core/system_parameters/galileo_ephemeris.h index fd844adf2..75d2bdbd9 100644 --- a/src/core/system_parameters/galileo_ephemeris.h +++ b/src/core/system_parameters/galileo_ephemeris.h @@ -67,29 +67,29 @@ public: double C_rs_3; //!< Amplitude of the sine harmonic correction term to the orbit radius [meters] double C_ic_4; //!< Amplitude of the cosine harmonic correction term to the angle of inclination [radians] double C_is_4; //!< Amplitude of the sine harmonic correction term to the angle of inclination [radians] - double t0e_1; //!< Ephemeris reference time [s] + int32_t t0e_1; //!< Ephemeris reference time [s] /*Clock correction parameters*/ - double t0c_4; //!< Clock correction data reference Time of Week [sec] - double af0_4; //!< SV clock bias correction coefficient [s] - double af1_4; //!< SV clock drift correction coefficient [s/s] - double af2_4; //!< SV clock drift rate correction coefficient [s/s^2] + int32_t t0c_4; //!< Clock correction data reference Time of Week [sec] + double af0_4; //!< SV clock bias correction coefficient [s] + double af1_4; //!< SV clock drift correction coefficient [s/s] + double af2_4; //!< SV clock drift rate correction coefficient [s/s^2] /*GST*/ - //Not belong to ephemeris set (page 1 to 4) - double WN_5; //!< Week number - double TOW_5; //!< Time of Week + // Not belong to ephemeris set (page 1 to 4) + int32_t WN_5; //!< Week number + int32_t TOW_5; //!< Time of Week double Galileo_satClkDrift; double Galileo_dtr; //!< relativistic clock correction term // SV status - double SISA_3; - uint32_t E5a_HS; //!< E5a Signal Health Status - double E5b_HS_5; //!< E5b Signal Health Status - double E1B_HS_5; //!< E1B Signal Health Status + int32_t SISA_3; + int32_t E5a_HS; //!< E5a Signal Health Status + int32_t E5b_HS_5; //!< E5b Signal Health Status + int32_t E1B_HS_5; //!< E1B Signal Health Status bool E5a_DVS; //!< E5a Data Validity Status - double E5b_DVS_5; //!< E5b Data Validity Status - double E1B_DVS_5; //!< E1B Data Validity Status + bool E5b_DVS_5; //!< E5b Data Validity Status + bool E1B_DVS_5; //!< E1B Data Validity Status double BGD_E1E5a_5; //!< E1-E5a Broadcast Group Delay [s] double BGD_E1E5b_5; //!< E1-E5b Broadcast Group Delay [s] diff --git a/src/core/system_parameters/galileo_fnav_message.cc b/src/core/system_parameters/galileo_fnav_message.cc index 33cd59056..b7fa86e3c 100644 --- a/src/core/system_parameters/galileo_fnav_message.cc +++ b/src/core/system_parameters/galileo_fnav_message.cc @@ -41,7 +41,7 @@ #include -typedef boost::crc_optimal<24, 0x1864CFBu, 0x0, 0x0, false, false> CRC_Galileo_FNAV_type; +using CRC_Galileo_FNAV_type = boost::crc_optimal<24, 0x1864CFBu, 0x0, 0x0, false, false>; void Galileo_Fnav_Message::reset() { @@ -70,11 +70,11 @@ void Galileo_Fnav_Message::reset() // health and Data validity status FNAV_SV_ID_PRN_1 = 0; FNAV_IODnav_1 = -1; - FNAV_t0c_1 = 0.0; + FNAV_t0c_1 = 0; FNAV_af0_1 = 0.0; FNAV_af1_1 = 0.0; FNAV_af2_1 = 0.0; - FNAV_SISA_1 = 0.0; + FNAV_SISA_1 = 0; FNAV_ai0_1 = 0.0; FNAV_ai1_1 = 0.0; FNAV_ai2_1 = 0.0; @@ -84,9 +84,9 @@ void Galileo_Fnav_Message::reset() FNAV_region4_1 = false; FNAV_region5_1 = false; FNAV_BGD_1 = 0.0; - FNAV_E5ahs_1 = 0.0; - FNAV_WN_1 = 0.0; - FNAV_TOW_1 = 0.0; + FNAV_E5ahs_1 = 0; + FNAV_WN_1 = 0; + FNAV_TOW_1 = 0; FNAV_E5advs_1 = false; // WORD 2 Ephemeris (1/3) and GST @@ -97,8 +97,8 @@ void Galileo_Fnav_Message::reset() FNAV_a12_2 = 0.0; FNAV_omega0_2 = 0.0; FNAV_idot_2 = 0.0; - FNAV_WN_2 = 0.0; - FNAV_TOW_2 = 0.0; + FNAV_WN_2 = 0; + FNAV_TOW_2 = 0; // WORD 3 Ephemeris (2/3) and GST FNAV_IODnav_3 = -3; @@ -109,9 +109,9 @@ void Galileo_Fnav_Message::reset() FNAV_Cus_3 = 0.0; FNAV_Crc_3 = 0.0; FNAV_Crs_3 = 0.0; - FNAV_t0e_3 = 0.0; - FNAV_WN_3 = 0.0; - FNAV_TOW_3 = 0.0; + FNAV_t0e_3 = 0; + FNAV_WN_3 = 0; + FNAV_TOW_3 = 0; // WORD 4 Ephemeris (3/3), GST-UTC conversion, GST-GPS conversion and TOW. // Note that the clock is repeated in this page type @@ -120,22 +120,22 @@ void Galileo_Fnav_Message::reset() FNAV_Cis_4 = 0.0; FNAV_A0_4 = 0.0; FNAV_A1_4 = 0.0; - FNAV_deltatls_4 = 0.0; - FNAV_t0t_4 = 0.0; - FNAV_WNot_4 = 0.0; - FNAV_WNlsf_4 = 0.0; - FNAV_DN_4 = 0.0; - FNAV_deltatlsf_4 = 0.0; - FNAV_t0g_4 = 0.0; + FNAV_deltatls_4 = 0; + FNAV_t0t_4 = 0; + FNAV_WNot_4 = 0; + FNAV_WNlsf_4 = 0; + FNAV_DN_4 = 0; + FNAV_deltatlsf_4 = 0; + FNAV_t0g_4 = 0; FNAV_A0g_4 = 0.0; FNAV_A1g_4 = 0.0; - FNAV_WN0g_4 = 0.0; - FNAV_TOW_4 = 0.0; + FNAV_WN0g_4 = 0; + FNAV_TOW_4 = 0; // WORD 5 Almanac (SVID1 and SVID2(1/2)), Week Number and almanac reference time FNAV_IODa_5 = 0; - FNAV_WNa_5 = 0.0; - FNAV_t0a_5 = 0.0; + FNAV_WNa_5 = 0; + FNAV_t0a_5 = 0; FNAV_SVID1_5 = 0; FNAV_Deltaa12_1_5 = 0.0; FNAV_e_1_5 = 0.0; @@ -160,7 +160,7 @@ void Galileo_Fnav_Message::reset() FNAV_M0_2_6 = 0.0; FNAV_af0_2_6 = 0.0; FNAV_af1_2_6 = 0.0; - FNAV_E5ahs_2_6 = 0.0; + FNAV_E5ahs_2_6 = 0; FNAV_SVID3_6 = 0; FNAV_Deltaa12_3_6 = 0.0; FNAV_e_3_6 = 0.0; @@ -171,7 +171,7 @@ void Galileo_Fnav_Message::reset() FNAV_M0_3_6 = 0.0; FNAV_af0_3_6 = 0.0; FNAV_af1_3_6 = 0.0; - FNAV_E5ahs_3_6 = 0.0; + FNAV_E5ahs_3_6 = 0; } @@ -181,7 +181,7 @@ Galileo_Fnav_Message::Galileo_Fnav_Message() } -void Galileo_Fnav_Message::split_page(std::string page_string) +void Galileo_Fnav_Message::split_page(const std::string& page_string) { std::string message_word = page_string.substr(0, 214); std::string CRC_data = page_string.substr(214, 24); @@ -224,14 +224,12 @@ bool Galileo_Fnav_Message::_CRC_test(std::bitset b { return true; } - else - { - return false; - } + + return false; } -void Galileo_Fnav_Message::decode_page(std::string data) +void Galileo_Fnav_Message::decode_page(const std::string& data) { std::bitset data_bits(data); page_type = read_navigation_unsigned(data_bits, FNAV_PAGE_TYPE_bit); @@ -240,7 +238,7 @@ void Galileo_Fnav_Message::decode_page(std::string data) case 1: // SVID, Clock correction, SISA, Ionospheric correction, BGD, GST, Signal health and Data validity status FNAV_SV_ID_PRN_1 = static_cast(read_navigation_unsigned(data_bits, FNAV_SV_ID_PRN_1_bit)); FNAV_IODnav_1 = static_cast(read_navigation_unsigned(data_bits, FNAV_IODnav_1_bit)); - FNAV_t0c_1 = static_cast(read_navigation_unsigned(data_bits, FNAV_t0c_1_bit)); + FNAV_t0c_1 = static_cast(read_navigation_unsigned(data_bits, FNAV_t0c_1_bit)); FNAV_t0c_1 *= FNAV_t0c_1_LSB; FNAV_af0_1 = static_cast(read_navigation_signed(data_bits, FNAV_af0_1_bit)); FNAV_af0_1 *= FNAV_af0_1_LSB; @@ -248,7 +246,7 @@ void Galileo_Fnav_Message::decode_page(std::string data) FNAV_af1_1 *= FNAV_af1_1_LSB; FNAV_af2_1 = static_cast(read_navigation_signed(data_bits, FNAV_af2_1_bit)); FNAV_af2_1 *= FNAV_af2_1_LSB; - FNAV_SISA_1 = static_cast(read_navigation_unsigned(data_bits, FNAV_SISA_1_bit)); + FNAV_SISA_1 = static_cast(read_navigation_unsigned(data_bits, FNAV_SISA_1_bit)); FNAV_ai0_1 = static_cast(read_navigation_unsigned(data_bits, FNAV_ai0_1_bit)); FNAV_ai0_1 *= FNAV_ai0_1_LSB; FNAV_ai1_1 = static_cast(read_navigation_signed(data_bits, FNAV_ai1_1_bit)); @@ -263,8 +261,8 @@ void Galileo_Fnav_Message::decode_page(std::string data) FNAV_BGD_1 = static_cast(read_navigation_signed(data_bits, FNAV_BGD_1_bit)); FNAV_BGD_1 *= FNAV_BGD_1_LSB; FNAV_E5ahs_1 = static_cast(read_navigation_unsigned(data_bits, FNAV_E5ahs_1_bit)); - FNAV_WN_1 = static_cast(read_navigation_unsigned(data_bits, FNAV_WN_1_bit)); - FNAV_TOW_1 = static_cast(read_navigation_unsigned(data_bits, FNAV_TOW_1_bit)); + FNAV_WN_1 = static_cast(read_navigation_unsigned(data_bits, FNAV_WN_1_bit)); + FNAV_TOW_1 = static_cast(read_navigation_unsigned(data_bits, FNAV_TOW_1_bit)); FNAV_E5advs_1 = static_cast(read_navigation_unsigned(data_bits, FNAV_E5advs_1_bit)); flag_TOW_1 = true; flag_TOW_set = true; @@ -272,7 +270,7 @@ void Galileo_Fnav_Message::decode_page(std::string data) break; case 2: // Ephemeris (1/3) and GST FNAV_IODnav_2 = static_cast(read_navigation_unsigned(data_bits, FNAV_IODnav_2_bit)); - FNAV_M0_2 = static_cast(read_navigation_unsigned(data_bits, FNAV_M0_2_bit)); + FNAV_M0_2 = static_cast(read_navigation_signed(data_bits, FNAV_M0_2_bit)); FNAV_M0_2 *= FNAV_M0_2_LSB; FNAV_omegadot_2 = static_cast(read_navigation_signed(data_bits, FNAV_omegadot_2_bit)); FNAV_omegadot_2 *= FNAV_omegadot_2_LSB; @@ -284,8 +282,8 @@ void Galileo_Fnav_Message::decode_page(std::string data) FNAV_omega0_2 *= FNAV_omega0_2_LSB; FNAV_idot_2 = static_cast(read_navigation_signed(data_bits, FNAV_idot_2_bit)); FNAV_idot_2 *= FNAV_idot_2_LSB; - FNAV_WN_2 = static_cast(read_navigation_unsigned(data_bits, FNAV_WN_2_bit)); - FNAV_TOW_2 = static_cast(read_navigation_unsigned(data_bits, FNAV_TOW_2_bit)); + FNAV_WN_2 = static_cast(read_navigation_unsigned(data_bits, FNAV_WN_2_bit)); + FNAV_TOW_2 = static_cast(read_navigation_unsigned(data_bits, FNAV_TOW_2_bit)); flag_TOW_2 = true; flag_TOW_set = true; flag_ephemeris_1 = true; @@ -296,7 +294,7 @@ void Galileo_Fnav_Message::decode_page(std::string data) FNAV_i0_3 *= FNAV_i0_3_LSB; FNAV_w_3 = static_cast(read_navigation_signed(data_bits, FNAV_w_3_bit)); FNAV_w_3 *= FNAV_w_3_LSB; - FNAV_deltan_3 = static_cast(read_navigation_unsigned(data_bits, FNAV_deltan_3_bit)); + FNAV_deltan_3 = static_cast(read_navigation_signed(data_bits, FNAV_deltan_3_bit)); FNAV_deltan_3 *= FNAV_deltan_3_LSB; FNAV_Cuc_3 = static_cast(read_navigation_signed(data_bits, FNAV_Cuc_3_bit)); FNAV_Cuc_3 *= FNAV_Cuc_3_LSB; @@ -306,39 +304,39 @@ void Galileo_Fnav_Message::decode_page(std::string data) FNAV_Crc_3 *= FNAV_Crc_3_LSB; FNAV_Crs_3 = static_cast(read_navigation_signed(data_bits, FNAV_Crs_3_bit)); FNAV_Crs_3 *= FNAV_Crs_3_LSB; - FNAV_t0e_3 = static_cast(read_navigation_unsigned(data_bits, FNAV_t0e_3_bit)); + FNAV_t0e_3 = static_cast(read_navigation_unsigned(data_bits, FNAV_t0e_3_bit)); FNAV_t0e_3 *= FNAV_t0e_3_LSB; - FNAV_WN_3 = static_cast(read_navigation_unsigned(data_bits, FNAV_WN_3_bit)); - FNAV_TOW_3 = static_cast(read_navigation_unsigned(data_bits, FNAV_TOW_3_bit)); + FNAV_WN_3 = static_cast(read_navigation_unsigned(data_bits, FNAV_WN_3_bit)); + FNAV_TOW_3 = static_cast(read_navigation_unsigned(data_bits, FNAV_TOW_3_bit)); flag_TOW_3 = true; flag_TOW_set = true; flag_ephemeris_2 = true; break; case 4: // Ephemeris (3/3), GST-UTC conversion, GST-GPS conversion and TOW FNAV_IODnav_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_IODnav_4_bit)); - FNAV_Cic_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_Cic_4_bit)); + FNAV_Cic_4 = static_cast(read_navigation_signed(data_bits, FNAV_Cic_4_bit)); FNAV_Cic_4 *= FNAV_Cic_4_LSB; - FNAV_Cis_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_Cis_4_bit)); + FNAV_Cis_4 = static_cast(read_navigation_signed(data_bits, FNAV_Cis_4_bit)); FNAV_Cis_4 *= FNAV_Cis_4_LSB; - FNAV_A0_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_A0_4_bit)); + FNAV_A0_4 = static_cast(read_navigation_signed(data_bits, FNAV_A0_4_bit)); FNAV_A0_4 *= FNAV_A0_4_LSB; - FNAV_A1_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_A1_4_bit)); + FNAV_A1_4 = static_cast(read_navigation_signed(data_bits, FNAV_A1_4_bit)); FNAV_A1_4 *= FNAV_A1_4_LSB; - FNAV_deltatls_4 = static_cast(read_navigation_signed(data_bits, FNAV_deltatls_4_bit)); - FNAV_t0t_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_t0t_4_bit)); + FNAV_deltatls_4 = static_cast(read_navigation_signed(data_bits, FNAV_deltatls_4_bit)); + FNAV_t0t_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_t0t_4_bit)); FNAV_t0t_4 *= FNAV_t0t_4_LSB; - FNAV_WNot_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_WNot_4_bit)); - FNAV_WNlsf_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_WNlsf_4_bit)); - FNAV_DN_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_DN_4_bit)); - FNAV_deltatlsf_4 = static_cast(read_navigation_signed(data_bits, FNAV_deltatlsf_4_bit)); - FNAV_t0g_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_t0g_4_bit)); + FNAV_WNot_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_WNot_4_bit)); + FNAV_WNlsf_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_WNlsf_4_bit)); + FNAV_DN_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_DN_4_bit)); + FNAV_deltatlsf_4 = static_cast(read_navigation_signed(data_bits, FNAV_deltatlsf_4_bit)); + FNAV_t0g_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_t0g_4_bit)); FNAV_t0g_4 *= FNAV_t0g_4_LSB; FNAV_A0g_4 = static_cast(read_navigation_signed(data_bits, FNAV_A0g_4_bit)); FNAV_A0g_4 *= FNAV_A0g_4_LSB; FNAV_A1g_4 = static_cast(read_navigation_signed(data_bits, FNAV_A1g_4_bit)); FNAV_A1g_4 *= FNAV_A1g_4_LSB; - FNAV_WN0g_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_WN0g_4_bit)); - FNAV_TOW_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_TOW_4_bit)); + FNAV_WN0g_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_WN0g_4_bit)); + FNAV_TOW_4 = static_cast(read_navigation_unsigned(data_bits, FNAV_TOW_4_bit)); flag_TOW_4 = true; flag_TOW_set = true; flag_ephemeris_3 = true; @@ -346,8 +344,8 @@ void Galileo_Fnav_Message::decode_page(std::string data) break; case 5: // Almanac (SVID1 and SVID2(1/2)), Week Number and almanac reference time FNAV_IODa_5 = static_cast(read_navigation_unsigned(data_bits, FNAV_IODa_5_bit)); - FNAV_WNa_5 = static_cast(read_navigation_unsigned(data_bits, FNAV_WNa_5_bit)); - FNAV_t0a_5 = static_cast(read_navigation_unsigned(data_bits, FNAV_t0a_5_bit)); + FNAV_WNa_5 = static_cast(read_navigation_unsigned(data_bits, FNAV_WNa_5_bit)); + FNAV_t0a_5 = static_cast(read_navigation_unsigned(data_bits, FNAV_t0a_5_bit)); FNAV_t0a_5 *= FNAV_t0a_5_LSB; FNAV_SVID1_5 = static_cast(read_navigation_unsigned(data_bits, FNAV_SVID1_5_bit)); FNAV_Deltaa12_1_5 = static_cast(read_navigation_signed(data_bits, FNAV_Deltaa12_1_5_bit)); @@ -368,7 +366,7 @@ void Galileo_Fnav_Message::decode_page(std::string data) FNAV_af0_1_5 *= FNAV_af0_5_LSB; FNAV_af1_1_5 = static_cast(read_navigation_signed(data_bits, FNAV_af1_1_5_bit)); FNAV_af1_1_5 *= FNAV_af1_5_LSB; - FNAV_E5ahs_1_5 = static_cast(read_navigation_unsigned(data_bits, FNAV_E5ahs_1_5_bit)); + FNAV_E5ahs_1_5 = static_cast(read_navigation_unsigned(data_bits, FNAV_E5ahs_1_5_bit)); FNAV_SVID2_5 = static_cast(read_navigation_unsigned(data_bits, FNAV_SVID2_5_bit)); FNAV_Deltaa12_2_5 = static_cast(read_navigation_signed(data_bits, FNAV_Deltaa12_2_5_bit)); FNAV_Deltaa12_2_5 *= FNAV_Deltaa12_5_LSB; @@ -404,7 +402,7 @@ void Galileo_Fnav_Message::decode_page(std::string data) FNAV_af0_2_6 *= FNAV_af0_5_LSB; FNAV_af1_2_6 = static_cast(read_navigation_signed(data_bits, FNAV_af1_2_6_bit)); FNAV_af1_2_6 *= FNAV_af1_5_LSB; - FNAV_E5ahs_2_6 = static_cast(read_navigation_unsigned(data_bits, FNAV_E5ahs_2_6_bit)); + FNAV_E5ahs_2_6 = static_cast(read_navigation_unsigned(data_bits, FNAV_E5ahs_2_6_bit)); FNAV_SVID3_6 = static_cast(read_navigation_unsigned(data_bits, FNAV_SVID3_6_bit)); FNAV_Deltaa12_3_6 = static_cast(read_navigation_signed(data_bits, FNAV_Deltaa12_3_6_bit)); FNAV_Deltaa12_3_6 *= FNAV_Deltaa12_5_LSB; @@ -424,7 +422,7 @@ void Galileo_Fnav_Message::decode_page(std::string data) FNAV_af0_3_6 *= FNAV_af0_5_LSB; FNAV_af1_3_6 = static_cast(read_navigation_signed(data_bits, FNAV_af1_3_6_bit)); FNAV_af1_3_6 *= FNAV_af1_5_LSB; - FNAV_E5ahs_3_6 = static_cast(read_navigation_unsigned(data_bits, FNAV_E5ahs_3_6_bit)); + FNAV_E5ahs_3_6 = static_cast(read_navigation_unsigned(data_bits, FNAV_E5ahs_3_6_bit)); flag_almanac_2 = true; break; @@ -432,7 +430,7 @@ void Galileo_Fnav_Message::decode_page(std::string data) } -uint64_t Galileo_Fnav_Message::read_navigation_unsigned(std::bitset bits, const std::vector> parameter) +uint64_t Galileo_Fnav_Message::read_navigation_unsigned(std::bitset bits, const std::vector>& parameter) { uint64_t value = 0ULL; int num_of_slices = parameter.size(); @@ -441,7 +439,7 @@ uint64_t Galileo_Fnav_Message::read_navigation_unsigned(std::bitset(bits[GALILEO_FNAV_DATA_FRAME_BITS - parameter[i].first - j]) == 1) { value += 1; // insert the bit } @@ -451,13 +449,13 @@ uint64_t Galileo_Fnav_Message::read_navigation_unsigned(std::bitset bits, const std::vector> parameter) +int64_t Galileo_Fnav_Message::read_navigation_signed(std::bitset bits, const std::vector>& parameter) { int64_t value = 0LL; int num_of_slices = parameter.size(); // read the MSB and perform the sign extension - if (bits[GALILEO_FNAV_DATA_FRAME_BITS - parameter[0].first] == 1) + if (static_cast(bits[GALILEO_FNAV_DATA_FRAME_BITS - parameter[0].first]) == 1) { value ^= 0x0FFFFFFFFFFFFFFF; // 64 bits variable } @@ -472,7 +470,7 @@ int64_t Galileo_Fnav_Message::read_navigation_signed(std::bitset(bits[GALILEO_FNAV_DATA_FRAME_BITS - parameter[i].first - j]) == 1) { value += 1; // insert the bit } @@ -498,13 +496,8 @@ bool Galileo_Fnav_Message::have_new_ephemeris() // Check if we have a new ephem std::cout << "Batch number: " << IOD_ephemeris << std::endl; return true; } - else - { - return false; - } } - else - return false; + return false; } @@ -513,10 +506,12 @@ bool Galileo_Fnav_Message::have_new_iono_and_GST() // Check if we have a new io if ((flag_iono_and_GST == true) and (flag_utc_model == true)) // the condition on flag_utc_model is added to have a time stamp for iono { flag_iono_and_GST = false; // clear the flag - return true; } else - return false; + { + return false; + } + return true; } @@ -525,10 +520,12 @@ bool Galileo_Fnav_Message::have_new_utc_model() // Check if we have a new utc d if (flag_utc_model == true) { flag_utc_model = false; // clear the flag - return true; } else - return false; + { + return false; + } + return true; } @@ -540,10 +537,12 @@ bool Galileo_Fnav_Message::have_new_almanac() // Check if we have a new almanac flag_almanac_1 = false; flag_almanac_2 = false; flag_all_almanac = true; - return true; } else - return false; + { + return false; + } + return true; } diff --git a/src/core/system_parameters/galileo_fnav_message.h b/src/core/system_parameters/galileo_fnav_message.h index 2a16578be..1bb0ae31d 100644 --- a/src/core/system_parameters/galileo_fnav_message.h +++ b/src/core/system_parameters/galileo_fnav_message.h @@ -38,16 +38,16 @@ #define GNSS_SDR_GALILEO_FNAV_MESSAGE_H_ +#include "Galileo_E5a.h" +#include "galileo_almanac_helper.h" #include "galileo_ephemeris.h" #include "galileo_iono.h" -#include "galileo_almanac_helper.h" #include "galileo_utc_model.h" -#include "Galileo_E5a.h" #include #include #include -#include #include +#include /*! * \brief This class handles the Galileo F/NAV Data message, as described in the @@ -57,7 +57,7 @@ class Galileo_Fnav_Message { public: - void split_page(std::string page_string); + void split_page(const std::string& page_string); void reset(); bool have_new_ephemeris(); bool have_new_iono_and_GST(); @@ -95,11 +95,11 @@ public: // health and Data validity status int32_t FNAV_SV_ID_PRN_1; int32_t FNAV_IODnav_1; - double FNAV_t0c_1; + int32_t FNAV_t0c_1; double FNAV_af0_1; double FNAV_af1_1; double FNAV_af2_1; - double FNAV_SISA_1; + int32_t FNAV_SISA_1; double FNAV_ai0_1; double FNAV_ai1_1; double FNAV_ai2_1; @@ -109,9 +109,9 @@ public: bool FNAV_region4_1; bool FNAV_region5_1; double FNAV_BGD_1; - double FNAV_E5ahs_1; - double FNAV_WN_1; - double FNAV_TOW_1; + int32_t FNAV_E5ahs_1; + int32_t FNAV_WN_1; + int32_t FNAV_TOW_1; bool FNAV_E5advs_1; // WORD 2 Ephemeris (1/3) and GST @@ -122,8 +122,8 @@ public: double FNAV_a12_2; double FNAV_omega0_2; double FNAV_idot_2; - double FNAV_WN_2; - double FNAV_TOW_2; + int32_t FNAV_WN_2; + int32_t FNAV_TOW_2; // WORD 3 Ephemeris (2/3) and GST int32_t FNAV_IODnav_3; @@ -134,9 +134,9 @@ public: double FNAV_Cus_3; double FNAV_Crc_3; double FNAV_Crs_3; - double FNAV_t0e_3; - double FNAV_WN_3; - double FNAV_TOW_3; + int32_t FNAV_t0e_3; + int32_t FNAV_WN_3; + int32_t FNAV_TOW_3; // WORD 4 Ephemeris (3/3), GST-UTC conversion, GST-GPS conversion and TOW. // Note that the clock is repeated in this page type @@ -145,22 +145,22 @@ public: double FNAV_Cis_4; double FNAV_A0_4; double FNAV_A1_4; - double FNAV_deltatls_4; - double FNAV_t0t_4; - double FNAV_WNot_4; - double FNAV_WNlsf_4; - double FNAV_DN_4; - double FNAV_deltatlsf_4; - double FNAV_t0g_4; + int32_t FNAV_deltatls_4; + int32_t FNAV_t0t_4; + int32_t FNAV_WNot_4; + int32_t FNAV_WNlsf_4; + int32_t FNAV_DN_4; + int32_t FNAV_deltatlsf_4; + int32_t FNAV_t0g_4; double FNAV_A0g_4; double FNAV_A1g_4; - double FNAV_WN0g_4; - double FNAV_TOW_4; + int32_t FNAV_WN0g_4; + int32_t FNAV_TOW_4; // WORD 5 Almanac (SVID1 and SVID2(1/2)), Week Number and almanac reference time int32_t FNAV_IODa_5; - double FNAV_WNa_5; - double FNAV_t0a_5; + int32_t FNAV_WNa_5; + int32_t FNAV_t0a_5; int32_t FNAV_SVID1_5; double FNAV_Deltaa12_1_5; double FNAV_e_1_5; @@ -185,7 +185,7 @@ public: double FNAV_M0_2_6; double FNAV_af0_2_6; double FNAV_af1_2_6; - double FNAV_E5ahs_2_6; + int32_t FNAV_E5ahs_2_6; int32_t FNAV_SVID3_6; double FNAV_Deltaa12_3_6; double FNAV_e_3_6; @@ -196,13 +196,13 @@ public: double FNAV_M0_3_6; double FNAV_af0_3_6; double FNAV_af1_3_6; - double FNAV_E5ahs_3_6; + int32_t FNAV_E5ahs_3_6; private: bool _CRC_test(std::bitset bits, uint32_t checksum); - void decode_page(std::string data); - uint64_t read_navigation_unsigned(std::bitset bits, const std::vector> parameter); - int64_t read_navigation_signed(std::bitset bits, const std::vector> parameter); + void decode_page(const std::string& data); + uint64_t read_navigation_unsigned(std::bitset bits, const std::vector>& parameter); + int64_t read_navigation_signed(std::bitset bits, const std::vector>& parameter); std::string omega0_1; //std::string omega0_2; diff --git a/src/core/system_parameters/galileo_iono.cc b/src/core/system_parameters/galileo_iono.cc index d79b2a319..440abbc44 100644 --- a/src/core/system_parameters/galileo_iono.cc +++ b/src/core/system_parameters/galileo_iono.cc @@ -45,6 +45,6 @@ Galileo_Iono::Galileo_Iono() Region4_flag_5 = false; // Ionospheric Disturbance Flag for region 4 Region5_flag_5 = false; // Ionospheric Disturbance Flag for region 5 - TOW_5 = 0.0; - WN_5 = 0.0; + TOW_5 = 0; + WN_5 = 0; } diff --git a/src/core/system_parameters/galileo_iono.h b/src/core/system_parameters/galileo_iono.h index 90c861c12..ab36199c0 100644 --- a/src/core/system_parameters/galileo_iono.h +++ b/src/core/system_parameters/galileo_iono.h @@ -55,8 +55,8 @@ public: bool Region5_flag_5; //!< Ionospheric Disturbance Flag for region 5 // from page 5 (UTC) to have a timestamp - double TOW_5; //!< UTC data reference Time of Week [s] - double WN_5; //!< UTC data reference Week number [week] + int32_t TOW_5; //!< UTC data reference Time of Week [s] + int32_t WN_5; //!< UTC data reference Week number [week] /*! * Default constructor diff --git a/src/core/system_parameters/galileo_navigation_message.cc b/src/core/system_parameters/galileo_navigation_message.cc index 4e72f62d3..7ac22320c 100644 --- a/src/core/system_parameters/galileo_navigation_message.cc +++ b/src/core/system_parameters/galileo_navigation_message.cc @@ -37,7 +37,7 @@ #include -typedef boost::crc_optimal<24, 0x1864CFBu, 0x0, 0x0, false, false> CRC_Galileo_INAV_type; +using CRC_Galileo_INAV_type = boost::crc_optimal<24, 0x1864CFBu, 0x0, 0x0, false, false>; void Galileo_Navigation_Message::reset() @@ -74,7 +74,7 @@ void Galileo_Navigation_Message::reset() // Word type 1: Ephemeris (1/4) IOD_nav_1 = 0; - t0e_1 = 0.0; + t0e_1 = 0; M0_1 = 0.0; e_1 = 0.0; A_1 = 0.0; @@ -94,7 +94,7 @@ void Galileo_Navigation_Message::reset() C_us_3 = 0.0; // Amplitude of the sine harmonic correction term to the argument of latitude [radians] C_rc_3 = 0.0; // Amplitude of the cosine harmonic correction term to the orbit radius [meters] C_rs_3 = 0.0; // Amplitude of the sine harmonic correction term to the orbit radius [meters] - SISA_3 = 0.0; // + SISA_3 = 0; // // Word type 4: Ephemeris (4/4) and Clock correction parameter/ IOD_nav_4 = 0; @@ -103,7 +103,7 @@ void Galileo_Navigation_Message::reset() C_is_4 = 0.0; // Amplitude of the sine harmonic correction term to the angle of inclination [radians] // Clock correction parameters - t0c_4 = 0.0; + t0c_4 = 0; af0_4 = 0.0; af1_4 = 0.0; af2_4 = 0.0; @@ -125,29 +125,29 @@ void Galileo_Navigation_Message::reset() BGD_E1E5b_5 = 0.0; E5b_HS_5 = 0; E1B_HS_5 = 0; - E5b_DVS_5 = 0; - E1B_DVS_5 = 0; + E5b_DVS_5 = false; + E1B_DVS_5 = false; // GST - WN_5 = 0.0; - TOW_5 = 0.0; + WN_5 = 0; + TOW_5 = 0; spare_5 = 0.0; // Word type 6: GST-UTC conversion parameters A0_6 = 0.0; A1_6 = 0.0; - Delta_tLS_6 = 0.0; - t0t_6 = 0.0; - WNot_6 = 0.0; - WN_LSF_6 = 0.0; - DN_6 = 0.0; - Delta_tLSF_6 = 0.0; - TOW_6 = 0.0; + Delta_tLS_6 = 0; + t0t_6 = 0; + WNot_6 = 0; + WN_LSF_6 = 0; + DN_6 = 0; + Delta_tLSF_6 = 0; + TOW_6 = 0; // Word type 7: Almanac for SVID1 (1/2), almanac reference time and almanac reference week number IOD_a_7 = 0; WN_a_7 = 0; - t0a_7 = 0.0; + t0a_7 = 0; SVID1_7 = 0; DELTA_A_7 = 0.0; e_7 = 0.0; @@ -174,7 +174,7 @@ void Galileo_Navigation_Message::reset() // Word type 9: Almanac for SVID2 (2/2) and SVID3 (1/2) IOD_a_9 = 0; WN_a_9 = 0; - t0a_9 = 0.0; + t0a_9 = 0; M0_9 = 0.0; af0_9 = 0.0; af1_9 = 0.0; @@ -199,13 +199,13 @@ void Galileo_Navigation_Message::reset() // GST-GPS A_0G_10 = 0.0; A_1G_10 = 0.0; - t_0G_10 = 0.0; - WN_0G_10 = 0.0; + t_0G_10 = 0; + WN_0G_10 = 0; // Word type 0: I/NAV Spare Word - Time_0 = 0.0; - WN_0 = 0.0; - TOW_0 = 0.0; + Time_0 = 0; + WN_0 = 0; + TOW_0 = 0; flag_TOW_6 = false; @@ -253,14 +253,11 @@ bool Galileo_Navigation_Message::CRC_test(std::bitset b { return true; } - else - { - return false; - } + return false; } -uint64_t Galileo_Navigation_Message::read_navigation_unsigned(std::bitset bits, const std::vector > parameter) +uint64_t Galileo_Navigation_Message::read_navigation_unsigned(std::bitset bits, const std::vector >& parameter) { uint64_t value = 0ULL; int32_t num_of_slices = parameter.size(); @@ -269,7 +266,7 @@ uint64_t Galileo_Navigation_Message::read_navigation_unsigned(std::bitset(bits[GALILEO_DATA_JK_BITS - parameter[i].first - j]) == 1) { value += 1; // insert the bit } @@ -279,7 +276,7 @@ uint64_t Galileo_Navigation_Message::read_navigation_unsigned(std::bitset bits, const std::vector > parameter) +uint64_t Galileo_Navigation_Message::read_page_type_unsigned(std::bitset bits, const std::vector >& parameter) { uint64_t value = 0ULL; int32_t num_of_slices = parameter.size(); @@ -288,7 +285,7 @@ uint64_t Galileo_Navigation_Message::read_page_type_unsigned(std::bitset(bits[GALILEO_PAGE_TYPE_BITS - parameter[i].first - j]) == 1) { value += 1ULL; // insert the bit } @@ -298,13 +295,13 @@ uint64_t Galileo_Navigation_Message::read_page_type_unsigned(std::bitset bits, const std::vector > parameter) +int64_t Galileo_Navigation_Message::read_navigation_signed(std::bitset bits, const std::vector >& parameter) { int64_t value = 0LL; int32_t num_of_slices = parameter.size(); // read the MSB and perform the sign extension - if (bits[GALILEO_DATA_JK_BITS - parameter[0].first] == 1) + if (static_cast(bits[GALILEO_DATA_JK_BITS - parameter[0].first]) == 1) { value ^= 0xFFFFFFFFFFFFFFFFLL; // 64 bits variable } @@ -319,7 +316,7 @@ int64_t Galileo_Navigation_Message::read_navigation_signed(std::bitset(bits[GALILEO_DATA_JK_BITS - parameter[i].first - j]) == 1) { value += 1LL; // insert the bit } @@ -329,10 +326,10 @@ int64_t Galileo_Navigation_Message::read_navigation_signed(std::bitset bits, const std::vector > parameter) +bool Galileo_Navigation_Message::read_navigation_bool(std::bitset bits, const std::vector >& parameter) { bool value; - if (bits[GALILEO_DATA_JK_BITS - parameter[0].first] == 1) + if (static_cast(static_cast(bits[GALILEO_DATA_JK_BITS - parameter[0].first])) == 1) { value = true; } @@ -356,7 +353,7 @@ void Galileo_Navigation_Message::split_page(std::string page_string, int32_t fla if (page_string.at(0) == '1') // if page is odd { // std::cout<< "page_string.at(0) split page="<(read_navigation_unsigned(data_jk_bits, IOD_nav_1_bit)); DLOG(INFO) << "IOD_nav_1= " << IOD_nav_1; - t0e_1 = static_cast(read_navigation_unsigned(data_jk_bits, T0E_1_bit)); + t0e_1 = static_cast(read_navigation_unsigned(data_jk_bits, T0E_1_bit)); t0e_1 = t0e_1 * t0e_1_LSB; DLOG(INFO) << "t0e_1= " << t0e_1; M0_1 = static_cast(read_navigation_signed(data_jk_bits, M0_1_bit)); @@ -717,7 +709,7 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk) C_rs_3 = static_cast(read_navigation_signed(data_jk_bits, C_rs_3_bit)); C_rs_3 = C_rs_3 * C_rs_3_LSB; DLOG(INFO) << "C_rs_3= " << C_rs_3; - SISA_3 = static_cast(read_navigation_unsigned(data_jk_bits, SISA_3_bit)); + SISA_3 = static_cast(read_navigation_unsigned(data_jk_bits, SISA_3_bit)); DLOG(INFO) << "SISA_3= " << SISA_3; flag_ephemeris_3 = true; DLOG(INFO) << "flag_tow_set" << flag_TOW_set; @@ -735,7 +727,7 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk) C_is_4 = C_is_4 * C_is_4_LSB; DLOG(INFO) << "C_is_4= " << C_is_4; // Clock correction parameters - t0c_4 = static_cast(read_navigation_unsigned(data_jk_bits, t0c_4_bit)); + t0c_4 = static_cast(read_navigation_unsigned(data_jk_bits, t0c_4_bit)); t0c_4 = t0c_4 * t0c_4_LSB; DLOG(INFO) << "t0c_4= " << t0c_4; af0_4 = static_cast(read_navigation_signed(data_jk_bits, af0_4_bit)); @@ -785,14 +777,14 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk) DLOG(INFO) << "E5b_HS_5= " << E5b_HS_5; E1B_HS_5 = static_cast(read_navigation_unsigned(data_jk_bits, E1B_HS_5_bit)); DLOG(INFO) << "E1B_HS_5= " << E1B_HS_5; - E5b_DVS_5 = static_cast(read_navigation_unsigned(data_jk_bits, E5b_DVS_5_bit)); + E5b_DVS_5 = static_cast(read_navigation_unsigned(data_jk_bits, E5b_DVS_5_bit)); DLOG(INFO) << "E5b_DVS_5= " << E5b_DVS_5; - E1B_DVS_5 = static_cast(read_navigation_unsigned(data_jk_bits, E1B_DVS_5_bit)); + E1B_DVS_5 = static_cast(read_navigation_unsigned(data_jk_bits, E1B_DVS_5_bit)); DLOG(INFO) << "E1B_DVS_5= " << E1B_DVS_5; // GST - WN_5 = static_cast(read_navigation_unsigned(data_jk_bits, WN_5_bit)); + WN_5 = static_cast(read_navigation_unsigned(data_jk_bits, WN_5_bit)); DLOG(INFO) << "WN_5= " << WN_5; - TOW_5 = static_cast(read_navigation_unsigned(data_jk_bits, TOW_5_bit)); + TOW_5 = static_cast(read_navigation_unsigned(data_jk_bits, TOW_5_bit)); DLOG(INFO) << "TOW_5= " << TOW_5; flag_TOW_5 = true; // set to false externally spare_5 = static_cast(read_navigation_unsigned(data_jk_bits, spare_5_bit)); @@ -809,20 +801,20 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk) A1_6 = static_cast(read_navigation_signed(data_jk_bits, A1_6_bit)); A1_6 = A1_6 * A1_6_LSB; DLOG(INFO) << "A1_6= " << A1_6; - Delta_tLS_6 = static_cast(read_navigation_signed(data_jk_bits, Delta_tLS_6_bit)); + Delta_tLS_6 = static_cast(read_navigation_signed(data_jk_bits, Delta_tLS_6_bit)); DLOG(INFO) << "Delta_tLS_6= " << Delta_tLS_6; - t0t_6 = static_cast(read_navigation_unsigned(data_jk_bits, t0t_6_bit)); + t0t_6 = static_cast(read_navigation_unsigned(data_jk_bits, t0t_6_bit)); t0t_6 = t0t_6 * t0t_6_LSB; DLOG(INFO) << "t0t_6= " << t0t_6; - WNot_6 = static_cast(read_navigation_unsigned(data_jk_bits, WNot_6_bit)); + WNot_6 = static_cast(read_navigation_unsigned(data_jk_bits, WNot_6_bit)); DLOG(INFO) << "WNot_6= " << WNot_6; - WN_LSF_6 = static_cast(read_navigation_unsigned(data_jk_bits, WN_LSF_6_bit)); + WN_LSF_6 = static_cast(read_navigation_unsigned(data_jk_bits, WN_LSF_6_bit)); DLOG(INFO) << "WN_LSF_6= " << WN_LSF_6; - DN_6 = static_cast(read_navigation_unsigned(data_jk_bits, DN_6_bit)); + DN_6 = static_cast(read_navigation_unsigned(data_jk_bits, DN_6_bit)); DLOG(INFO) << "DN_6= " << DN_6; - Delta_tLSF_6 = static_cast(read_navigation_signed(data_jk_bits, Delta_tLSF_6_bit)); + Delta_tLSF_6 = static_cast(read_navigation_signed(data_jk_bits, Delta_tLSF_6_bit)); DLOG(INFO) << "Delta_tLSF_6= " << Delta_tLSF_6; - TOW_6 = static_cast(read_navigation_unsigned(data_jk_bits, TOW_6_bit)); + TOW_6 = static_cast(read_navigation_unsigned(data_jk_bits, TOW_6_bit)); DLOG(INFO) << "TOW_6= " << TOW_6; flag_TOW_6 = true; // set to false externally flag_utc_model = true; // set to false externally @@ -831,14 +823,14 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk) break; case 7: // Word type 7: Almanac for SVID1 (1/2), almanac reference time and almanac reference week number - IOD_a_7 = static_cast(read_navigation_unsigned(data_jk_bits, IOD_a_7_bit)); + IOD_a_7 = static_cast(read_navigation_unsigned(data_jk_bits, IOD_a_7_bit)); DLOG(INFO) << "IOD_a_7= " << IOD_a_7; WN_a_7 = static_cast(read_navigation_unsigned(data_jk_bits, WN_a_7_bit)); DLOG(INFO) << "WN_a_7= " << WN_a_7; - t0a_7 = static_cast(read_navigation_unsigned(data_jk_bits, t0a_7_bit)); + t0a_7 = static_cast(read_navigation_unsigned(data_jk_bits, t0a_7_bit)); t0a_7 = t0a_7 * t0a_7_LSB; DLOG(INFO) << "t0a_7= " << t0a_7; - SVID1_7 = static_cast(read_navigation_unsigned(data_jk_bits, SVID1_7_bit)); + SVID1_7 = static_cast(read_navigation_unsigned(data_jk_bits, SVID1_7_bit)); DLOG(INFO) << "SVID1_7= " << SVID1_7; DELTA_A_7 = static_cast(read_navigation_signed(data_jk_bits, DELTA_A_7_bit)); DELTA_A_7 = DELTA_A_7 * DELTA_A_7_LSB; @@ -866,7 +858,7 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk) break; case 8: // Word type 8: Almanac for SVID1 (2/2) and SVID2 (1/2)*/ - IOD_a_8 = static_cast(read_navigation_unsigned(data_jk_bits, IOD_a_8_bit)); + IOD_a_8 = static_cast(read_navigation_unsigned(data_jk_bits, IOD_a_8_bit)); DLOG(INFO) << "IOD_a_8= " << IOD_a_8; af0_8 = static_cast(read_navigation_signed(data_jk_bits, af0_8_bit)); af0_8 = af0_8 * af0_8_LSB; @@ -903,11 +895,11 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk) break; case 9: // Word type 9: Almanac for SVID2 (2/2) and SVID3 (1/2) - IOD_a_9 = static_cast(read_navigation_unsigned(data_jk_bits, IOD_a_9_bit)); + IOD_a_9 = static_cast(read_navigation_unsigned(data_jk_bits, IOD_a_9_bit)); DLOG(INFO) << "IOD_a_9= " << IOD_a_9; WN_a_9 = static_cast(read_navigation_unsigned(data_jk_bits, WN_a_9_bit)); DLOG(INFO) << "WN_a_9= " << WN_a_9; - t0a_9 = static_cast(read_navigation_unsigned(data_jk_bits, t0a_9_bit)); + t0a_9 = static_cast(read_navigation_unsigned(data_jk_bits, t0a_9_bit)); t0a_9 = t0a_9 * t0a_9_LSB; DLOG(INFO) << "t0a_9= " << t0a_9; M0_9 = static_cast(read_navigation_signed(data_jk_bits, M0_9_bit)); @@ -942,7 +934,7 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk) break; case 10: // Word type 10: Almanac for SVID3 (2/2) and GST-GPS conversion parameters - IOD_a_10 = static_cast(read_navigation_unsigned(data_jk_bits, IOD_a_10_bit)); + IOD_a_10 = static_cast(read_navigation_unsigned(data_jk_bits, IOD_a_10_bit)); DLOG(INFO) << "IOD_a_10= " << IOD_a_10; Omega0_10 = static_cast(read_navigation_signed(data_jk_bits, Omega0_10_bit)); Omega0_10 = Omega0_10 * Omega0_10_LSB; @@ -971,11 +963,11 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk) A_1G_10 = A_1G_10 * A_1G_10_LSB; flag_GGTO_2 = true; DLOG(INFO) << "A_1G_10= " << A_1G_10; - t_0G_10 = static_cast(read_navigation_unsigned(data_jk_bits, t_0G_10_bit)); + t_0G_10 = static_cast(read_navigation_unsigned(data_jk_bits, t_0G_10_bit)); t_0G_10 = t_0G_10 * t_0G_10_LSB; flag_GGTO_3 = true; DLOG(INFO) << "t_0G_10= " << t_0G_10; - WN_0G_10 = static_cast(read_navigation_unsigned(data_jk_bits, WN_0G_10_bit)); + WN_0G_10 = static_cast(read_navigation_unsigned(data_jk_bits, WN_0G_10_bit)); flag_GGTO_4 = true; DLOG(INFO) << "WN_0G_10= " << WN_0G_10; flag_almanac_4 = true; @@ -983,11 +975,11 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk) break; case 0: // Word type 0: I/NAV Spare Word - Time_0 = static_cast(read_navigation_unsigned(data_jk_bits, Time_0_bit)); + Time_0 = static_cast(read_navigation_unsigned(data_jk_bits, Time_0_bit)); DLOG(INFO) << "Time_0= " << Time_0; - WN_0 = static_cast(read_navigation_unsigned(data_jk_bits, WN_0_bit)); + WN_0 = static_cast(read_navigation_unsigned(data_jk_bits, WN_0_bit)); DLOG(INFO) << "WN_0= " << WN_0; - TOW_0 = static_cast(read_navigation_unsigned(data_jk_bits, TOW_0_bit)); + TOW_0 = static_cast(read_navigation_unsigned(data_jk_bits, TOW_0_bit)); DLOG(INFO) << "TOW_0= " << TOW_0; DLOG(INFO) << "flag_tow_set" << flag_TOW_set; break; diff --git a/src/core/system_parameters/galileo_navigation_message.h b/src/core/system_parameters/galileo_navigation_message.h index 1e71baafd..cf1eb0a0f 100644 --- a/src/core/system_parameters/galileo_navigation_message.h +++ b/src/core/system_parameters/galileo_navigation_message.h @@ -33,11 +33,11 @@ #ifndef GNSS_SDR_GALILEO_NAVIGATION_MESSAGE_H_ #define GNSS_SDR_GALILEO_NAVIGATION_MESSAGE_H_ +#include "Galileo_E1.h" +#include "galileo_almanac_helper.h" #include "galileo_ephemeris.h" #include "galileo_iono.h" -#include "galileo_almanac_helper.h" #include "galileo_utc_model.h" -#include "Galileo_E1.h" #include #include #include @@ -55,10 +55,10 @@ class Galileo_Navigation_Message { private: bool CRC_test(std::bitset bits, uint32_t checksum); - bool read_navigation_bool(std::bitset bits, const std::vector > parameter); - uint64_t read_navigation_unsigned(std::bitset bits, const std::vector > parameter); - uint64_t read_page_type_unsigned(std::bitset bits, const std::vector > parameter); - int64_t read_navigation_signed(std::bitset bits, const std::vector > parameter); + bool read_navigation_bool(std::bitset bits, const std::vector >& parameter); + uint64_t read_navigation_unsigned(std::bitset bits, const std::vector >& parameter); + uint64_t read_page_type_unsigned(std::bitset bits, const std::vector >& parameter); + int64_t read_navigation_signed(std::bitset bits, const std::vector >& parameter); public: int32_t Page_type_time_stamp; @@ -93,7 +93,7 @@ public: // Word type 1: Ephemeris (1/4) int32_t IOD_nav_1; //!< IOD_nav page 1 - double t0e_1; //!< Ephemeris reference time [s] + int32_t t0e_1; //!< Ephemeris reference time [s] double M0_1; //!< Mean anomaly at reference time [semi-circles] double e_1; //!< Eccentricity double A_1; //!< Square root of the semi-major axis [meters^1/2] @@ -113,7 +113,7 @@ public: double C_us_3; //!< Amplitude of the sine harmonic correction term to the argument of latitude [radians] double C_rc_3; //!< Amplitude of the cosine harmonic correction term to the orbit radius [meters] double C_rs_3; //!< Amplitude of the sine harmonic correction term to the orbit radius [meters] - double SISA_3; + int32_t SISA_3; // Word type 4: Ephemeris (4/4) and Clock correction parameters*/ int32_t IOD_nav_4; // @@ -122,10 +122,10 @@ public: double C_is_4; //!< Amplitude of the sine harmonic correction term to the angle of inclination [radians] // Clock correction parameters - double t0c_4; //!< Clock correction data reference Time of Week [sec] - double af0_4; //!< SV clock bias correction coefficient [s] - double af1_4; //!< SV clock drift correction coefficient [s/s] - double af2_4; //!< clock drift rate correction coefficient [s/s^2] + int32_t t0c_4; //!< Clock correction data reference Time of Week [sec] + double af0_4; //!< SV clock bias correction coefficient [s] + double af1_4; //!< SV clock drift correction coefficient [s/s] + double af2_4; //!< clock drift rate correction coefficient [s/s^2] double spare_4; // Word type 5: Ionospheric correction, BGD, signal health and data validity status and GST*/ @@ -143,31 +143,31 @@ public: double BGD_E1E5a_5; //!< E1-E5a Broadcast Group Delay [s] double BGD_E1E5b_5; //!< E1-E5b Broadcast Group Delay [s] - int32_t E5b_HS_5; //!< E5b Signal Health Status - int32_t E1B_HS_5; //!< E1B Signal Health Status - int32_t E5b_DVS_5; //!< E5b Data Validity Status - int32_t E1B_DVS_5; //!< E1B Data Validity Status + int32_t E5b_HS_5; //!< E5b Signal Health Status + int32_t E1B_HS_5; //!< E1B Signal Health Status + bool E5b_DVS_5; //!< E5b Data Validity Status + bool E1B_DVS_5; //!< E1B Data Validity Status // GST - double WN_5; - double TOW_5; + int32_t WN_5; + int32_t TOW_5; double spare_5; // Word type 6: GST-UTC conversion parameters double A0_6; double A1_6; - double Delta_tLS_6; - double t0t_6; - double WNot_6; - double WN_LSF_6; - double DN_6; - double Delta_tLSF_6; - double TOW_6; + int32_t Delta_tLS_6; + int32_t t0t_6; + int32_t WNot_6; + int32_t WN_LSF_6; + int32_t DN_6; + int32_t Delta_tLSF_6; + int32_t TOW_6; // Word type 7: Almanac for SVID1 (1/2), almanac reference time and almanac reference week number int32_t IOD_a_7; int32_t WN_a_7; - double t0a_7; + int32_t t0a_7; int32_t SVID1_7; double DELTA_A_7; double e_7; @@ -194,7 +194,7 @@ public: // Word type 9: Almanac for SVID2 (2/2) and SVID3 (1/2) int32_t IOD_a_9; int32_t WN_a_9; - double t0a_9; + int32_t t0a_9; double M0_9; double af0_9; double af1_9; @@ -217,15 +217,15 @@ public: int32_t E1B_HS_10; // GST-GPS conversion - double A_0G_10; //!< Constant term of the offset Delta t systems - double A_1G_10; //!< Rate of change of the offset Delta t systems - double t_0G_10; //!< Reference time for Galileo/GPS Time Offset (GGTO) data - double WN_0G_10; //!< Week Number of Galileo/GPS Time Offset (GGTO) reference + double A_0G_10; //!< Constant term of the offset Delta t systems + double A_1G_10; //!< Rate of change of the offset Delta t systems + int32_t t_0G_10; //!< Reference time for Galileo/GPS Time Offset (GGTO) data + int32_t WN_0G_10; //!< Week Number of Galileo/GPS Time Offset (GGTO) reference // Word type 0: I/NAV Spare Word - double Time_0; - double WN_0; - double TOW_0; + int32_t Time_0; + int32_t WN_0; + int32_t TOW_0; double Galileo_satClkDrift; double Galileo_dtr; //!< Relativistic clock correction term @@ -250,7 +250,7 @@ public: * * Takes in input Data_jk (128 bit) and split it in ephemeris parameters according ICD 4.3.5 */ - int32_t page_jk_decoder(const char *data_jk); + int32_t page_jk_decoder(const char* data_jk); void reset(); diff --git a/src/core/system_parameters/galileo_utc_model.cc b/src/core/system_parameters/galileo_utc_model.cc index 660c20ca1..96ca127e7 100644 --- a/src/core/system_parameters/galileo_utc_model.cc +++ b/src/core/system_parameters/galileo_utc_model.cc @@ -36,28 +36,28 @@ Galileo_Utc_Model::Galileo_Utc_Model() // Word type 6: GST-UTC conversion parameters A0_6 = 0.0; A1_6 = 0.0; - Delta_tLS_6 = 0.0; - t0t_6 = 0.0; - WNot_6 = 0.0; - WN_LSF_6 = 0.0; - DN_6 = 0.0; - Delta_tLSF_6 = 0.0; + Delta_tLS_6 = 0; + t0t_6 = 0; + WNot_6 = 0; + WN_LSF_6 = 0; + DN_6 = 0; + Delta_tLSF_6 = 0; flag_utc_model = false; // GPS to Galileo GST conversion parameters A_0G_10 = 0.0; A_1G_10 = 0.0; - t_0G_10 = 0.0; - WN_0G_10 = 0.0; + t_0G_10 = 0; + WN_0G_10 = 0; } -double Galileo_Utc_Model::GST_to_UTC_time(double t_e, int WN) +double Galileo_Utc_Model::GST_to_UTC_time(double t_e, int32_t WN) { double t_Utc; double t_Utc_daytime; double Delta_t_Utc = 0; // Determine if the effectivity time of the leap second event is in the past - int weeksToLeapSecondEvent = WN_LSF_6 - (WN % 256); + int32_t weeksToLeapSecondEvent = WN_LSF_6 - (WN % 256); if ((weeksToLeapSecondEvent) >= 0) // is not in the past { diff --git a/src/core/system_parameters/galileo_utc_model.h b/src/core/system_parameters/galileo_utc_model.h index 174fb0754..7e9e328b0 100644 --- a/src/core/system_parameters/galileo_utc_model.h +++ b/src/core/system_parameters/galileo_utc_model.h @@ -34,6 +34,7 @@ #define GNSS_SDR_GALILEO_UTC_MODEL_H_ #include +#include /*! * \brief This class is a storage for the GALILEO UTC MODEL data as described in Galileo ICD @@ -46,22 +47,22 @@ public: // Word type 6: GST-UTC conversion parameters double A0_6; double A1_6; - double Delta_tLS_6; - double t0t_6; //!< UTC data reference Time of Week [s] - double WNot_6; //!< UTC data reference Week number [week] - double WN_LSF_6; - double DN_6; - double Delta_tLSF_6; + int32_t Delta_tLS_6; + int32_t t0t_6; //!< UTC data reference Time of Week [s] + int32_t WNot_6; //!< UTC data reference Week number [week] + int32_t WN_LSF_6; + int32_t DN_6; + int32_t Delta_tLSF_6; bool flag_utc_model; // GPS to Galileo GST conversion parameters double A_0G_10; double A_1G_10; - double t_0G_10; - double WN_0G_10; + int32_t t_0G_10; + int32_t WN_0G_10; //double TOW_6; - double GST_to_UTC_time(double t_e, int WN); //!< GST-UTC Conversion Algorithm and Parameters + double GST_to_UTC_time(double t_e, int32_t WN); //!< GST-UTC Conversion Algorithm and Parameters /*! * Default constructor */ diff --git a/src/core/system_parameters/glonass_gnav_ephemeris.cc b/src/core/system_parameters/glonass_gnav_ephemeris.cc index b063d22ba..1e0941dd7 100644 --- a/src/core/system_parameters/glonass_gnav_ephemeris.cc +++ b/src/core/system_parameters/glonass_gnav_ephemeris.cc @@ -31,8 +31,8 @@ */ #include "glonass_gnav_ephemeris.h" -#include "gnss_satellite.h" #include "GLONASS_L1_L2_CA.h" +#include "gnss_satellite.h" #include diff --git a/src/core/system_parameters/glonass_gnav_ephemeris.h b/src/core/system_parameters/glonass_gnav_ephemeris.h index ebea99d58..6f53a992f 100644 --- a/src/core/system_parameters/glonass_gnav_ephemeris.h +++ b/src/core/system_parameters/glonass_gnav_ephemeris.h @@ -35,8 +35,8 @@ #define GNSS_SDR_GLONASS_GNAV_EPHEMERIS_H_ -#include #include +#include #include /*! diff --git a/src/core/system_parameters/glonass_gnav_navigation_message.cc b/src/core/system_parameters/glonass_gnav_navigation_message.cc index db4a9f9a4..b2a825894 100644 --- a/src/core/system_parameters/glonass_gnav_navigation_message.cc +++ b/src/core/system_parameters/glonass_gnav_navigation_message.cc @@ -83,8 +83,8 @@ void Glonass_Gnav_Navigation_Message::reset() // Data update information d_previous_tb = 0.0; - for (uint32_t i = 0; i < GLONASS_CA_NBR_SATS; i++) - d_previous_Na[i] = 0.0; + for (double& i : d_previous_Na) + i = 0.0; std::map satelliteBlock; // Map that stores to which block the PRN belongs http://www.navcen.uscg.gov/?Do=constellationStatus @@ -126,66 +126,66 @@ bool Glonass_Gnav_Navigation_Message::CRC_test(std::bitset(GLONASS_GNAV_CRC_I_INDEX.size()); i++) + for (int i : GLONASS_GNAV_CRC_I_INDEX) { - sum_bits += string_bits[GLONASS_GNAV_CRC_I_INDEX[i] - 1]; + sum_bits += string_bits[i - 1]; } C1 = string_bits[0] ^ (sum_bits % 2); // Compute C2 term sum_bits = 0; - for (int32_t j = 0; j < static_cast(GLONASS_GNAV_CRC_J_INDEX.size()); j++) + for (int j : GLONASS_GNAV_CRC_J_INDEX) { - sum_bits += string_bits[GLONASS_GNAV_CRC_J_INDEX[j] - 1]; + sum_bits += string_bits[j - 1]; } C2 = (string_bits[1]) ^ (sum_bits % 2); // Compute C3 term sum_bits = 0; - for (int32_t k = 0; k < static_cast(GLONASS_GNAV_CRC_K_INDEX.size()); k++) + for (int k : GLONASS_GNAV_CRC_K_INDEX) { - sum_bits += string_bits[GLONASS_GNAV_CRC_K_INDEX[k] - 1]; + sum_bits += string_bits[k - 1]; } C3 = string_bits[2] ^ (sum_bits % 2); // Compute C4 term sum_bits = 0; - for (int32_t l = 0; l < static_cast(GLONASS_GNAV_CRC_L_INDEX.size()); l++) + for (int l : GLONASS_GNAV_CRC_L_INDEX) { - sum_bits += string_bits[GLONASS_GNAV_CRC_L_INDEX[l] - 1]; + sum_bits += string_bits[l - 1]; } C4 = string_bits[3] ^ (sum_bits % 2); // Compute C5 term sum_bits = 0; - for (int32_t m = 0; m < static_cast(GLONASS_GNAV_CRC_M_INDEX.size()); m++) + for (int m : GLONASS_GNAV_CRC_M_INDEX) { - sum_bits += string_bits[GLONASS_GNAV_CRC_M_INDEX[m] - 1]; + sum_bits += string_bits[m - 1]; } C5 = string_bits[4] ^ (sum_bits % 2); // Compute C6 term sum_bits = 0; - for (int32_t n = 0; n < static_cast(GLONASS_GNAV_CRC_N_INDEX.size()); n++) + for (int n : GLONASS_GNAV_CRC_N_INDEX) { - sum_bits += string_bits[GLONASS_GNAV_CRC_N_INDEX[n] - 1]; + sum_bits += string_bits[n - 1]; } C6 = string_bits[5] ^ (sum_bits % 2); // Compute C7 term sum_bits = 0; - for (int32_t p = 0; p < static_cast(GLONASS_GNAV_CRC_P_INDEX.size()); p++) + for (int p : GLONASS_GNAV_CRC_P_INDEX) { - sum_bits += string_bits[GLONASS_GNAV_CRC_P_INDEX[p] - 1]; + sum_bits += string_bits[p - 1]; } C7 = string_bits[6] ^ (sum_bits % 2); // Compute C_Sigma term sum_bits = 0; sum_hamming = 0; - for (int32_t q = 0; q < static_cast(GLONASS_GNAV_CRC_Q_INDEX.size()); q++) + for (int q : GLONASS_GNAV_CRC_Q_INDEX) { - sum_bits += string_bits[GLONASS_GNAV_CRC_Q_INDEX[q] - 1]; + sum_bits += string_bits[q - 1]; } for (int32_t q = 0; q < 8; q++) { @@ -200,19 +200,17 @@ bool Glonass_Gnav_Navigation_Message::CRC_test(std::bitset bits, const std::vector> parameter) +bool Glonass_Gnav_Navigation_Message::read_navigation_bool(std::bitset bits, const std::vector>& parameter) { bool value; @@ -228,7 +226,7 @@ bool Glonass_Gnav_Navigation_Message::read_navigation_bool(std::bitset bits, const std::vector> parameter) +uint64_t Glonass_Gnav_Navigation_Message::read_navigation_unsigned(std::bitset bits, const std::vector>& parameter) { uint64_t value = 0ULL; int32_t num_of_slices = parameter.size(); @@ -247,7 +245,7 @@ uint64_t Glonass_Gnav_Navigation_Message::read_navigation_unsigned(std::bitset bits, const std::vector> parameter) +int64_t Glonass_Gnav_Navigation_Message::read_navigation_signed(std::bitset bits, const std::vector>& parameter) { int64_t value = 0LL; int64_t sign = 0LL; @@ -310,7 +308,7 @@ uint32_t Glonass_Gnav_Navigation_Message::get_frame_number(uint32_t satellite_sl } -int32_t Glonass_Gnav_Navigation_Message::string_decoder(std::string frame_string) +int32_t Glonass_Gnav_Navigation_Message::string_decoder(const std::string& frame_string) { int32_t J = 0; d_string_ID = 0U; @@ -733,8 +731,8 @@ bool Glonass_Gnav_Navigation_Message::have_new_utc_model() // Check if we have flag_utc_model_str_5 = false; // clear the flag return true; } - else - return false; + + return false; } diff --git a/src/core/system_parameters/glonass_gnav_navigation_message.h b/src/core/system_parameters/glonass_gnav_navigation_message.h index e13f41511..6f1f92312 100644 --- a/src/core/system_parameters/glonass_gnav_navigation_message.h +++ b/src/core/system_parameters/glonass_gnav_navigation_message.h @@ -35,10 +35,10 @@ #define GNSS_SDR_GLONASS_GNAV_NAVIGATION_MESSAGE_H_ -#include "glonass_gnav_ephemeris.h" -#include "glonass_gnav_almanac.h" -#include "glonass_gnav_utc_model.h" #include "GLONASS_L1_L2_CA.h" +#include "glonass_gnav_almanac.h" +#include "glonass_gnav_ephemeris.h" +#include "glonass_gnav_utc_model.h" #include #include @@ -51,9 +51,9 @@ class Glonass_Gnav_Navigation_Message { private: - uint64_t read_navigation_unsigned(std::bitset bits, const std::vector> parameter); - int64_t read_navigation_signed(std::bitset bits, const std::vector> parameter); - bool read_navigation_bool(std::bitset bits, const std::vector> parameter); + uint64_t read_navigation_unsigned(std::bitset bits, const std::vector>& parameter); + int64_t read_navigation_signed(std::bitset bits, const std::vector>& parameter); + bool read_navigation_bool(std::bitset bits, const std::vector>& parameter); public: bool flag_CRC_test; @@ -159,7 +159,7 @@ public: * \param frame_string [in] is the string message within the parsed frame * \returns Returns the ID of the decoded string */ - int32_t string_decoder(std::string frame_string); + int32_t string_decoder(const std::string& frame_string); /*! * Default constructor diff --git a/src/core/system_parameters/gnss_satellite.cc b/src/core/system_parameters/gnss_satellite.cc index 6ccaf7e51..8cb560819 100644 --- a/src/core/system_parameters/gnss_satellite.cc +++ b/src/core/system_parameters/gnss_satellite.cc @@ -47,9 +47,7 @@ Gnss_Satellite::Gnss_Satellite(const std::string& system_, uint32_t PRN_) } -Gnss_Satellite::~Gnss_Satellite() -{ -} +Gnss_Satellite::~Gnss_Satellite() = default; void Gnss_Satellite::reset() @@ -69,9 +67,9 @@ void Gnss_Satellite::reset() std::ostream& operator<<(std::ostream& out, const Gnss_Satellite& sat) // output { - std::string tag(""); - std::string tag2(""); - if (sat.get_system().compare("Galileo") == 0) tag = "E"; + std::string tag; + std::string tag2; + if (sat.get_system() == "Galileo") tag = "E"; if (sat.get_PRN() < 10) tag2 = "0"; out << sat.get_system() << " PRN " << tag << tag2 << sat.get_PRN() << " (Block " << sat.get_block() << ")"; return out; @@ -81,9 +79,9 @@ std::ostream& operator<<(std::ostream& out, const Gnss_Satellite& sat) // outpu bool operator==(const Gnss_Satellite& sat1, const Gnss_Satellite& sat2) { bool equal = false; - if (sat1.get_system().compare(sat2.get_system()) == 0) + if (sat1.get_system() == sat2.get_system()) { - if (sat1.get_PRN() == (sat2.get_PRN())) + if (sat1.get_PRN() == sat2.get_PRN()) { equal = true; } @@ -113,7 +111,7 @@ Gnss_Satellite& Gnss_Satellite::operator=(const Gnss_Satellite &rhs) { void Gnss_Satellite::set_system(const std::string& system_) { // Set the satellite system {"GPS", "Glonass", "SBAS", "Galileo", "Compass"} - std::set::iterator it = system_set.find(system_); + auto it = system_set.find(system_); if (it != system_set.cend()) { @@ -129,7 +127,7 @@ void Gnss_Satellite::set_system(const std::string& system_) void Gnss_Satellite::update_PRN(uint32_t PRN_) { - if (system.compare("Glonass") != 0) + if (system != "Glonass") { DLOG(INFO) << "Trying to update PRN for not GLONASS system"; PRN = 0; @@ -153,12 +151,12 @@ void Gnss_Satellite::update_PRN(uint32_t PRN_) void Gnss_Satellite::set_PRN(uint32_t PRN_) { // Set satellite's PRN - if (system.compare("") == 0) + if (system.empty()) { DLOG(INFO) << "Trying to define PRN while system is not defined"; PRN = 0; } - if (system.compare("GPS") == 0) + if (system == "GPS") { if (PRN_ < 1 or PRN_ > 32) { @@ -170,7 +168,7 @@ void Gnss_Satellite::set_PRN(uint32_t PRN_) PRN = PRN_; } } - else if (system.compare("Glonass") == 0) + else if (system == "Glonass") { if (PRN_ < 1 or PRN_ > 24) { @@ -182,7 +180,7 @@ void Gnss_Satellite::set_PRN(uint32_t PRN_) PRN = PRN_; } } - else if (system.compare("SBAS") == 0) + else if (system == "SBAS") { if (PRN_ == 120) { @@ -214,7 +212,7 @@ void Gnss_Satellite::set_PRN(uint32_t PRN_) PRN = 0; } } - else if (system.compare("Galileo") == 0) + else if (system == "Galileo") { if (PRN_ < 1 or PRN_ > 36) { @@ -226,9 +224,9 @@ void Gnss_Satellite::set_PRN(uint32_t PRN_) PRN = PRN_; } } - else if (system.compare("Beidou") == 0) + else if (system == "Beidou") { - if (PRN_ < 1 or PRN_ > 36) + if (PRN_ < 1 or PRN_ > 37) { DLOG(INFO) << "This PRN is not defined"; PRN = 0; @@ -293,7 +291,7 @@ std::string Gnss_Satellite::get_block() const std::string Gnss_Satellite::what_block(const std::string& system_, uint32_t PRN_) { std::string block_ = "Unknown"; - if (system_.compare("GPS") == 0) + if (system_ == "GPS") { // info from https://www.navcen.uscg.gov/?Do=constellationStatus switch (PRN_) @@ -399,7 +397,7 @@ std::string Gnss_Satellite::what_block(const std::string& system_, uint32_t PRN_ } } - if (system_.compare("Glonass") == 0) + if (system_ == "Glonass") { // Info from http://www.sdcm.ru/smglo/grupglo?version=eng&site=extern // See also http://www.glonass-center.ru/en/GLONASS/ @@ -505,7 +503,7 @@ std::string Gnss_Satellite::what_block(const std::string& system_, uint32_t PRN_ block_ = std::string("Unknown"); } } - if (system_.compare("SBAS") == 0) + if (system_ == "SBAS") { switch (PRN_) { @@ -531,7 +529,7 @@ std::string Gnss_Satellite::what_block(const std::string& system_, uint32_t PRN_ block_ = std::string("Unknown"); } } - if (system_.compare("Galileo") == 0) + if (system_ == "Galileo") { // Check http://en.wikipedia.org/wiki/List_of_Galileo_satellites and https://www.gsc-europa.eu/system-status/Constellation-Information switch (PRN_) diff --git a/src/core/system_parameters/gnss_satellite.h b/src/core/system_parameters/gnss_satellite.h index 58a3b1165..519deb671 100644 --- a/src/core/system_parameters/gnss_satellite.h +++ b/src/core/system_parameters/gnss_satellite.h @@ -34,8 +34,8 @@ #include #include -#include #include +#include /*! diff --git a/src/core/system_parameters/gnss_signal.cc b/src/core/system_parameters/gnss_signal.cc index cc2e8effd..0c25a7841 100644 --- a/src/core/system_parameters/gnss_signal.cc +++ b/src/core/system_parameters/gnss_signal.cc @@ -50,9 +50,7 @@ Gnss_Signal::Gnss_Signal(const Gnss_Satellite& satellite_, const std::string& si } -Gnss_Signal::~Gnss_Signal() -{ -} +Gnss_Signal::~Gnss_Signal() = default; std::string Gnss_Signal::get_signal_str() const @@ -80,7 +78,7 @@ bool operator==(const Gnss_Signal& sig1, const Gnss_Signal& sig2) if (sig1.get_satellite() == sig2.get_satellite()) { - if (sig1.get_signal_str().compare(sig1.get_signal_str()) == 0) + if (sig1.get_signal_str() == sig1.get_signal_str()) { equal = true; } diff --git a/src/core/system_parameters/gnss_synchro.h b/src/core/system_parameters/gnss_synchro.h index 9e0580544..117bdda7e 100644 --- a/src/core/system_parameters/gnss_synchro.h +++ b/src/core/system_parameters/gnss_synchro.h @@ -33,8 +33,8 @@ #ifndef GNSS_SDR_GNSS_SYNCHRO_H_ #define GNSS_SDR_GNSS_SYNCHRO_H_ -#include #include "gnss_signal.h" +#include #include /*! diff --git a/src/core/system_parameters/gps_almanac.cc b/src/core/system_parameters/gps_almanac.cc index 987032668..ec0bd828a 100644 --- a/src/core/system_parameters/gps_almanac.cc +++ b/src/core/system_parameters/gps_almanac.cc @@ -36,7 +36,7 @@ Gps_Almanac::Gps_Almanac() { i_satellite_PRN = 0U; d_Delta_i = 0.0; - i_Toa = 0.0; + i_Toa = 0; i_WNa = 0; d_M_0 = 0.0; d_e_eccentricity = 0.0; diff --git a/src/core/system_parameters/gps_cnav_ephemeris.cc b/src/core/system_parameters/gps_cnav_ephemeris.cc index 41b3dd655..cb96a8a73 100644 --- a/src/core/system_parameters/gps_cnav_ephemeris.cc +++ b/src/core/system_parameters/gps_cnav_ephemeris.cc @@ -37,17 +37,17 @@ Gps_CNAV_Ephemeris::Gps_CNAV_Ephemeris() { i_satellite_PRN = 0U; - d_Toe1 = -1.0; - d_Toe2 = -1.0; + d_Toe1 = -1; + d_Toe2 = -1; - d_TOW = 0.0; + d_TOW = 0; d_Crs = 0.0; d_M_0 = 0.0; d_Cuc = 0.0; d_e_eccentricity = 0.0; d_Cus = 0.0; - d_Toc = 0.0; + d_Toc = 0; d_Cic = 0.0; d_OMEGA0 = 0.0; d_Cis = 0.0; @@ -79,7 +79,7 @@ Gps_CNAV_Ephemeris::Gps_CNAV_Ephemeris() i_URA = 0; i_signal_health = 0; - d_Top = 0.0; + d_Top = 0; d_DELTA_A = 0.0; d_A_DOT = 0.0; d_Delta_n = 0.0; diff --git a/src/core/system_parameters/gps_cnav_ephemeris.h b/src/core/system_parameters/gps_cnav_ephemeris.h index 158206994..5f39454ea 100644 --- a/src/core/system_parameters/gps_cnav_ephemeris.h +++ b/src/core/system_parameters/gps_cnav_ephemeris.h @@ -54,7 +54,7 @@ public: int32_t i_GPS_week; //!< GPS week number, aka WN [week] int32_t i_URA; //!< ED Accuracy Index int32_t i_signal_health; //!< Signal health (L1/L2/L5) - double d_Top; //!< Data predict time of week + int32_t d_Top; //!< Data predict time of week double d_DELTA_A; //!< Semi-major axis difference at reference time double d_A_DOT; //!< Change rate in semi-major axis double d_Delta_n; //!< Mean Motion Difference From Computed Value [semi-circles/s] @@ -63,8 +63,8 @@ public: double d_e_eccentricity; //!< Eccentricity double d_OMEGA; //!< Argument of Perigee [semi-cicles] double d_OMEGA0; //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-cicles] - double d_Toe1; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] - double d_Toe2; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] + int32_t d_Toe1; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] + int32_t d_Toe2; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] double d_DELTA_OMEGA_DOT; //!< Rate of Right Ascension difference [semi-circles/s] double d_i_0; //!< Inclination Angle at Reference Time [semi-circles] double d_IDOT; //!< Rate of Inclination Angle [semi-circles/s] @@ -76,7 +76,7 @@ public: double d_Cuc; //!< Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude [rad] // Clock Correction and Accuracy Parameters - double d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [s] + int32_t d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [s] double d_A_f0; //!< Coefficient 0 of code phase offset model [s] double d_A_f1; //!< Coefficient 1 of code phase offset model [s/s] double d_A_f2; //!< Coefficient 2 of code phase offset model [s/s^2] @@ -92,7 +92,7 @@ public: double d_ISCL5I; double d_ISCL5Q; - double d_TOW; //!< Time of GPS Week of the ephemeris set (taken from subframes TOW) [s] + int32_t d_TOW; //!< Time of GPS Week of the ephemeris set (taken from subframes TOW) [s] /*! \brief If true, enhanced level of integrity assurance. * diff --git a/src/core/system_parameters/gps_cnav_navigation_message.cc b/src/core/system_parameters/gps_cnav_navigation_message.cc index 642695469..ea1d10782 100644 --- a/src/core/system_parameters/gps_cnav_navigation_message.cc +++ b/src/core/system_parameters/gps_cnav_navigation_message.cc @@ -55,7 +55,7 @@ void Gps_CNAV_Navigation_Message::reset() d_satvel_Y = 0.0; d_satvel_Z = 0.0; - d_TOW = 0.0; + d_TOW = 0; } @@ -72,11 +72,11 @@ Gps_CNAV_Navigation_Message::Gps_CNAV_Navigation_Message() } -bool Gps_CNAV_Navigation_Message::read_navigation_bool(std::bitset bits, const std::vector> parameter) +bool Gps_CNAV_Navigation_Message::read_navigation_bool(std::bitset bits, const std::vector>& parameter) { bool value; - if (bits[GPS_CNAV_DATA_PAGE_BITS - parameter[0].first] == 1) + if (static_cast(bits[GPS_CNAV_DATA_PAGE_BITS - parameter[0].first]) == 1) { value = true; } @@ -88,7 +88,7 @@ bool Gps_CNAV_Navigation_Message::read_navigation_bool(std::bitset bits, const std::vector> parameter) +uint64_t Gps_CNAV_Navigation_Message::read_navigation_unsigned(std::bitset bits, const std::vector>& parameter) { uint64_t value = 0ULL; int32_t num_of_slices = parameter.size(); @@ -97,7 +97,7 @@ uint64_t Gps_CNAV_Navigation_Message::read_navigation_unsigned(std::bitset(bits[GPS_CNAV_DATA_PAGE_BITS - parameter[i].first - j]) == 1) { value += 1ULL; // insert the bit } @@ -107,13 +107,13 @@ uint64_t Gps_CNAV_Navigation_Message::read_navigation_unsigned(std::bitset bits, const std::vector> parameter) +int64_t Gps_CNAV_Navigation_Message::read_navigation_signed(std::bitset bits, const std::vector>& parameter) { int64_t value = 0LL; int32_t num_of_slices = parameter.size(); // read the MSB and perform the sign extension - if (bits[GPS_CNAV_DATA_PAGE_BITS - parameter[0].first] == 1) + if (static_cast(bits[GPS_CNAV_DATA_PAGE_BITS - parameter[0].first]) == 1) { value ^= 0xFFFFFFFFFFFFFFFFLL; // 64 bits variable } @@ -128,7 +128,7 @@ int64_t Gps_CNAV_Navigation_Message::read_navigation_signed(std::bitset(bits[GPS_CNAV_DATA_PAGE_BITS - parameter[i].first - j]) == 1) { value += 1LL; // insert the bit } @@ -148,7 +148,7 @@ void Gps_CNAV_Navigation_Message::decode_page(std::bitset(read_navigation_unsigned(data_bits, CNAV_PRN)); ephemeris_record.i_satellite_PRN = PRN; - d_TOW = static_cast(read_navigation_unsigned(data_bits, CNAV_TOW)); + d_TOW = static_cast(read_navigation_unsigned(data_bits, CNAV_TOW)); d_TOW *= CNAV_TOW_LSB; ephemeris_record.d_TOW = d_TOW; @@ -162,10 +162,10 @@ void Gps_CNAV_Navigation_Message::decode_page(std::bitset(read_navigation_unsigned(data_bits, CNAV_WN)); ephemeris_record.i_signal_health = static_cast(read_navigation_unsigned(data_bits, CNAV_HEALTH)); - ephemeris_record.d_Top = static_cast(read_navigation_unsigned(data_bits, CNAV_TOP1)); + ephemeris_record.d_Top = static_cast(read_navigation_unsigned(data_bits, CNAV_TOP1)); ephemeris_record.d_Top *= CNAV_TOP1_LSB; ephemeris_record.d_URA0 = static_cast(read_navigation_signed(data_bits, CNAV_URA)); - ephemeris_record.d_Toe1 = static_cast(read_navigation_unsigned(data_bits, CNAV_TOE1)); + ephemeris_record.d_Toe1 = static_cast(read_navigation_unsigned(data_bits, CNAV_TOE1)); ephemeris_record.d_Toe1 *= CNAV_TOE1_LSB; ephemeris_record.d_DELTA_A = static_cast(read_navigation_signed(data_bits, CNAV_DELTA_A)); ephemeris_record.d_DELTA_A *= CNAV_DELTA_A_LSB; @@ -188,7 +188,7 @@ void Gps_CNAV_Navigation_Message::decode_page(std::bitset(read_navigation_unsigned(data_bits, CNAV_TOE2)); + ephemeris_record.d_Toe2 = static_cast(read_navigation_unsigned(data_bits, CNAV_TOE2)); ephemeris_record.d_Toe2 *= CNAV_TOE2_LSB; ephemeris_record.d_OMEGA0 = static_cast(read_navigation_signed(data_bits, CNAV_OMEGA0)); ephemeris_record.d_OMEGA0 *= CNAV_OMEGA0_LSB; @@ -214,7 +214,7 @@ void Gps_CNAV_Navigation_Message::decode_page(std::bitset(read_navigation_unsigned(data_bits, CNAV_TOC)); + ephemeris_record.d_Toc = static_cast(read_navigation_unsigned(data_bits, CNAV_TOC)); ephemeris_record.d_Toc *= CNAV_TOC_LSB; ephemeris_record.d_URA0 = static_cast(read_navigation_signed(data_bits, CNAV_URA_NED0)); ephemeris_record.d_URA1 = static_cast(read_navigation_unsigned(data_bits, CNAV_URA_NED1)); @@ -282,9 +282,9 @@ void Gps_CNAV_Navigation_Message::decode_page(std::bitset(read_navigation_unsigned(data_bits, CNAV_TOP1)); + ephemeris_record.d_Top = static_cast(read_navigation_unsigned(data_bits, CNAV_TOP1)); ephemeris_record.d_Top = ephemeris_record.d_Top * CNAV_TOP1_LSB; - ephemeris_record.d_Toc = static_cast(read_navigation_unsigned(data_bits, CNAV_TOC)); + ephemeris_record.d_Toc = static_cast(read_navigation_unsigned(data_bits, CNAV_TOC)); ephemeris_record.d_Toc = ephemeris_record.d_Toc * CNAV_TOC_LSB; ephemeris_record.d_A_f0 = static_cast(read_navigation_signed(data_bits, CNAV_AF0)); ephemeris_record.d_A_f0 = ephemeris_record.d_A_f0 * CNAV_AF0_LSB; @@ -300,22 +300,22 @@ void Gps_CNAV_Navigation_Message::decode_page(std::bitset(read_navigation_signed(data_bits, CNAV_A2)); utc_model_record.d_A2 = utc_model_record.d_A2 * CNAV_A2_LSB; - utc_model_record.d_DeltaT_LS = static_cast(read_navigation_signed(data_bits, CNAV_DELTA_TLS)); + utc_model_record.d_DeltaT_LS = static_cast(read_navigation_signed(data_bits, CNAV_DELTA_TLS)); utc_model_record.d_DeltaT_LS = utc_model_record.d_DeltaT_LS * CNAV_DELTA_TLS_LSB; - utc_model_record.d_t_OT = static_cast(read_navigation_signed(data_bits, CNAV_TOT)); + utc_model_record.d_t_OT = static_cast(read_navigation_signed(data_bits, CNAV_TOT)); utc_model_record.d_t_OT = utc_model_record.d_t_OT * CNAV_TOT_LSB; - utc_model_record.i_WN_T = static_cast(read_navigation_signed(data_bits, CNAV_WN_OT)); + utc_model_record.i_WN_T = static_cast(read_navigation_signed(data_bits, CNAV_WN_OT)); utc_model_record.i_WN_T = utc_model_record.i_WN_T * CNAV_WN_OT_LSB; - utc_model_record.i_WN_LSF = static_cast(read_navigation_signed(data_bits, CNAV_WN_LSF)); + utc_model_record.i_WN_LSF = static_cast(read_navigation_signed(data_bits, CNAV_WN_LSF)); utc_model_record.i_WN_LSF = utc_model_record.i_WN_LSF * CNAV_WN_LSF_LSB; - utc_model_record.i_DN = static_cast(read_navigation_signed(data_bits, CNAV_DN)); + utc_model_record.i_DN = static_cast(read_navigation_signed(data_bits, CNAV_DN)); utc_model_record.i_DN = utc_model_record.i_DN * CNAV_DN_LSB; - utc_model_record.d_DeltaT_LSF = static_cast(read_navigation_signed(data_bits, CNAV_DELTA_TLSF)); + utc_model_record.d_DeltaT_LSF = static_cast(read_navigation_signed(data_bits, CNAV_DELTA_TLSF)); utc_model_record.d_DeltaT_LSF = utc_model_record.d_DeltaT_LSF * CNAV_DELTA_TLSF_LSB; b_flag_utc_valid = true; break; @@ -337,15 +337,8 @@ bool Gps_CNAV_Navigation_Message::have_new_ephemeris() // Check if we have a ne b_flag_ephemeris_2 = false; // clear the flag return true; } - else - { - return false; - } - } - else - { - return false; } + return false; } @@ -362,10 +355,7 @@ bool Gps_CNAV_Navigation_Message::have_new_iono() // Check if we have a new ion b_flag_iono_valid = false; // clear the flag return true; } - else - { - return false; - } + return false; } @@ -382,10 +372,7 @@ bool Gps_CNAV_Navigation_Message::have_new_utc_model() // Check if we have a ne b_flag_utc_valid = false; // clear the flag return true; } - else - { - return false; - } + return false; } diff --git a/src/core/system_parameters/gps_cnav_navigation_message.h b/src/core/system_parameters/gps_cnav_navigation_message.h index cdd6447b0..62fc6fbc1 100644 --- a/src/core/system_parameters/gps_cnav_navigation_message.h +++ b/src/core/system_parameters/gps_cnav_navigation_message.h @@ -41,8 +41,8 @@ #include #include #include -#include #include +#include //TODO: Create GPS CNAV almanac //#include "gps_almanac.h" @@ -56,16 +56,16 @@ class Gps_CNAV_Navigation_Message { private: - uint64_t read_navigation_unsigned(std::bitset bits, const std::vector> parameter); - int64_t read_navigation_signed(std::bitset bits, const std::vector> parameter); - bool read_navigation_bool(std::bitset bits, const std::vector> parameter); + uint64_t read_navigation_unsigned(std::bitset bits, const std::vector>& parameter); + int64_t read_navigation_signed(std::bitset bits, const std::vector>& parameter); + bool read_navigation_bool(std::bitset bits, const std::vector>& parameter); Gps_CNAV_Ephemeris ephemeris_record; Gps_CNAV_Iono iono_record; Gps_CNAV_Utc_Model utc_model_record; public: - double d_TOW; + int32_t d_TOW; bool b_flag_ephemeris_1; bool b_flag_ephemeris_2; bool b_flag_iono_valid; //!< If set, it indicates that the ionospheric parameters are filled and are not yet read by the get_iono diff --git a/src/core/system_parameters/gps_cnav_utc_model.cc b/src/core/system_parameters/gps_cnav_utc_model.cc index 90e1a4af2..673329f31 100644 --- a/src/core/system_parameters/gps_cnav_utc_model.cc +++ b/src/core/system_parameters/gps_cnav_utc_model.cc @@ -37,12 +37,12 @@ Gps_CNAV_Utc_Model::Gps_CNAV_Utc_Model() d_A2 = 0.0; d_A1 = 0.0; d_A0 = 0.0; - d_t_OT = 0.0; + d_t_OT = 0; i_WN_T = 0; - d_DeltaT_LS = 0.0; + d_DeltaT_LS = 0; i_WN_LSF = 0; i_DN = 0; - d_DeltaT_LSF = 0.0; + d_DeltaT_LSF = 0; } @@ -84,7 +84,7 @@ double Gps_CNAV_Utc_Model::utc_time(double gpstime_corrected, int32_t i_GPS_week * proper accommodation of the leap second event with a possible week number * transition is provided by the following expression for UTC: */ - int32_t W = fmod(gpstime_corrected - Delta_t_UTC - 43200, 86400) + 43200; + int32_t W = static_cast(fmod(gpstime_corrected - Delta_t_UTC - 43200, 86400)) + 43200; t_utc_daytime = fmod(W, 86400 + d_DeltaT_LSF - d_DeltaT_LS); // implement something to handle a leap second event! } diff --git a/src/core/system_parameters/gps_cnav_utc_model.h b/src/core/system_parameters/gps_cnav_utc_model.h index b9dba4936..555c7c640 100644 --- a/src/core/system_parameters/gps_cnav_utc_model.h +++ b/src/core/system_parameters/gps_cnav_utc_model.h @@ -46,15 +46,15 @@ class Gps_CNAV_Utc_Model public: bool valid; // UTC parameters - double d_A2; //!< 2nd order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200H) [s/s] - double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200H) [s/s] - double d_A0; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200H) [s] - double d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200H) [s] - int32_t i_WN_T; //!< UTC reference week number [weeks] - double d_DeltaT_LS; //!< delta time due to leap seconds [s]. Number of leap seconds since 6-Jan-1980 as transmitted by the GPS almanac. - int32_t i_WN_LSF; //!< Week number at the end of which the leap second becomes effective [weeks] - int32_t i_DN; //!< Day number (DN) at the end of which the leap second becomes effective [days] - double d_DeltaT_LSF; //!< Scheduled future or recent past (relative to NAV message upload) value of the delta time due to leap seconds [s] + double d_A2; //!< 2nd order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200H) [s/s] + double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200H) [s/s] + double d_A0; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200H) [s] + int32_t d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200H) [s] + int32_t i_WN_T; //!< UTC reference week number [weeks] + int32_t d_DeltaT_LS; //!< delta time due to leap seconds [s]. Number of leap seconds since 6-Jan-1980 as transmitted by the GPS almanac. + int32_t i_WN_LSF; //!< Week number at the end of which the leap second becomes effective [weeks] + int32_t i_DN; //!< Day number (DN) at the end of which the leap second becomes effective [days] + int32_t d_DeltaT_LSF; //!< Scheduled future or recent past (relative to NAV message upload) value of the delta time due to leap seconds [s] /*! * Default constructor diff --git a/src/core/system_parameters/gps_ephemeris.cc b/src/core/system_parameters/gps_ephemeris.cc index c7f394efc..c6e181815 100644 --- a/src/core/system_parameters/gps_ephemeris.cc +++ b/src/core/system_parameters/gps_ephemeris.cc @@ -31,14 +31,14 @@ */ #include "gps_ephemeris.h" -#include "gnss_satellite.h" #include "GPS_L1_CA.h" +#include "gnss_satellite.h" #include Gps_Ephemeris::Gps_Ephemeris() { i_satellite_PRN = 0U; - d_TOW = 0.0; + d_TOW = 0; d_Crs = 0.0; d_Delta_n = 0.0; d_M_0 = 0.0; @@ -46,8 +46,8 @@ Gps_Ephemeris::Gps_Ephemeris() d_e_eccentricity = 0.0; d_Cus = 0.0; d_sqrt_A = 0.0; - d_Toe = 0.0; - d_Toc = 0.0; + d_Toe = 0; + d_Toc = 0; d_Cic = 0.0; d_OMEGA0 = 0.0; d_Cis = 0.0; @@ -61,11 +61,11 @@ Gps_Ephemeris::Gps_Ephemeris() b_L2_P_data_flag = false; i_SV_accuracy = 0; i_SV_health = 0; - d_IODE_SF2 = 0.0; - d_IODE_SF3 = 0.0; - d_TGD = 0.0; // Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s] - d_IODC = 0.0; // Issue of Data, Clock - i_AODO = 0; // Age of Data Offset (AODO) term for the navigation message correction table (NMCT) contained in subframe 4 (reference paragraph 20.3.3.5.1.9) [s] + d_IODE_SF2 = 0; + d_IODE_SF3 = 0; + d_TGD = 0.0; // Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s] + d_IODC = 0; // Issue of Data, Clock + i_AODO = 0; // Age of Data Offset (AODO) term for the navigation message correction table (NMCT) contained in subframe 4 (reference paragraph 20.3.3.5.1.9) [s] b_fit_interval_flag = false; // indicates the curve-fit interval used by the CS (Block II/IIA/IIR/IIR-M/IIF) and SS (Block IIIA) in determining the ephemeris parameters, as follows: 0 = 4 hours, 1 = greater than 4 hours. d_spare1 = 0.0; diff --git a/src/core/system_parameters/gps_ephemeris.h b/src/core/system_parameters/gps_ephemeris.h index 5466b54d9..683eb9135 100644 --- a/src/core/system_parameters/gps_ephemeris.h +++ b/src/core/system_parameters/gps_ephemeris.h @@ -34,8 +34,8 @@ #include -#include #include +#include #include #include #include @@ -60,7 +60,7 @@ private: public: uint32_t i_satellite_PRN; // SV PRN NUMBER - double d_TOW; //!< Time of GPS Week of the ephemeris set (taken from subframes TOW) [s] + int32_t d_TOW; //!< Time of GPS Week of the ephemeris set (taken from subframes TOW) [s] double d_Crs; //!< Amplitude of the Sine Harmonic Correction Term to the Orbit Radius [m] double d_Delta_n; //!< Mean Motion Difference From Computed Value [semi-circles/s] double d_M_0; //!< Mean Anomaly at Reference Time [semi-circles] @@ -68,8 +68,8 @@ public: double d_e_eccentricity; //!< Eccentricity [dimensionless] double d_Cus; //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad] double d_sqrt_A; //!< Square Root of the Semi-Major Axis [sqrt(m)] - double d_Toe; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] - double d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [s] + int32_t d_Toe; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] + int32_t d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [s] double d_Cic; //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad] double d_OMEGA0; //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles] double d_Cis; //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad] @@ -83,11 +83,11 @@ public: bool b_L2_P_data_flag; //!< When true, indicates that the NAV data stream was commanded OFF on the P-code of the L2 channel int32_t i_SV_accuracy; //!< User Range Accuracy (URA) index of the SV (reference paragraph 6.2.1) for the standard positioning service user (Ref 20.3.3.3.1.3 IS-GPS-200E) int32_t i_SV_health; - double d_TGD; //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s] - double d_IODC; //!< Issue of Data, Clock - double d_IODE_SF2; //!< Issue of Data, Ephemeris (IODE), subframe 2 - double d_IODE_SF3; //!< Issue of Data, Ephemeris(IODE), subframe 3 - int32_t i_AODO; //!< Age of Data Offset (AODO) term for the navigation message correction table (NMCT) contained in subframe 4 (reference paragraph 20.3.3.5.1.9) [s] + double d_TGD; //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s] + int32_t d_IODC; //!< Issue of Data, Clock + int32_t d_IODE_SF2; //!< Issue of Data, Ephemeris (IODE), subframe 2 + int32_t d_IODE_SF3; //!< Issue of Data, Ephemeris(IODE), subframe 3 + int32_t i_AODO; //!< Age of Data Offset (AODO) term for the navigation message correction table (NMCT) contained in subframe 4 (reference paragraph 20.3.3.5.1.9) [s] bool b_fit_interval_flag; //!< indicates the curve-fit interval used by the CS (Block II/IIA/IIR/IIR-M/IIF) and SS (Block IIIA) in determining the ephemeris parameters, as follows: 0 = 4 hours, 1 = greater than 4 hours. double d_spare1; @@ -111,7 +111,7 @@ public: */ bool b_integrity_status_flag; bool b_alert_flag; //!< If true, indicates that the SV URA may be worse than indicated in d_SV_accuracy, use that SV at our own risk. - bool b_antispoofing_flag; //!< If true, the AntiSpoofing mode is ON in that SV + bool b_antispoofing_flag; //!< If true, the AntiSpoofing mode is ON in that SV // clock terms derived from ephemeris data double d_satClkDrift; //!< GPS clock error diff --git a/src/core/system_parameters/gps_navigation_message.cc b/src/core/system_parameters/gps_navigation_message.cc index e4a7f1db1..e38f6bdb2 100644 --- a/src/core/system_parameters/gps_navigation_message.cc +++ b/src/core/system_parameters/gps_navigation_message.cc @@ -39,14 +39,14 @@ m * \file gps_navigation_message.cc void Gps_Navigation_Message::reset() { b_valid_ephemeris_set_flag = false; - d_TOW = 0.0; - d_TOW_SF1 = 0.0; - d_TOW_SF2 = 0.0; - d_TOW_SF3 = 0.0; - d_TOW_SF4 = 0.0; - d_TOW_SF5 = 0.0; - d_IODE_SF2 = 0.0; - d_IODE_SF3 = 0.0; + d_TOW = 0; + d_TOW_SF1 = 0; + d_TOW_SF2 = 0; + d_TOW_SF3 = 0; + d_TOW_SF4 = 0; + d_TOW_SF5 = 0; + d_IODE_SF2 = 0; + d_IODE_SF3 = 0; d_Crs = 0.0; d_Delta_n = 0.0; d_M_0 = 0.0; @@ -54,8 +54,8 @@ void Gps_Navigation_Message::reset() d_e_eccentricity = 0.0; d_Cus = 0.0; d_sqrt_A = 0.0; - d_Toe = 0.0; - d_Toc = 0.0; + d_Toe = 0; + d_Toc = 0; d_Cic = 0.0; d_OMEGA0 = 0.0; d_Cis = 0.0; @@ -70,7 +70,7 @@ void Gps_Navigation_Message::reset() i_SV_accuracy = 0; i_SV_health = 0; d_TGD = 0.0; - d_IODC = -1.0; + d_IODC = -1; i_AODO = 0; b_fit_interval_flag = false; @@ -117,12 +117,12 @@ void Gps_Navigation_Message::reset() d_beta3 = 0.0; d_A1 = 0.0; d_A0 = 0.0; - d_t_OT = 0.0; + d_t_OT = 0; i_WN_T = 0; - d_DeltaT_LS = 0.0; + d_DeltaT_LS = 0; i_WN_LSF = 0; i_DN = 0; - d_DeltaT_LSF = 0.0; + d_DeltaT_LSF = 0; // Almanac i_Toa = 0; @@ -160,11 +160,11 @@ void Gps_Navigation_Message::print_gps_word_bytes(uint32_t GPS_word) } -bool Gps_Navigation_Message::read_navigation_bool(std::bitset bits, const std::vector> parameter) +bool Gps_Navigation_Message::read_navigation_bool(std::bitset bits, const std::vector>& parameter) { bool value; - if (bits[GPS_SUBFRAME_BITS - parameter[0].first] == 1) + if (static_cast(bits[GPS_SUBFRAME_BITS - parameter[0].first]) == 1) { value = true; } @@ -176,7 +176,7 @@ bool Gps_Navigation_Message::read_navigation_bool(std::bitset } -uint64_t Gps_Navigation_Message::read_navigation_unsigned(std::bitset bits, const std::vector> parameter) +uint64_t Gps_Navigation_Message::read_navigation_unsigned(std::bitset bits, const std::vector>& parameter) { uint64_t value = 0ULL; int32_t num_of_slices = parameter.size(); @@ -185,7 +185,7 @@ uint64_t Gps_Navigation_Message::read_navigation_unsigned(std::bitset(bits[GPS_SUBFRAME_BITS - parameter[i].first - j]) == 1) { value += 1ULL; // insert the bit } @@ -195,13 +195,13 @@ uint64_t Gps_Navigation_Message::read_navigation_unsigned(std::bitset bits, const std::vector> parameter) +int64_t Gps_Navigation_Message::read_navigation_signed(std::bitset bits, const std::vector>& parameter) { int64_t value = 0LL; int32_t num_of_slices = parameter.size(); // read the MSB and perform the sign extension - if (bits[GPS_SUBFRAME_BITS - parameter[0].first] == 1) + if (static_cast(bits[GPS_SUBFRAME_BITS - parameter[0].first]) == 1) { value ^= 0xFFFFFFFFFFFFFFFFLL; // 64 bits variable } @@ -216,7 +216,7 @@ int64_t Gps_Navigation_Message::read_navigation_signed(std::bitset(bits[GPS_SUBFRAME_BITS - parameter[i].first - j]) == 1) { value += 1LL; // insert the bit } @@ -226,7 +226,7 @@ int64_t Gps_Navigation_Message::read_navigation_signed(std::bitset(read_navigation_unsigned(subframe_bits, TOW)); + d_TOW_SF1 = static_cast(read_navigation_unsigned(subframe_bits, TOW)); //we are in the first subframe (the transmitted TOW is the start time of the next subframe) ! - d_TOW_SF1 = d_TOW_SF1 * 6.0; + d_TOW_SF1 = d_TOW_SF1 * 6; d_TOW = d_TOW_SF1; // Set transmission time b_integrity_status_flag = read_navigation_bool(subframe_bits, INTEGRITY_STATUS_FLAG); b_alert_flag = read_navigation_bool(subframe_bits, ALERT_FLAG); @@ -271,8 +271,8 @@ int32_t Gps_Navigation_Message::subframe_decoder(char *subframe) i_code_on_L2 = static_cast(read_navigation_unsigned(subframe_bits, CA_OR_P_ON_L2)); d_TGD = static_cast(read_navigation_signed(subframe_bits, T_GD)); d_TGD = d_TGD * T_GD_LSB; - d_IODC = static_cast(read_navigation_unsigned(subframe_bits, IODC)); - d_Toc = static_cast(read_navigation_unsigned(subframe_bits, T_OC)); + d_IODC = static_cast(read_navigation_unsigned(subframe_bits, IODC)); + d_Toc = static_cast(read_navigation_unsigned(subframe_bits, T_OC)); d_Toc = d_Toc * T_OC_LSB; d_A_f0 = static_cast(read_navigation_signed(subframe_bits, A_F0)); d_A_f0 = d_A_f0 * A_F0_LSB; @@ -283,13 +283,13 @@ int32_t Gps_Navigation_Message::subframe_decoder(char *subframe) break; case 2: //--- It is subframe 2 ------------------- - d_TOW_SF2 = static_cast(read_navigation_unsigned(subframe_bits, TOW)); - d_TOW_SF2 = d_TOW_SF2 * 6.0; + d_TOW_SF2 = static_cast(read_navigation_unsigned(subframe_bits, TOW)); + d_TOW_SF2 = d_TOW_SF2 * 6; d_TOW = d_TOW_SF2; // Set transmission time b_integrity_status_flag = read_navigation_bool(subframe_bits, INTEGRITY_STATUS_FLAG); b_alert_flag = read_navigation_bool(subframe_bits, ALERT_FLAG); b_antispoofing_flag = read_navigation_bool(subframe_bits, ANTI_SPOOFING_FLAG); - d_IODE_SF2 = static_cast(read_navigation_unsigned(subframe_bits, IODE_SF2)); + d_IODE_SF2 = static_cast(read_navigation_unsigned(subframe_bits, IODE_SF2)); d_Crs = static_cast(read_navigation_signed(subframe_bits, C_RS)); d_Crs = d_Crs * C_RS_LSB; d_Delta_n = static_cast(read_navigation_signed(subframe_bits, DELTA_N)); @@ -304,7 +304,7 @@ int32_t Gps_Navigation_Message::subframe_decoder(char *subframe) d_Cus = d_Cus * C_US_LSB; d_sqrt_A = static_cast(read_navigation_unsigned(subframe_bits, SQRT_A)); d_sqrt_A = d_sqrt_A * SQRT_A_LSB; - d_Toe = static_cast(read_navigation_unsigned(subframe_bits, T_OE)); + d_Toe = static_cast(read_navigation_unsigned(subframe_bits, T_OE)); d_Toe = d_Toe * T_OE_LSB; b_fit_interval_flag = read_navigation_bool(subframe_bits, FIT_INTERVAL_FLAG); i_AODO = static_cast(read_navigation_unsigned(subframe_bits, AODO)); @@ -312,8 +312,8 @@ int32_t Gps_Navigation_Message::subframe_decoder(char *subframe) break; case 3: // --- It is subframe 3 ------------------------------------- - d_TOW_SF3 = static_cast(read_navigation_unsigned(subframe_bits, TOW)); - d_TOW_SF3 = d_TOW_SF3 * 6.0; + d_TOW_SF3 = static_cast(read_navigation_unsigned(subframe_bits, TOW)); + d_TOW_SF3 = d_TOW_SF3 * 6; d_TOW = d_TOW_SF3; // Set transmission time b_integrity_status_flag = read_navigation_bool(subframe_bits, INTEGRITY_STATUS_FLAG); b_alert_flag = read_navigation_bool(subframe_bits, ALERT_FLAG); @@ -332,7 +332,7 @@ int32_t Gps_Navigation_Message::subframe_decoder(char *subframe) d_OMEGA = d_OMEGA * OMEGA_LSB; d_OMEGA_DOT = static_cast(read_navigation_signed(subframe_bits, OMEGA_DOT)); d_OMEGA_DOT = d_OMEGA_DOT * OMEGA_DOT_LSB; - d_IODE_SF3 = static_cast(read_navigation_unsigned(subframe_bits, IODE_SF3)); + d_IODE_SF3 = static_cast(read_navigation_unsigned(subframe_bits, IODE_SF3)); d_IDOT = static_cast(read_navigation_signed(subframe_bits, I_DOT)); d_IDOT = d_IDOT * I_DOT_LSB; break; @@ -340,8 +340,8 @@ int32_t Gps_Navigation_Message::subframe_decoder(char *subframe) case 4: // --- It is subframe 4 ---------- Almanac, ionospheric model, UTC parameters, SV health (PRN: 25-32) int32_t SV_data_ID; int32_t SV_page; - d_TOW_SF4 = static_cast(read_navigation_unsigned(subframe_bits, TOW)); - d_TOW_SF4 = d_TOW_SF4 * 6.0; + d_TOW_SF4 = static_cast(read_navigation_unsigned(subframe_bits, TOW)); + d_TOW_SF4 = d_TOW_SF4 * 6; d_TOW = d_TOW_SF4; // Set transmission time b_integrity_status_flag = read_navigation_bool(subframe_bits, INTEGRITY_STATUS_FLAG); b_alert_flag = read_navigation_bool(subframe_bits, ALERT_FLAG); @@ -351,7 +351,7 @@ int32_t Gps_Navigation_Message::subframe_decoder(char *subframe) if (SV_page > 24 && SV_page < 33) // Page 4 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200H, page 110) { //! \TODO read almanac - if (SV_data_ID) + if (SV_data_ID != 0) { } } @@ -384,13 +384,13 @@ int32_t Gps_Navigation_Message::subframe_decoder(char *subframe) d_A1 = d_A1 * A_1_LSB; d_A0 = static_cast(read_navigation_signed(subframe_bits, A_0)); d_A0 = d_A0 * A_0_LSB; - d_t_OT = static_cast(read_navigation_unsigned(subframe_bits, T_OT)); + d_t_OT = static_cast(read_navigation_unsigned(subframe_bits, T_OT)); d_t_OT = d_t_OT * T_OT_LSB; i_WN_T = static_cast(read_navigation_unsigned(subframe_bits, WN_T)); - d_DeltaT_LS = static_cast(read_navigation_signed(subframe_bits, DELTAT_LS)); + d_DeltaT_LS = static_cast(read_navigation_signed(subframe_bits, DELTAT_LS)); i_WN_LSF = static_cast(read_navigation_unsigned(subframe_bits, WN_LSF)); i_DN = static_cast(read_navigation_unsigned(subframe_bits, DN)); // Right-justified ? - d_DeltaT_LSF = static_cast(read_navigation_signed(subframe_bits, DELTAT_LSF)); + d_DeltaT_LSF = static_cast(read_navigation_signed(subframe_bits, DELTAT_LSF)); flag_iono_valid = true; flag_utc_model_valid = true; } @@ -417,8 +417,8 @@ int32_t Gps_Navigation_Message::subframe_decoder(char *subframe) case 5: //--- It is subframe 5 -----------------almanac health (PRN: 1-24) and Almanac reference week number and time. int32_t SV_data_ID_5; int32_t SV_page_5; - d_TOW_SF5 = static_cast(read_navigation_unsigned(subframe_bits, TOW)); - d_TOW_SF5 = d_TOW_SF5 * 6.0; + d_TOW_SF5 = static_cast(read_navigation_unsigned(subframe_bits, TOW)); + d_TOW_SF5 = d_TOW_SF5 * 6; d_TOW = d_TOW_SF5; // Set transmission time b_integrity_status_flag = read_navigation_bool(subframe_bits, INTEGRITY_STATUS_FLAG); b_alert_flag = read_navigation_bool(subframe_bits, ALERT_FLAG); @@ -428,7 +428,7 @@ int32_t Gps_Navigation_Message::subframe_decoder(char *subframe) if (SV_page_5 < 25) { //! \TODO read almanac - if (SV_data_ID_5) + if (SV_data_ID_5 != 0) { } } @@ -510,7 +510,7 @@ double Gps_Navigation_Message::utc_time(const double gpstime_corrected) const * proper accommodation of the leap second event with a possible week number * transition is provided by the following expression for UTC: */ - int32_t W = fmod(gpstime_corrected - Delta_t_UTC - 43200, 86400) + 43200; + int32_t W = static_cast(fmod(gpstime_corrected - Delta_t_UTC - 43200, 86400)) + 43200; t_utc_daytime = fmod(W, 86400 + d_DeltaT_LSF - d_DeltaT_LS); //implement something to handle a leap second event! } diff --git a/src/core/system_parameters/gps_navigation_message.h b/src/core/system_parameters/gps_navigation_message.h index 595d74d30..1e79a02c9 100644 --- a/src/core/system_parameters/gps_navigation_message.h +++ b/src/core/system_parameters/gps_navigation_message.h @@ -34,9 +34,9 @@ #include "GPS_L1_CA.h" +#include "gps_almanac.h" #include "gps_ephemeris.h" #include "gps_iono.h" -#include "gps_almanac.h" #include "gps_utc_model.h" #include #include @@ -54,22 +54,22 @@ class Gps_Navigation_Message { private: - uint64_t read_navigation_unsigned(std::bitset bits, const std::vector> parameter); - int64_t read_navigation_signed(std::bitset bits, const std::vector> parameter); - bool read_navigation_bool(std::bitset bits, const std::vector> parameter); + uint64_t read_navigation_unsigned(std::bitset bits, const std::vector>& parameter); + int64_t read_navigation_signed(std::bitset bits, const std::vector>& parameter); + bool read_navigation_bool(std::bitset bits, const std::vector>& parameter); void print_gps_word_bytes(uint32_t GPS_word); public: bool b_valid_ephemeris_set_flag; // flag indicating that this ephemeris set have passed the validation check // broadcast orbit 1 - double d_TOW; //!< Time of GPS Week of the ephemeris set (taken from subframes TOW) [s] - double d_TOW_SF1; //!< Time of GPS Week from HOW word of Subframe 1 [s] - double d_TOW_SF2; //!< Time of GPS Week from HOW word of Subframe 2 [s] - double d_TOW_SF3; //!< Time of GPS Week from HOW word of Subframe 3 [s] - double d_TOW_SF4; //!< Time of GPS Week from HOW word of Subframe 4 [s] - double d_TOW_SF5; //!< Time of GPS Week from HOW word of Subframe 5 [s] - double d_IODE_SF2; - double d_IODE_SF3; + int32_t d_TOW; //!< Time of GPS Week of the ephemeris set (taken from subframes TOW) [s] + int32_t d_TOW_SF1; //!< Time of GPS Week from HOW word of Subframe 1 [s] + int32_t d_TOW_SF2; //!< Time of GPS Week from HOW word of Subframe 2 [s] + int32_t d_TOW_SF3; //!< Time of GPS Week from HOW word of Subframe 3 [s] + int32_t d_TOW_SF4; //!< Time of GPS Week from HOW word of Subframe 4 [s] + int32_t d_TOW_SF5; //!< Time of GPS Week from HOW word of Subframe 5 [s] + int32_t d_IODE_SF2; + int32_t d_IODE_SF3; double d_Crs; //!< Amplitude of the Sine Harmonic Correction Term to the Orbit Radius [m] double d_Delta_n; //!< Mean Motion Difference From Computed Value [semi-circles/s] double d_M_0; //!< Mean Anomaly at Reference Time [semi-circles] @@ -79,8 +79,8 @@ public: double d_Cus; //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad] double d_sqrt_A; //!< Square Root of the Semi-Major Axis [sqrt(m)] // broadcast orbit 3 - double d_Toe; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] - double d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [s] + int32_t d_Toe; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] + int32_t d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [s] double d_Cic; //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad] double d_OMEGA0; //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles] double d_Cis; //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad] @@ -97,8 +97,8 @@ public: // broadcast orbit 6 int32_t i_SV_accuracy; //!< User Range Accuracy (URA) index of the SV (reference paragraph 6.2.1) for the standard positioning service user (Ref 20.3.3.3.1.3 IS-GPS-200E) int32_t i_SV_health; - double d_TGD; //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s] - double d_IODC; //!< Issue of Data, Clock + double d_TGD; //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s] + int32_t d_IODC; //!< Issue of Data, Clock // broadcast orbit 7 int32_t i_AODO; //!< Age of Data Offset (AODO) term for the navigation message correction table (NMCT) contained in subframe 4 (reference paragraph 20.3.3.5.1.9) [s] bool b_fit_interval_flag; //!< indicates the curve-fit interval used by the CS (Block II/IIA/IIR/IIR-M/IIF) and SS (Block IIIA) in determining the ephemeris parameters, as follows: 0 = 4 hours, 1 = greater than 4 hours. @@ -162,14 +162,15 @@ public: // UTC parameters bool flag_utc_model_valid; //!< If set, it indicates that the UTC model parameters are filled - double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s/s] double d_A0; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s] - double d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200E) [s] + double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s/s] + double d_A2; //!< 2nd order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s/s] + int32_t d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200E) [s] int32_t i_WN_T; //!< UTC reference week number [weeks] - double d_DeltaT_LS; //!< delta time due to leap seconds [s]. Number of leap seconds since 6-Jan-1980 as transmitted by the GPS almanac. + int32_t d_DeltaT_LS; //!< delta time due to leap seconds [s]. Number of leap seconds since 6-Jan-1980 as transmitted by the GPS almanac. int32_t i_WN_LSF; //!< Week number at the end of which the leap second becomes effective [weeks] int32_t i_DN; //!< Day number (DN) at the end of which the leap second becomes effective [days] - double d_DeltaT_LSF; //!< Scheduled future or recent past (relative to NAV message upload) value of the delta time due to leap seconds [s] + int32_t d_DeltaT_LSF; //!< Scheduled future or recent past (relative to NAV message upload) value of the delta time due to leap seconds [s] // Satellite velocity double d_satvel_X; //!< Earth-fixed velocity coordinate x of the satellite [m] @@ -198,7 +199,7 @@ public: /*! * \brief Decodes the GPS NAV message */ - int32_t subframe_decoder(char *subframe); + int32_t subframe_decoder(char* subframe); /*! * \brief Computes the Coordinated Universal Time (UTC) and diff --git a/src/core/system_parameters/gps_utc_model.cc b/src/core/system_parameters/gps_utc_model.cc index 0f9a5744e..5641186b4 100644 --- a/src/core/system_parameters/gps_utc_model.cc +++ b/src/core/system_parameters/gps_utc_model.cc @@ -35,14 +35,15 @@ Gps_Utc_Model::Gps_Utc_Model() { valid = false; - d_A1 = 0.0; d_A0 = 0.0; - d_t_OT = 0.0; + d_A1 = 0.0; + d_A2 = 0.0; + d_t_OT = 0; i_WN_T = 0; - d_DeltaT_LS = 0.0; + d_DeltaT_LS = 0; i_WN_LSF = 0; i_DN = 0; - d_DeltaT_LSF = 0.0; + d_DeltaT_LSF = 0; } @@ -84,7 +85,7 @@ double Gps_Utc_Model::utc_time(double gpstime_corrected, int32_t i_GPS_week) * proper accommodation of the leap second event with a possible week number * transition is provided by the following expression for UTC: */ - int32_t W = fmod(gpstime_corrected - Delta_t_UTC - 43200, 86400) + 43200; + int32_t W = static_cast(fmod(gpstime_corrected - Delta_t_UTC - 43200, 86400)) + 43200; t_utc_daytime = fmod(W, 86400 + d_DeltaT_LSF - d_DeltaT_LS); // implement something to handle a leap second event! } diff --git a/src/core/system_parameters/gps_utc_model.h b/src/core/system_parameters/gps_utc_model.h index e037aff99..43283d30d 100644 --- a/src/core/system_parameters/gps_utc_model.h +++ b/src/core/system_parameters/gps_utc_model.h @@ -45,14 +45,15 @@ class Gps_Utc_Model public: bool valid; // UTC parameters - double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s/s] - double d_A0; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s] - double d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200E) [s] - int32_t i_WN_T; //!< UTC reference week number [weeks] - double d_DeltaT_LS; //!< delta time due to leap seconds [s]. Number of leap seconds since 6-Jan-1980 as transmitted by the GPS almanac. - int32_t i_WN_LSF; //!< Week number at the end of which the leap second becomes effective [weeks] - int32_t i_DN; //!< Day number (DN) at the end of which the leap second becomes effective [days] - double d_DeltaT_LSF; //!< Scheduled future or recent past (relative to NAV message upload) value of the delta time due to leap seconds [s] + double d_A0; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s] + double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s/s] + double d_A2; //!< 2nd order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s/s] + int32_t d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200E) [s] + int32_t i_WN_T; //!< UTC reference week number [weeks] + int32_t d_DeltaT_LS; //!< delta time due to leap seconds [s]. Number of leap seconds since 6-Jan-1980 as transmitted by the GPS almanac. + int32_t i_WN_LSF; //!< Week number at the end of which the leap second becomes effective [weeks] + int32_t i_DN; //!< Day number (DN) at the end of which the leap second becomes effective [days] + int32_t d_DeltaT_LSF; //!< Scheduled future or recent past (relative to NAV message upload) value of the delta time due to leap seconds [s] /*! * Default constructor diff --git a/src/core/system_parameters/rtcm.cc b/src/core/system_parameters/rtcm.cc index 24d3417ce..31640ce0a 100644 --- a/src/core/system_parameters/rtcm.cc +++ b/src/core/system_parameters/rtcm.cc @@ -29,8 +29,8 @@ */ #include "rtcm.h" -#include "Galileo_E1.h" #include "GPS_L2C.h" +#include "Galileo_E1.h" #include // for to_upper_copy #include #include @@ -178,10 +178,8 @@ bool Rtcm::check_CRC(const std::string& message) const { return true; } - else - { - return false; - } + + return false; } @@ -225,9 +223,9 @@ std::string Rtcm::binary_data_to_bin(const std::string& s) const std::string s_aux; std::stringstream ss; - for (uint32_t i = 0; i < s.length(); i++) + for (char i : s) { - uint8_t val = static_cast(s.at(i)); + auto val = static_cast(i); std::bitset<8> bs(val); ss << bs; } @@ -288,7 +286,7 @@ uint32_t Rtcm::bin_to_uint(const std::string& s) const LOG(WARNING) << "Cannot convert to a uint32_t"; return 0; } - uint32_t reading = strtoul(s.c_str(), NULL, 2); + uint32_t reading = strtoul(s.c_str(), nullptr, 2); return reading; } @@ -303,7 +301,7 @@ int32_t Rtcm::bin_to_int(const std::string& s) const int32_t reading; // Handle negative numbers - if (s.substr(0, 1).compare("0")) + if (s.substr(0, 1) != "0") { // Computing two's complement boost::dynamic_bitset<> original_bitset(s); @@ -312,7 +310,7 @@ int32_t Rtcm::bin_to_int(const std::string& s) const } else { - reading = strtol(s.c_str(), NULL, 2); + reading = strtol(s.c_str(), nullptr, 2); } return reading; } @@ -329,17 +327,17 @@ int32_t Rtcm::bin_to_sint(const std::string& s) const int32_t sign; // Check for sign bit as defined RTCM doc - if (s.substr(0, 1).compare("0") == 0) + if (s.substr(0, 1) != "0") { sign = 1; // Get the magnitude of the value - reading = strtol((s.substr(1)).c_str(), NULL, 2); + reading = strtol((s.substr(1)).c_str(), nullptr, 2); } else { sign = -1; // Get the magnitude of the value - reading = strtol((s.substr(1)).c_str(), NULL, 2); + reading = strtol((s.substr(1)).c_str(), nullptr, 2); } return sign * reading; } @@ -365,18 +363,18 @@ double Rtcm::bin_to_double(const std::string& s) const int64_t reading_int; // Handle negative numbers - if (s.substr(0, 1).compare("0")) + if (s.substr(0, 1) != "0") { // Computing two's complement boost::dynamic_bitset<> original_bitset(s); original_bitset.flip(); std::string aux; to_string(original_bitset, aux); - reading_int = -(strtoll(aux.c_str(), NULL, 2) + 1); + reading_int = -(strtoll(aux.c_str(), nullptr, 2) + 1); } else { - reading_int = strtoll(s.c_str(), NULL, 2); + reading_int = strtoll(s.c_str(), nullptr, 2); } reading = static_cast(reading_int); @@ -391,7 +389,7 @@ uint64_t Rtcm::hex_to_uint(const std::string& s) const LOG(WARNING) << "Cannot convert to a uint64_t"; return 0; } - uint64_t reading = strtoul(s.c_str(), NULL, 16); + uint64_t reading = strtoul(s.c_str(), nullptr, 16); return reading; } @@ -403,7 +401,7 @@ int64_t Rtcm::hex_to_int(const std::string& s) const LOG(WARNING) << "Cannot convert to a int64_t"; return 0; } - int64_t reading = strtol(s.c_str(), NULL, 16); + int64_t reading = strtol(s.c_str(), nullptr, 16); return reading; } @@ -488,7 +486,7 @@ std::bitset<58> Rtcm::get_MT1001_sat_content(const Gps_Ephemeris& eph, double ob std::string Rtcm::print_MT1001(const Gps_Ephemeris& gps_eph, double obs_time, const std::map& observables, uint16_t station_id) { - uint32_t ref_id = static_cast(station_id); + auto ref_id = static_cast(station_id); uint32_t smooth_int = 0; bool sync_flag = false; bool divergence_free = false; @@ -537,7 +535,7 @@ std::string Rtcm::print_MT1001(const Gps_Ephemeris& gps_eph, double obs_time, co std::string Rtcm::print_MT1002(const Gps_Ephemeris& gps_eph, double obs_time, const std::map& observables, uint16_t station_id) { - uint32_t ref_id = static_cast(station_id); + auto ref_id = static_cast(station_id); uint32_t smooth_int = 0; bool sync_flag = false; bool divergence_free = false; @@ -608,7 +606,7 @@ std::bitset<74> Rtcm::get_MT1002_sat_content(const Gps_Ephemeris& eph, double ob std::string Rtcm::print_MT1003(const Gps_Ephemeris& ephL1, const Gps_CNAV_Ephemeris& ephL2, double obs_time, const std::map& observables, uint16_t station_id) { - uint32_t ref_id = static_cast(station_id); + auto ref_id = static_cast(station_id); uint32_t smooth_int = 0; bool sync_flag = false; bool divergence_free = false; @@ -717,7 +715,7 @@ std::bitset<101> Rtcm::get_MT1003_sat_content(const Gps_Ephemeris& ephL1, const std::string Rtcm::print_MT1004(const Gps_Ephemeris& ephL1, const Gps_CNAV_Ephemeris& ephL2, double obs_time, const std::map& observables, uint16_t station_id) { - uint32_t ref_id = static_cast(station_id); + auto ref_id = static_cast(station_id); uint32_t smooth_int = 0; bool sync_flag = false; bool divergence_free = false; @@ -1169,7 +1167,7 @@ std::bitset<64> Rtcm::get_MT1009_sat_content(const Glonass_Gnav_Ephemeris& eph, std::string Rtcm::print_MT1009(const Glonass_Gnav_Ephemeris& glonass_gnav_eph, double obs_time, const std::map& observables, uint16_t station_id) { - uint32_t ref_id = static_cast(station_id); + auto ref_id = static_cast(station_id); uint32_t smooth_int = 0; bool sync_flag = false; bool divergence_free = false; @@ -1218,7 +1216,7 @@ std::string Rtcm::print_MT1009(const Glonass_Gnav_Ephemeris& glonass_gnav_eph, d std::string Rtcm::print_MT1010(const Glonass_Gnav_Ephemeris& glonass_gnav_eph, double obs_time, const std::map& observables, uint16_t station_id) { - uint32_t ref_id = static_cast(station_id); + auto ref_id = static_cast(station_id); uint32_t smooth_int = 0; bool sync_flag = false; bool divergence_free = false; @@ -1293,7 +1291,7 @@ std::bitset<79> Rtcm::get_MT1010_sat_content(const Glonass_Gnav_Ephemeris& eph, std::string Rtcm::print_MT1011(const Glonass_Gnav_Ephemeris& ephL1, const Glonass_Gnav_Ephemeris& ephL2, double obs_time, const std::map& observables, uint16_t station_id) { - uint32_t ref_id = static_cast(station_id); + auto ref_id = static_cast(station_id); uint32_t smooth_int = 0; bool sync_flag = false; bool divergence_free = false; @@ -1404,7 +1402,7 @@ std::bitset<107> Rtcm::get_MT1011_sat_content(const Glonass_Gnav_Ephemeris& ephL std::string Rtcm::print_MT1012(const Glonass_Gnav_Ephemeris& ephL1, const Glonass_Gnav_Ephemeris& ephL2, double obs_time, const std::map& observables, uint16_t station_id) { - uint32_t ref_id = static_cast(station_id); + auto ref_id = static_cast(station_id); uint32_t smooth_int = 0; bool sync_flag = false; bool divergence_free = false; @@ -2357,7 +2355,7 @@ std::string Rtcm::get_MSM_header(uint32_t msg_number, std::string header = DF002.to_string() + DF003.to_string(); // GNSS Epoch Time Specific to each constellation - if ((sys.compare("R") == 0)) + if ((sys == "R")) { // GLONASS Epoch Time Rtcm::set_DF034(obs_time); @@ -3228,22 +3226,22 @@ std::vector > Rtcm::sort_by_signal(const std::v std::string sig_b_(b.second.Signal); std::string sig_b = sig_b_.substr(0, 2); - if (system_a.compare("G") == 0) + if (system_a == "G") { value_a = gps_signal_map.at(sig_a); } - if (system_a.compare("E") == 0) + if (system_a == "E") { value_a = galileo_signal_map.at(sig_a); } - if (system_b.compare("G") == 0) + if (system_b == "G") { value_b = gps_signal_map.at(sig_b); } - if (system_b.compare("E") == 0) + if (system_b == "E") { value_b = galileo_signal_map.at(sig_b); } @@ -3562,7 +3560,7 @@ int32_t Rtcm::set_DF003(uint32_t ref_station_ID) int32_t Rtcm::set_DF004(double obs_time) { // TOW in milliseconds from the beginning of the GPS week, measured in GPS time - uint64_t tow = static_cast(std::round(obs_time * 1000)); + auto tow = static_cast(std::round(obs_time * 1000)); if (tow > 604799999) { LOG(WARNING) << "To large TOW! Set to the last millisecond of the week"; @@ -3653,7 +3651,7 @@ int32_t Rtcm::set_DF010(bool code_indicator) int32_t Rtcm::set_DF011(const Gnss_Synchro& gnss_synchro) { double ambiguity = std::floor(gnss_synchro.Pseudorange_m / 299792.458); - uint64_t gps_L1_pseudorange = static_cast(std::round((gnss_synchro.Pseudorange_m - ambiguity * 299792.458) / 0.02)); + auto gps_L1_pseudorange = static_cast(std::round((gnss_synchro.Pseudorange_m - ambiguity * 299792.458) / 0.02)); DF011 = std::bitset<24>(gps_L1_pseudorange); return 0; } @@ -3667,7 +3665,7 @@ int32_t Rtcm::set_DF012(const Gnss_Synchro& gnss_synchro) double gps_L1_pseudorange_c = gps_L1_pseudorange * 0.02 + ambiguity * 299792.458; double L1_phaserange_c = gnss_synchro.Carrier_phase_rads / GPS_TWO_PI; double L1_phaserange_c_r = std::fmod(L1_phaserange_c - gps_L1_pseudorange_c / lambda + 1500.0, 3000.0) - 1500.0; - int64_t gps_L1_phaserange_minus_L1_pseudorange = static_cast(std::round(L1_phaserange_c_r * lambda / 0.0005)); + auto gps_L1_phaserange_minus_L1_pseudorange = static_cast(std::round(L1_phaserange_c_r * lambda / 0.0005)); DF012 = std::bitset<20>(gps_L1_phaserange_minus_L1_pseudorange); return 0; } @@ -3685,7 +3683,7 @@ int32_t Rtcm::set_DF013(const Gps_Ephemeris& eph, double obs_time, const Gnss_Sy int32_t Rtcm::set_DF014(const Gnss_Synchro& gnss_synchro) { - uint32_t gps_L1_pseudorange_ambiguity = static_cast(std::floor(gnss_synchro.Pseudorange_m / 299792.458)); + auto gps_L1_pseudorange_ambiguity = static_cast(std::floor(gnss_synchro.Pseudorange_m / 299792.458)); DF014 = std::bitset<8>(gps_L1_pseudorange_ambiguity); return 0; } @@ -3698,7 +3696,7 @@ int32_t Rtcm::set_DF015(const Gnss_Synchro& gnss_synchro) { CN0_dB_Hz_est = 63.75; } - uint32_t CN0_dB_Hz = static_cast(std::round(CN0_dB_Hz_est / 0.25)); + auto CN0_dB_Hz = static_cast(std::round(CN0_dB_Hz_est / 0.25)); DF015 = std::bitset<8>(CN0_dB_Hz); return 0; } @@ -3758,7 +3756,7 @@ int32_t Rtcm::set_DF020(const Gnss_Synchro& gnss_synchro) { CN0_dB_Hz_est = 63.75; } - uint32_t CN0_dB_Hz = static_cast(std::round(CN0_dB_Hz_est / 0.25)); + auto CN0_dB_Hz = static_cast(std::round(CN0_dB_Hz_est / 0.25)); DF020 = std::bitset<8>(CN0_dB_Hz); return 0; } @@ -3794,7 +3792,7 @@ int32_t Rtcm::set_DF024(bool galileo_indicator) int32_t Rtcm::set_DF025(double antenna_ECEF_X_m) { - int64_t ant_ref_x = static_cast(std::round(antenna_ECEF_X_m * 10000)); + auto ant_ref_x = static_cast(std::round(antenna_ECEF_X_m * 10000)); DF025 = std::bitset<38>(ant_ref_x); return 0; } @@ -3802,7 +3800,7 @@ int32_t Rtcm::set_DF025(double antenna_ECEF_X_m) int32_t Rtcm::set_DF026(double antenna_ECEF_Y_m) { - int64_t ant_ref_y = static_cast(std::round(antenna_ECEF_Y_m * 10000)); + auto ant_ref_y = static_cast(std::round(antenna_ECEF_Y_m * 10000)); DF026 = std::bitset<38>(ant_ref_y); return 0; } @@ -3810,7 +3808,7 @@ int32_t Rtcm::set_DF026(double antenna_ECEF_Y_m) int32_t Rtcm::set_DF027(double antenna_ECEF_Z_m) { - int64_t ant_ref_z = static_cast(std::round(antenna_ECEF_Z_m * 10000)); + auto ant_ref_z = static_cast(std::round(antenna_ECEF_Z_m * 10000)); DF027 = std::bitset<38>(ant_ref_z); return 0; } @@ -3818,7 +3816,7 @@ int32_t Rtcm::set_DF027(double antenna_ECEF_Z_m) int32_t Rtcm::set_DF028(double height) { - uint32_t h_ = static_cast(std::round(height * 10000)); + auto h_ = static_cast(std::round(height * 10000)); DF028 = std::bitset<16>(h_); return 0; } @@ -3834,7 +3832,7 @@ int32_t Rtcm::set_DF031(uint32_t antenna_setup_id) int32_t Rtcm::set_DF034(double obs_time) { // TOW in milliseconds from the beginning of the GLONASS day, measured in GLONASS time - uint64_t tk = static_cast(std::round(obs_time * 1000)); + auto tk = static_cast(std::round(obs_time * 1000)); if (tk > 86400999) { LOG(WARNING) << "To large GLONASS Epoch Time (tk)! Set to the last millisecond of the day"; @@ -3945,7 +3943,7 @@ int32_t Rtcm::set_DF040(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF041(const Gnss_Synchro& gnss_synchro) { double ambiguity = std::floor(gnss_synchro.Pseudorange_m / 599584.92); - uint64_t glonass_L1_pseudorange = static_cast(std::round((gnss_synchro.Pseudorange_m - ambiguity * 599584.92) / 0.02)); + auto glonass_L1_pseudorange = static_cast(std::round((gnss_synchro.Pseudorange_m - ambiguity * 599584.92) / 0.02)); DF041 = std::bitset<25>(glonass_L1_pseudorange); return 0; } @@ -3959,7 +3957,7 @@ int32_t Rtcm::set_DF042(const Gnss_Synchro& gnss_synchro) double glonass_L1_pseudorange_c = glonass_L1_pseudorange * 0.02 + ambiguity * 299792.458; double L1_phaserange_c = gnss_synchro.Carrier_phase_rads / GLONASS_TWO_PI; double L1_phaserange_c_r = std::fmod(L1_phaserange_c - glonass_L1_pseudorange_c / lambda + 1500.0, 3000.0) - 1500.0; - int64_t glonass_L1_phaserange_minus_L1_pseudorange = static_cast(std::round(L1_phaserange_c_r * lambda / 0.0005)); + auto glonass_L1_phaserange_minus_L1_pseudorange = static_cast(std::round(L1_phaserange_c_r * lambda / 0.0005)); DF042 = std::bitset<20>(glonass_L1_phaserange_minus_L1_pseudorange); return 0; } @@ -3977,7 +3975,7 @@ int32_t Rtcm::set_DF043(const Glonass_Gnav_Ephemeris& eph, double obs_time, cons int32_t Rtcm::set_DF044(const Gnss_Synchro& gnss_synchro) { - uint32_t glonass_L1_pseudorange_ambiguity = static_cast(std::floor(gnss_synchro.Pseudorange_m / 599584.916)); + auto glonass_L1_pseudorange_ambiguity = static_cast(std::floor(gnss_synchro.Pseudorange_m / 599584.916)); DF044 = std::bitset<7>(glonass_L1_pseudorange_ambiguity); return 0; } @@ -3991,7 +3989,7 @@ int32_t Rtcm::set_DF045(const Gnss_Synchro& gnss_synchro) LOG(WARNING) << "GLONASS L1 CNR must be between 0 and 63.75, but CNR " << CN0_dB_Hz_est << " was found. Setting to 63.75 dB-Hz"; CN0_dB_Hz_est = 63.75; } - uint32_t CN0_dB_Hz = static_cast(std::round(CN0_dB_Hz_est / 0.25)); + auto CN0_dB_Hz = static_cast(std::round(CN0_dB_Hz_est / 0.25)); DF045 = std::bitset<8>(CN0_dB_Hz); return 0; } @@ -4051,7 +4049,7 @@ int32_t Rtcm::set_DF050(const Gnss_Synchro& gnss_synchro) { CN0_dB_Hz_est = 63.75; } - uint32_t CN0_dB_Hz = static_cast(std::round(CN0_dB_Hz_est / 0.25)); + auto CN0_dB_Hz = static_cast(std::round(CN0_dB_Hz_est / 0.25)); DF050 = std::bitset<8>(CN0_dB_Hz); return 0; } @@ -4089,7 +4087,7 @@ int32_t Rtcm::set_DF052(const Gps_Ephemeris& gps_eph, double obs_time) int32_t Rtcm::set_DF071(const Gps_Ephemeris& gps_eph) { - uint32_t iode = static_cast(gps_eph.d_IODE_SF2); + auto iode = static_cast(gps_eph.d_IODE_SF2); DF071 = std::bitset<8>(iode); return 0; } @@ -4097,7 +4095,7 @@ int32_t Rtcm::set_DF071(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF076(const Gps_Ephemeris& gps_eph) { - uint32_t week_number = static_cast(gps_eph.i_GPS_week); + auto week_number = static_cast(gps_eph.i_GPS_week); DF076 = std::bitset<10>(week_number); return 0; } @@ -4105,7 +4103,7 @@ int32_t Rtcm::set_DF076(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF077(const Gps_Ephemeris& gps_eph) { - uint16_t ura = static_cast(gps_eph.i_SV_accuracy); + auto ura = static_cast(gps_eph.i_SV_accuracy); DF077 = std::bitset<4>(ura); return 0; } @@ -4113,7 +4111,7 @@ int32_t Rtcm::set_DF077(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF078(const Gps_Ephemeris& gps_eph) { - uint16_t code_on_L2 = static_cast(gps_eph.i_code_on_L2); + auto code_on_L2 = static_cast(gps_eph.i_code_on_L2); DF078 = std::bitset<2>(code_on_L2); return 0; } @@ -4121,7 +4119,7 @@ int32_t Rtcm::set_DF078(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF079(const Gps_Ephemeris& gps_eph) { - uint32_t idot = static_cast(std::round(gps_eph.d_IDOT / I_DOT_LSB)); + auto idot = static_cast(std::round(gps_eph.d_IDOT / I_DOT_LSB)); DF079 = std::bitset<14>(idot); return 0; } @@ -4129,7 +4127,7 @@ int32_t Rtcm::set_DF079(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF080(const Gps_Ephemeris& gps_eph) { - uint16_t iode = static_cast(gps_eph.d_IODE_SF2); + auto iode = static_cast(gps_eph.d_IODE_SF2); DF080 = std::bitset<8>(iode); return 0; } @@ -4137,7 +4135,7 @@ int32_t Rtcm::set_DF080(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF081(const Gps_Ephemeris& gps_eph) { - uint32_t toc = static_cast(std::round(gps_eph.d_Toc / T_OC_LSB)); + auto toc = static_cast(std::round(gps_eph.d_Toc / T_OC_LSB)); DF081 = std::bitset<16>(toc); return 0; } @@ -4145,7 +4143,7 @@ int32_t Rtcm::set_DF081(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF082(const Gps_Ephemeris& gps_eph) { - int16_t af2 = static_cast(std::round(gps_eph.d_A_f2 / A_F2_LSB)); + auto af2 = static_cast(std::round(gps_eph.d_A_f2 / A_F2_LSB)); DF082 = std::bitset<8>(af2); return 0; } @@ -4153,7 +4151,7 @@ int32_t Rtcm::set_DF082(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF083(const Gps_Ephemeris& gps_eph) { - int32_t af1 = static_cast(std::round(gps_eph.d_A_f1 / A_F1_LSB)); + auto af1 = static_cast(std::round(gps_eph.d_A_f1 / A_F1_LSB)); DF083 = std::bitset<16>(af1); return 0; } @@ -4161,7 +4159,7 @@ int32_t Rtcm::set_DF083(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF084(const Gps_Ephemeris& gps_eph) { - int64_t af0 = static_cast(std::round(gps_eph.d_A_f0 / A_F0_LSB)); + auto af0 = static_cast(std::round(gps_eph.d_A_f0 / A_F0_LSB)); DF084 = std::bitset<22>(af0); return 0; } @@ -4169,7 +4167,7 @@ int32_t Rtcm::set_DF084(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF085(const Gps_Ephemeris& gps_eph) { - uint32_t iodc = static_cast(gps_eph.d_IODC); + auto iodc = static_cast(gps_eph.d_IODC); DF085 = std::bitset<10>(iodc); return 0; } @@ -4177,7 +4175,7 @@ int32_t Rtcm::set_DF085(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF086(const Gps_Ephemeris& gps_eph) { - int32_t crs = static_cast(std::round(gps_eph.d_Crs / C_RS_LSB)); + auto crs = static_cast(std::round(gps_eph.d_Crs / C_RS_LSB)); DF086 = std::bitset<16>(crs); return 0; } @@ -4185,7 +4183,7 @@ int32_t Rtcm::set_DF086(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF087(const Gps_Ephemeris& gps_eph) { - int32_t delta_n = static_cast(std::round(gps_eph.d_Delta_n / DELTA_N_LSB)); + auto delta_n = static_cast(std::round(gps_eph.d_Delta_n / DELTA_N_LSB)); DF087 = std::bitset<16>(delta_n); return 0; } @@ -4193,7 +4191,7 @@ int32_t Rtcm::set_DF087(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF088(const Gps_Ephemeris& gps_eph) { - int64_t m0 = static_cast(std::round(gps_eph.d_M_0 / M_0_LSB)); + auto m0 = static_cast(std::round(gps_eph.d_M_0 / M_0_LSB)); DF088 = std::bitset<32>(m0); return 0; } @@ -4201,14 +4199,14 @@ int32_t Rtcm::set_DF088(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF089(const Gps_Ephemeris& gps_eph) { - int32_t cuc = static_cast(std::round(gps_eph.d_Cuc / C_UC_LSB)); + auto cuc = static_cast(std::round(gps_eph.d_Cuc / C_UC_LSB)); DF089 = std::bitset<16>(cuc); return 0; } int32_t Rtcm::set_DF090(const Gps_Ephemeris& gps_eph) { - uint64_t ecc = static_cast(std::round(gps_eph.d_e_eccentricity / E_LSB)); + auto ecc = static_cast(std::round(gps_eph.d_e_eccentricity / E_LSB)); DF090 = std::bitset<32>(ecc); return 0; } @@ -4216,7 +4214,7 @@ int32_t Rtcm::set_DF090(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF091(const Gps_Ephemeris& gps_eph) { - int32_t cus = static_cast(std::round(gps_eph.d_Cus / C_US_LSB)); + auto cus = static_cast(std::round(gps_eph.d_Cus / C_US_LSB)); DF091 = std::bitset<16>(cus); return 0; } @@ -4224,7 +4222,7 @@ int32_t Rtcm::set_DF091(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF092(const Gps_Ephemeris& gps_eph) { - uint64_t sqr_a = static_cast(std::round(gps_eph.d_sqrt_A / SQRT_A_LSB)); + auto sqr_a = static_cast(std::round(gps_eph.d_sqrt_A / SQRT_A_LSB)); DF092 = std::bitset<32>(sqr_a); return 0; } @@ -4232,7 +4230,7 @@ int32_t Rtcm::set_DF092(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF093(const Gps_Ephemeris& gps_eph) { - uint32_t toe = static_cast(std::round(gps_eph.d_Toe / T_OE_LSB)); + auto toe = static_cast(std::round(gps_eph.d_Toe / T_OE_LSB)); DF093 = std::bitset<16>(toe); return 0; } @@ -4240,7 +4238,7 @@ int32_t Rtcm::set_DF093(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF094(const Gps_Ephemeris& gps_eph) { - int32_t cic = static_cast(std::round(gps_eph.d_Cic / C_IC_LSB)); + auto cic = static_cast(std::round(gps_eph.d_Cic / C_IC_LSB)); DF094 = std::bitset<16>(cic); return 0; } @@ -4248,7 +4246,7 @@ int32_t Rtcm::set_DF094(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF095(const Gps_Ephemeris& gps_eph) { - int64_t Omega0 = static_cast(std::round(gps_eph.d_OMEGA0 / OMEGA_0_LSB)); + auto Omega0 = static_cast(std::round(gps_eph.d_OMEGA0 / OMEGA_0_LSB)); DF095 = std::bitset<32>(Omega0); return 0; } @@ -4256,7 +4254,7 @@ int32_t Rtcm::set_DF095(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF096(const Gps_Ephemeris& gps_eph) { - int32_t cis = static_cast(std::round(gps_eph.d_Cis / C_IS_LSB)); + auto cis = static_cast(std::round(gps_eph.d_Cis / C_IS_LSB)); DF096 = std::bitset<16>(cis); return 0; } @@ -4264,7 +4262,7 @@ int32_t Rtcm::set_DF096(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF097(const Gps_Ephemeris& gps_eph) { - int64_t i0 = static_cast(std::round(gps_eph.d_i_0 / I_0_LSB)); + auto i0 = static_cast(std::round(gps_eph.d_i_0 / I_0_LSB)); DF097 = std::bitset<32>(i0); return 0; } @@ -4272,7 +4270,7 @@ int32_t Rtcm::set_DF097(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF098(const Gps_Ephemeris& gps_eph) { - int32_t crc = static_cast(std::round(gps_eph.d_Crc / C_RC_LSB)); + auto crc = static_cast(std::round(gps_eph.d_Crc / C_RC_LSB)); DF098 = std::bitset<16>(crc); return 0; } @@ -4280,7 +4278,7 @@ int32_t Rtcm::set_DF098(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF099(const Gps_Ephemeris& gps_eph) { - int64_t omega = static_cast(std::round(gps_eph.d_OMEGA / OMEGA_LSB)); + auto omega = static_cast(std::round(gps_eph.d_OMEGA / OMEGA_LSB)); DF099 = std::bitset<32>(omega); return 0; } @@ -4288,7 +4286,7 @@ int32_t Rtcm::set_DF099(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF100(const Gps_Ephemeris& gps_eph) { - int64_t omegadot = static_cast(std::round(gps_eph.d_OMEGA_DOT / OMEGA_DOT_LSB)); + auto omegadot = static_cast(std::round(gps_eph.d_OMEGA_DOT / OMEGA_DOT_LSB)); DF100 = std::bitset<24>(omegadot); return 0; } @@ -4296,7 +4294,7 @@ int32_t Rtcm::set_DF100(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF101(const Gps_Ephemeris& gps_eph) { - int16_t tgd = static_cast(std::round(gps_eph.d_TGD / T_GD_LSB)); + auto tgd = static_cast(std::round(gps_eph.d_TGD / T_GD_LSB)); DF101 = std::bitset<8>(tgd); return 0; } @@ -4304,7 +4302,7 @@ int32_t Rtcm::set_DF101(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF102(const Gps_Ephemeris& gps_eph) { - uint16_t sv_heath = static_cast(gps_eph.i_SV_health); + auto sv_heath = static_cast(gps_eph.i_SV_health); DF102 = std::bitset<6>(sv_heath); return 0; } @@ -4334,7 +4332,7 @@ int32_t Rtcm::set_DF105(uint32_t glonass_gnav_alm_health_ind) int32_t Rtcm::set_DF106(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { // Convert the value from (15, 30, 45, 60) to (00, 01, 10, 11) - uint32_t P_1 = static_cast(std::round(glonass_gnav_eph.d_P_1 / 15.0 - 1.0)); + auto P_1 = static_cast(std::round(glonass_gnav_eph.d_P_1 / 15.0 - 1.0)); DF106 = std::bitset<2>(P_1); return 0; } @@ -4378,7 +4376,7 @@ int32_t Rtcm::set_DF109(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF110(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - uint32_t t_b = static_cast(std::round(glonass_gnav_eph.d_t_b / (15 * 60))); + auto t_b = static_cast(std::round(glonass_gnav_eph.d_t_b / (15 * 60))); DF110 = std::bitset<7>(t_b); return 0; } @@ -4386,7 +4384,7 @@ int32_t Rtcm::set_DF110(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF111(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - int32_t VXn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_VXn / TWO_N20))); + auto VXn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_VXn / TWO_N20))); uint32_t VXn_sgn = glo_sgn(glonass_gnav_eph.d_VXn); DF111 = std::bitset<24>(VXn_mag); @@ -4397,7 +4395,7 @@ int32_t Rtcm::set_DF111(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF112(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - int32_t Xn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_Xn / TWO_N11))); + auto Xn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_Xn / TWO_N11))); uint32_t Xn_sgn = glo_sgn(glonass_gnav_eph.d_Xn); DF112 = std::bitset<27>(Xn_mag); @@ -4408,7 +4406,7 @@ int32_t Rtcm::set_DF112(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF113(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - int32_t AXn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_AXn / TWO_N30))); + auto AXn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_AXn / TWO_N30))); uint32_t AXn_sgn = glo_sgn(glonass_gnav_eph.d_AXn); DF113 = std::bitset<5>(AXn_mag); @@ -4419,7 +4417,7 @@ int32_t Rtcm::set_DF113(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF114(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - int32_t VYn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_VYn / TWO_N20))); + auto VYn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_VYn / TWO_N20))); uint32_t VYn_sgn = glo_sgn(glonass_gnav_eph.d_VYn); DF114 = std::bitset<24>(VYn_mag); @@ -4430,7 +4428,7 @@ int32_t Rtcm::set_DF114(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF115(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - int32_t Yn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_Yn / TWO_N11))); + auto Yn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_Yn / TWO_N11))); uint32_t Yn_sgn = glo_sgn(glonass_gnav_eph.d_Yn); DF115 = std::bitset<27>(Yn_mag); @@ -4441,7 +4439,7 @@ int32_t Rtcm::set_DF115(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF116(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - int32_t AYn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_AYn / TWO_N30))); + auto AYn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_AYn / TWO_N30))); uint32_t AYn_sgn = glo_sgn(glonass_gnav_eph.d_AYn); DF116 = std::bitset<5>(AYn_mag); @@ -4452,7 +4450,7 @@ int32_t Rtcm::set_DF116(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF117(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - int32_t VZn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_VZn / TWO_N20))); + auto VZn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_VZn / TWO_N20))); uint32_t VZn_sgn = glo_sgn(glonass_gnav_eph.d_VZn); DF117 = std::bitset<24>(VZn_mag); @@ -4463,7 +4461,7 @@ int32_t Rtcm::set_DF117(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF118(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - int32_t Zn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_Zn / TWO_N11))); + auto Zn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_Zn / TWO_N11))); uint32_t Zn_sgn = glo_sgn(glonass_gnav_eph.d_Zn); DF118 = std::bitset<27>(Zn_mag); @@ -4474,7 +4472,7 @@ int32_t Rtcm::set_DF118(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF119(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - int32_t AZn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_AZn / TWO_N30))); + auto AZn_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_AZn / TWO_N30))); uint32_t AZn_sgn = glo_sgn(glonass_gnav_eph.d_AZn); DF119 = std::bitset<5>(AZn_mag); @@ -4493,7 +4491,7 @@ int32_t Rtcm::set_DF120(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF121(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - int32_t gamma_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_gamma_n / TWO_N40))); + auto gamma_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_gamma_n / TWO_N40))); uint32_t gamma_sgn = glo_sgn(glonass_gnav_eph.d_gamma_n); DF121 = std::bitset<11>(gamma_mag); @@ -4504,7 +4502,7 @@ int32_t Rtcm::set_DF121(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF122(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - uint32_t P = static_cast(std::round(glonass_gnav_eph.d_P)); + auto P = static_cast(std::round(glonass_gnav_eph.d_P)); DF122 = std::bitset<2>(P); return 0; } @@ -4512,7 +4510,7 @@ int32_t Rtcm::set_DF122(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF123(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - uint32_t ln = static_cast((glonass_gnav_eph.d_l3rd_n)); + auto ln = static_cast((glonass_gnav_eph.d_l3rd_n)); DF123 = std::bitset<1>(ln); return 0; } @@ -4520,7 +4518,7 @@ int32_t Rtcm::set_DF123(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF124(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - int32_t tau_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_tau_n / TWO_N30))); + auto tau_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_tau_n / TWO_N30))); uint32_t tau_sgn = glo_sgn(glonass_gnav_eph.d_tau_n); DF124 = std::bitset<22>(tau_mag); @@ -4531,7 +4529,7 @@ int32_t Rtcm::set_DF124(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF125(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - int32_t delta_tau_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_Delta_tau_n / TWO_N30))); + auto delta_tau_mag = static_cast(std::round(fabs(glonass_gnav_eph.d_Delta_tau_n / TWO_N30))); uint32_t delta_tau_sgn = glo_sgn(glonass_gnav_eph.d_Delta_tau_n); DF125 = std::bitset<5>(delta_tau_mag); @@ -4542,7 +4540,7 @@ int32_t Rtcm::set_DF125(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF126(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - uint32_t ecc = static_cast(std::round(glonass_gnav_eph.d_E_n)); + auto ecc = static_cast(std::round(glonass_gnav_eph.d_E_n)); DF126 = std::bitset<5>(ecc); return 0; } @@ -4558,7 +4556,7 @@ int32_t Rtcm::set_DF127(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF128(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - uint32_t F_t = static_cast(std::round(glonass_gnav_eph.d_F_T)); + auto F_t = static_cast(std::round(glonass_gnav_eph.d_F_T)); DF128 = std::bitset<4>(F_t); return 0; } @@ -4566,7 +4564,7 @@ int32_t Rtcm::set_DF128(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF129(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - uint32_t N_t = static_cast(std::round(glonass_gnav_eph.d_N_T)); + auto N_t = static_cast(std::round(glonass_gnav_eph.d_N_T)); DF129 = std::bitset<11>(N_t); return 0; } @@ -4574,7 +4572,7 @@ int32_t Rtcm::set_DF129(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF130(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) { - uint32_t M = static_cast(std::round(glonass_gnav_eph.d_M)); + auto M = static_cast(std::round(glonass_gnav_eph.d_M)); DF130 = std::bitset<2>(M); return 0; } @@ -4582,7 +4580,7 @@ int32_t Rtcm::set_DF130(const Glonass_Gnav_Ephemeris& glonass_gnav_eph) int32_t Rtcm::set_DF131(uint32_t fifth_str_additional_data_ind) { - uint32_t fith_str_data = static_cast(fifth_str_additional_data_ind); + auto fith_str_data = static_cast(fifth_str_additional_data_ind); DF131 = std::bitset<1>(fith_str_data); return 0; } @@ -4590,7 +4588,7 @@ int32_t Rtcm::set_DF131(uint32_t fifth_str_additional_data_ind) int32_t Rtcm::set_DF132(const Glonass_Gnav_Utc_Model& glonass_gnav_utc_model) { - uint32_t N_A = static_cast(std::round(glonass_gnav_utc_model.d_N_A)); + auto N_A = static_cast(std::round(glonass_gnav_utc_model.d_N_A)); DF132 = std::bitset<11>(N_A); return 0; } @@ -4598,7 +4596,7 @@ int32_t Rtcm::set_DF132(const Glonass_Gnav_Utc_Model& glonass_gnav_utc_model) int32_t Rtcm::set_DF133(const Glonass_Gnav_Utc_Model& glonass_gnav_utc_model) { - int32_t tau_c = static_cast(std::round(glonass_gnav_utc_model.d_tau_c / TWO_N31)); + auto tau_c = static_cast(std::round(glonass_gnav_utc_model.d_tau_c / TWO_N31)); DF133 = std::bitset<32>(tau_c); return 0; } @@ -4606,7 +4604,7 @@ int32_t Rtcm::set_DF133(const Glonass_Gnav_Utc_Model& glonass_gnav_utc_model) int32_t Rtcm::set_DF134(const Glonass_Gnav_Utc_Model& glonass_gnav_utc_model) { - uint32_t N_4 = static_cast(std::round(glonass_gnav_utc_model.d_N_4)); + auto N_4 = static_cast(std::round(glonass_gnav_utc_model.d_N_4)); DF134 = std::bitset<5>(N_4); return 0; } @@ -4614,7 +4612,7 @@ int32_t Rtcm::set_DF134(const Glonass_Gnav_Utc_Model& glonass_gnav_utc_model) int32_t Rtcm::set_DF135(const Glonass_Gnav_Utc_Model& glonass_gnav_utc_model) { - int32_t tau_gps = static_cast(std::round(glonass_gnav_utc_model.d_tau_gps) / TWO_N30); + auto tau_gps = static_cast(std::round(glonass_gnav_utc_model.d_tau_gps) / TWO_N30); DF135 = std::bitset<22>(tau_gps); return 0; } @@ -4638,7 +4636,7 @@ int32_t Rtcm::set_DF137(const Gps_Ephemeris& gps_eph) int32_t Rtcm::set_DF248(double obs_time) { // TOW in milliseconds from the beginning of the Galileo week, measured in Galileo time - uint64_t tow = static_cast(std::round(obs_time * 1000)); + auto tow = static_cast(std::round(obs_time * 1000)); if (tow > 604799999) { LOG(WARNING) << "To large TOW! Set to the last millisecond of the week"; @@ -4663,7 +4661,7 @@ int32_t Rtcm::set_DF252(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF289(const Galileo_Ephemeris& gal_eph) { - uint32_t galileo_week_number = static_cast(gal_eph.WN_5); + auto galileo_week_number = static_cast(gal_eph.WN_5); if (galileo_week_number > 4095) { LOG(WARNING) << "Error decoding Galileo week number (it has a 4096 roll-off, but " << galileo_week_number << " was detected)"; @@ -4675,7 +4673,7 @@ int32_t Rtcm::set_DF289(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF290(const Galileo_Ephemeris& gal_eph) { - uint32_t iod_nav = static_cast(gal_eph.IOD_nav_1); + auto iod_nav = static_cast(gal_eph.IOD_nav_1); if (iod_nav > 1023) { LOG(WARNING) << "Error decoding Galileo IODnav (it has a max of 1023, but " << iod_nav << " was detected)"; @@ -4687,7 +4685,7 @@ int32_t Rtcm::set_DF290(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF291(const Galileo_Ephemeris& gal_eph) { - uint16_t SISA = static_cast(gal_eph.SISA_3); + auto SISA = static_cast(gal_eph.SISA_3); //SISA = 0; // SIS Accuracy, data content definition not given in Galileo OS SIS ICD, Issue 1.1, Sept 2010 DF291 = std::bitset<8>(SISA); return 0; @@ -4696,7 +4694,7 @@ int32_t Rtcm::set_DF291(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF292(const Galileo_Ephemeris& gal_eph) { - int32_t idot = static_cast(std::round(gal_eph.iDot_2 / FNAV_idot_2_LSB)); + auto idot = static_cast(std::round(gal_eph.iDot_2 / FNAV_idot_2_LSB)); DF292 = std::bitset<14>(idot); return 0; } @@ -4704,7 +4702,7 @@ int32_t Rtcm::set_DF292(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF293(const Galileo_Ephemeris& gal_eph) { - uint32_t toc = static_cast(gal_eph.t0c_4); + auto toc = static_cast(gal_eph.t0c_4); if (toc > 604740) { LOG(WARNING) << "Error decoding Galileo ephemeris time (max of 604740, but " << toc << " was detected)"; @@ -4716,7 +4714,7 @@ int32_t Rtcm::set_DF293(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF294(const Galileo_Ephemeris& gal_eph) { - int16_t af2 = static_cast(std::round(gal_eph.af2_4 / FNAV_af2_1_LSB)); + auto af2 = static_cast(std::round(gal_eph.af2_4 / FNAV_af2_1_LSB)); DF294 = std::bitset<6>(af2); return 0; } @@ -4724,7 +4722,7 @@ int32_t Rtcm::set_DF294(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF295(const Galileo_Ephemeris& gal_eph) { - int64_t af1 = static_cast(std::round(gal_eph.af1_4 / FNAV_af1_1_LSB)); + auto af1 = static_cast(std::round(gal_eph.af1_4 / FNAV_af1_1_LSB)); DF295 = std::bitset<21>(af1); return 0; } @@ -4740,7 +4738,7 @@ int32_t Rtcm::set_DF296(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF297(const Galileo_Ephemeris& gal_eph) { - int32_t crs = static_cast(std::round(gal_eph.C_rs_3 / FNAV_Crs_3_LSB)); + auto crs = static_cast(std::round(gal_eph.C_rs_3 / FNAV_Crs_3_LSB)); DF297 = std::bitset<16>(crs); return 0; } @@ -4748,7 +4746,7 @@ int32_t Rtcm::set_DF297(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF298(const Galileo_Ephemeris& gal_eph) { - int32_t delta_n = static_cast(std::round(gal_eph.delta_n_3 / FNAV_deltan_3_LSB)); + auto delta_n = static_cast(std::round(gal_eph.delta_n_3 / FNAV_deltan_3_LSB)); DF298 = std::bitset<16>(delta_n); return 0; } @@ -4756,7 +4754,7 @@ int32_t Rtcm::set_DF298(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF299(const Galileo_Ephemeris& gal_eph) { - int64_t m0 = static_cast(std::round(gal_eph.M0_1 / FNAV_M0_2_LSB)); + auto m0 = static_cast(std::round(gal_eph.M0_1 / FNAV_M0_2_LSB)); DF299 = std::bitset<32>(m0); return 0; } @@ -4772,7 +4770,7 @@ int32_t Rtcm::set_DF300(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF301(const Galileo_Ephemeris& gal_eph) { - uint64_t ecc = static_cast(std::round(gal_eph.e_1 / FNAV_e_2_LSB)); + auto ecc = static_cast(std::round(gal_eph.e_1 / FNAV_e_2_LSB)); DF301 = std::bitset<32>(ecc); return 0; } @@ -4780,7 +4778,7 @@ int32_t Rtcm::set_DF301(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF302(const Galileo_Ephemeris& gal_eph) { - int32_t cus = static_cast(std::round(gal_eph.C_us_3 / FNAV_Cus_3_LSB)); + auto cus = static_cast(std::round(gal_eph.C_us_3 / FNAV_Cus_3_LSB)); DF302 = std::bitset<16>(cus); return 0; } @@ -4788,7 +4786,7 @@ int32_t Rtcm::set_DF302(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF303(const Galileo_Ephemeris& gal_eph) { - uint64_t sqr_a = static_cast(std::round(gal_eph.A_1 / FNAV_a12_2_LSB)); + auto sqr_a = static_cast(std::round(gal_eph.A_1 / FNAV_a12_2_LSB)); DF303 = std::bitset<32>(sqr_a); return 0; } @@ -4796,7 +4794,7 @@ int32_t Rtcm::set_DF303(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF304(const Galileo_Ephemeris& gal_eph) { - uint32_t toe = static_cast(std::round(gal_eph.t0e_1 / FNAV_t0e_3_LSB)); + auto toe = static_cast(std::round(gal_eph.t0e_1 / FNAV_t0e_3_LSB)); DF304 = std::bitset<14>(toe); return 0; } @@ -4804,7 +4802,7 @@ int32_t Rtcm::set_DF304(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF305(const Galileo_Ephemeris& gal_eph) { - int32_t cic = static_cast(std::round(gal_eph.C_ic_4 / FNAV_Cic_4_LSB)); + auto cic = static_cast(std::round(gal_eph.C_ic_4 / FNAV_Cic_4_LSB)); DF305 = std::bitset<16>(cic); return 0; } @@ -4812,7 +4810,7 @@ int32_t Rtcm::set_DF305(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF306(const Galileo_Ephemeris& gal_eph) { - int64_t Omega0 = static_cast(std::round(gal_eph.OMEGA_0_2 / FNAV_omega0_2_LSB)); + auto Omega0 = static_cast(std::round(gal_eph.OMEGA_0_2 / FNAV_omega0_2_LSB)); DF306 = std::bitset<32>(Omega0); return 0; } @@ -4820,7 +4818,7 @@ int32_t Rtcm::set_DF306(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF307(const Galileo_Ephemeris& gal_eph) { - int32_t cis = static_cast(std::round(gal_eph.C_is_4 / FNAV_Cis_4_LSB)); + auto cis = static_cast(std::round(gal_eph.C_is_4 / FNAV_Cis_4_LSB)); DF307 = std::bitset<16>(cis); return 0; } @@ -4828,7 +4826,7 @@ int32_t Rtcm::set_DF307(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF308(const Galileo_Ephemeris& gal_eph) { - int64_t i0 = static_cast(std::round(gal_eph.i_0_2 / FNAV_i0_3_LSB)); + auto i0 = static_cast(std::round(gal_eph.i_0_2 / FNAV_i0_3_LSB)); DF308 = std::bitset<32>(i0); return 0; } @@ -4844,7 +4842,7 @@ int32_t Rtcm::set_DF309(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF310(const Galileo_Ephemeris& gal_eph) { - int32_t omega = static_cast(std::round(gal_eph.omega_2 / FNAV_omega0_2_LSB)); + auto omega = static_cast(std::round(gal_eph.omega_2 / FNAV_omega0_2_LSB)); DF310 = std::bitset<32>(omega); return 0; } @@ -4852,7 +4850,7 @@ int32_t Rtcm::set_DF310(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF311(const Galileo_Ephemeris& gal_eph) { - int64_t Omegadot = static_cast(std::round(gal_eph.OMEGA_dot_3 / FNAV_omegadot_2_LSB)); + auto Omegadot = static_cast(std::round(gal_eph.OMEGA_dot_3 / FNAV_omegadot_2_LSB)); DF311 = std::bitset<24>(Omegadot); return 0; } @@ -4860,7 +4858,7 @@ int32_t Rtcm::set_DF311(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF312(const Galileo_Ephemeris& gal_eph) { - int32_t bdg_E1_E5a = static_cast(std::round(gal_eph.BGD_E1E5a_5 / FNAV_BGD_1_LSB)); + auto bdg_E1_E5a = static_cast(std::round(gal_eph.BGD_E1E5a_5 / FNAV_BGD_1_LSB)); DF312 = std::bitset<10>(bdg_E1_E5a); return 0; } @@ -4868,7 +4866,7 @@ int32_t Rtcm::set_DF312(const Galileo_Ephemeris& gal_eph) int32_t Rtcm::set_DF313(const Galileo_Ephemeris& gal_eph) { - uint32_t bdg_E5b_E1 = static_cast(std::round(gal_eph.BGD_E1E5b_5)); + auto bdg_E5b_E1 = static_cast(std::round(gal_eph.BGD_E1E5b_5)); //bdg_E5b_E1 = 0; //reserved DF313 = std::bitset<10>(bdg_E5b_E1); return 0; @@ -5166,23 +5164,23 @@ int32_t Rtcm::set_DF399(const Gnss_Synchro& gnss_synchro) std::string sig_(gnss_synchro.Signal); std::string sig = sig_.substr(0, 2); - if (sig.compare("1C") == 0) + if (sig == "1C") { lambda = GPS_C_m_s / GPS_L1_FREQ_HZ; } - if (sig.compare("2S") == 0) + if (sig == "2S") { lambda = GPS_C_m_s / GPS_L2_FREQ_HZ; } - if (sig.compare("5X") == 0) + if (sig == "5X") { lambda = GPS_C_m_s / Galileo_E5a_FREQ_HZ; } - if (sig.compare("1B") == 0) + if (sig == "1B") { lambda = GPS_C_m_s / Galileo_E1_FREQ_HZ; } - if (sig.compare("7X") == 0) + if (sig == "7X") { lambda = GPS_C_m_s / 1.207140e9; // Galileo_E1b_FREQ_HZ; } @@ -5235,31 +5233,31 @@ int32_t Rtcm::set_DF401(const Gnss_Synchro& gnss_synchro) std::string sig = sig_.substr(0, 2); std::string sys(&gnss_synchro.System, 1); - if ((sig.compare("1C") == 0) && (sys.compare("G") == 0)) + if ((sig == "1C") && (sys == "G")) { lambda = GPS_C_m_s / GPS_L1_FREQ_HZ; } - if ((sig.compare("2S")) == 0 && (sys.compare("G") == 0)) + if ((sig.compare("2S")) == 0 && (sys == "G")) { lambda = GPS_C_m_s / GPS_L2_FREQ_HZ; } - if ((sig.compare("5X")) == 0 && (sys.compare("E") == 0)) + if ((sig.compare("5X")) == 0 && (sys == "E")) { lambda = GPS_C_m_s / Galileo_E5a_FREQ_HZ; } - if ((sig.compare("1B")) == 0 && (sys.compare("E") == 0)) + if ((sig.compare("1B")) == 0 && (sys == "E")) { lambda = GPS_C_m_s / Galileo_E1_FREQ_HZ; } - if ((sig.compare("7X")) == 0 && (sys.compare("E") == 0)) + if ((sig.compare("7X")) == 0 && (sys == "E")) { lambda = GPS_C_m_s / 1.207140e9; // Galileo_E1b_FREQ_HZ; } - if ((sig.compare("1C") == 0) && (sys.compare("R") == 0)) + if ((sig == "1C") && (sys == "R")) { lambda = GLONASS_C_m_s / ((GLONASS_L1_CA_FREQ_HZ + (GLONASS_L1_CA_DFREQ_HZ * GLONASS_PRN.at(gnss_synchro.PRN)))); } - if ((sig.compare("2C") == 0) && (sys.compare("R") == 0)) + if ((sig == "2C") && (sys == "R")) { // TODO Need to add slot number and freq number to gnss_syncro lambda = GLONASS_C_m_s / (GLONASS_L2_CA_FREQ_HZ); diff --git a/src/core/system_parameters/rtcm.h b/src/core/system_parameters/rtcm.h index f450dae05..77696cf88 100644 --- a/src/core/system_parameters/rtcm.h +++ b/src/core/system_parameters/rtcm.h @@ -34,13 +34,14 @@ #include "concurrent_queue.h" -#include "gnss_synchro.h" #include "galileo_fnav_message.h" -#include "gps_navigation_message.h" -#include "gps_cnav_navigation_message.h" #include "glonass_gnav_navigation_message.h" +#include "gnss_synchro.h" +#include "gps_cnav_navigation_message.h" +#include "gps_navigation_message.h" #include #include +#include #include #include #include @@ -51,7 +52,6 @@ #include #include #include -#include /*! @@ -597,7 +597,7 @@ private: class Rtcm_Listener { public: - virtual ~Rtcm_Listener() {} + virtual ~Rtcm_Listener() = default; virtual void deliver(const Rtcm_Message& msg) = 0; }; @@ -854,7 +854,7 @@ private: std::string message; Rtcm_Message msg; queue_->wait_and_pop(message); //message += '\n'; - if (message.compare("Goodbye") == 0) break; + if (message == "Goodbye") break; const char* char_msg = message.c_str(); msg.body_length(message.length()); std::memcpy(msg.body(), char_msg, msg.body_length()); diff --git a/src/main/main.cc b/src/main/main.cc index 9b3680115..9b8354276 100644 --- a/src/main/main.cc +++ b/src/main/main.cc @@ -32,7 +32,7 @@ */ #ifndef GNSS_SDR_VERSION -#define GNSS_SDR_VERSION "0.0.9" +#define GNSS_SDR_VERSION "0.0.10" #endif #ifndef GOOGLE_STRIP_LOG @@ -43,16 +43,19 @@ #include "concurrent_queue.h" #include "control_thread.h" #include "gnss_sdr_flags.h" +#include "gps_acq_assist.h" #include -#include -#include // for create_directories, exists -#include // for path, operator<< -#include // for filesystem +#include // for exception +#include // for create_directories, exists +#include // for path, operator<< +#include // for error_code +#include #include #include +#include #include #include - +#include #if CUDA_GPU_ACCEL // For the CUDA runtime routines (prefixed with "cuda_") diff --git a/src/tests/common-files/gnuplot_i.h b/src/tests/common-files/gnuplot_i.h index 7d8b58106..7a971f02e 100644 --- a/src/tests/common-files/gnuplot_i.h +++ b/src/tests/common-files/gnuplot_i.h @@ -48,18 +48,18 @@ #define GNSS_SDR_GNUPLOT_I_H_ #include -#include -#include -#include -#include -#include // for std::ostringstream -#include +#include #include #include // for getenv() #include // for strncpy -#include -#include // for std::list +#include +#include +#include // for std::list +#include // for std::ostringstream +#include +#include #include +#include DEFINE_bool(show_plots, true, "Show plots on screen. Disable for non-interactive testing."); @@ -703,7 +703,7 @@ std::string Gnuplot::terminal_std = "aqua"; // constructor: set a style during construction // inline Gnuplot::Gnuplot(const std::string &style) - : gnucmd(NULL), valid(false), two_dim(false), nplots(0) + : gnucmd(nullptr), valid(false), two_dim(false), nplots(0) { init(); @@ -720,7 +720,7 @@ inline Gnuplot::Gnuplot(const std::vector &x, const std::string &style, const std::string &labelx, const std::string &labely) - : gnucmd(NULL), valid(false), two_dim(false), nplots(0) + : gnucmd(nullptr), valid(false), two_dim(false), nplots(0) { init(); @@ -742,7 +742,7 @@ inline Gnuplot::Gnuplot(const std::vector &x, const std::string &style, const std::string &labelx, const std::string &labely) - : gnucmd(NULL), valid(false), two_dim(false), nplots(0) + : gnucmd(nullptr), valid(false), two_dim(false), nplots(0) { init(); @@ -766,7 +766,7 @@ inline Gnuplot::Gnuplot(const std::vector &x, const std::string &labelx, const std::string &labely, const std::string &labelz) - : gnucmd(NULL), valid(false), two_dim(false), nplots(0) + : gnucmd(nullptr), valid(false), two_dim(false), nplots(0) { init(); @@ -1011,11 +1011,9 @@ bool Gnuplot::set_GNUPlotPath(const std::string &path) Gnuplot::m_sGNUPlotPath = path; return true; } - else - { - Gnuplot::m_sGNUPlotPath.clear(); - return false; - } + + Gnuplot::m_sGNUPlotPath.clear(); + return false; } @@ -1027,7 +1025,7 @@ bool Gnuplot::set_GNUPlotPath(const std::string &path) void Gnuplot::set_terminal_std(const std::string &type) { #if defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) - if (type.find("x11") != std::string::npos && std::getenv("DISPLAY") == NULL) + if (type.find("x11") != std::string::npos && std::getenv("DISPLAY") == nullptr) { throw GnuplotException("Can't find DISPLAY variable"); } @@ -1068,8 +1066,8 @@ void stringtok(Container &container, container.push_back(in.substr(i)); return; } - else - container.push_back(in.substr(i, j - i)); + + container.push_back(in.substr(i, j - i)); // set up for next loop i = j + 1; @@ -1876,7 +1874,7 @@ Gnuplot &Gnuplot::cmd(const std::string &cmdstr) { return *this; } - else if (cmdstr.find("splot") != std::string::npos) + if (cmdstr.find("splot") != std::string::npos) { two_dim = false; nplots++; @@ -2052,10 +2050,7 @@ bool Gnuplot::file_exists(const std::string &filename, int mode) { return true; } - else - { - return false; - } + return false; } @@ -2105,19 +2100,19 @@ std::string Gnuplot::create_tmpfile(std::ofstream &tmp) throw GnuplotException(except.str()); } -// int mkstemp(char *name); -// shall replace the contents of the string pointed to by "name" by a unique -// filename, and return a file descriptor for the file open for reading and -// writing. Otherwise, -1 shall be returned if no suitable file could be -// created. The string in template should look like a filename with six -// trailing 'X' s; mkstemp() replaces each 'X' with a character from the -// portable filename character set. The characters are chosen such that the -// resulting name does not duplicate the name of an existing file at the -// time of a call to mkstemp() + // int mkstemp(char *name); + // shall replace the contents of the string pointed to by "name" by a unique + // filename, and return a file descriptor for the file open for reading and + // writing. Otherwise, -1 shall be returned if no suitable file could be + // created. The string in template should look like a filename with six + // trailing 'X' s; mkstemp() replaces each 'X' with a character from the + // portable filename character set. The characters are chosen such that the + // resulting name does not duplicate the name of an existing file at the + // time of a call to mkstemp() -// -// open temporary files for output -// + // + // open temporary files for output + // #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) if (_mktemp(name) == NULL) @@ -2147,7 +2142,7 @@ std::string Gnuplot::create_tmpfile(std::ofstream &tmp) // // Save the temporary filename // - tmpfile_list.push_back(name); + tmpfile_list.emplace_back(name); Gnuplot::tmpfile_num++; return name; @@ -2158,8 +2153,8 @@ void Gnuplot::remove_tmpfiles() { if ((tmpfile_list).size() > 0) { - for (unsigned int i = 0; i < tmpfile_list.size(); i++) - if (remove(tmpfile_list[i].c_str()) != 0) + for (auto &i : tmpfile_list) + if (remove(i.c_str()) != 0) std::cout << "Problem closing files" << std::endl; Gnuplot::tmpfile_num -= tmpfile_list.size(); diff --git a/src/tests/common-files/tracking_tests_flags.h b/src/tests/common-files/tracking_tests_flags.h index 2ff85dabf..1724fcf68 100644 --- a/src/tests/common-files/tracking_tests_flags.h +++ b/src/tests/common-files/tracking_tests_flags.h @@ -42,6 +42,7 @@ DEFINE_double(external_signal_acquisition_threshold, 2.5, "Threshold for satelli DEFINE_int32(external_signal_acquisition_dwells, 5, "Maximum dwells count for satellite acquisition when external file is used"); DEFINE_double(external_signal_acquisition_doppler_max_hz, 5000.0, "Doppler max for satellite acquisition when external file is used"); DEFINE_double(external_signal_acquisition_doppler_step_hz, 125.0, "Doppler step for satellite acquisition when external file is used"); +DEFINE_bool(use_acquisition_resampler, false, "Reduce the sampling rate of the input signal for the acquisition in order to optimize the SNR and decrease the processor load"); DEFINE_string(signal_file, std::string("signal_out.bin"), "Path of the external signal capture file"); DEFINE_double(CN0_dBHz_start, std::numeric_limits::infinity(), "Enable noise generator and set the CN0 start sweep value [dB-Hz]"); diff --git a/src/tests/single_test_main.cc b/src/tests/single_test_main.cc index d539f2563..66a8ab7de 100644 --- a/src/tests/single_test_main.cc +++ b/src/tests/single_test_main.cc @@ -31,16 +31,16 @@ #include "agnss_ref_location.h" #include "agnss_ref_time.h" -#include "concurrent_queue.h" #include "concurrent_map.h" -#include "gps_navigation_message.h" -#include "gps_ephemeris.h" +#include "concurrent_queue.h" +#include "galileo_navigation_message.h" +#include "gps_acq_assist.h" #include "gps_cnav_ephemeris.h" #include "gps_cnav_iono.h" -#include "gps_acq_assist.h" -#include "galileo_navigation_message.h" -#include +#include "gps_ephemeris.h" +#include "gps_navigation_message.h" #include +#include #include #include #include diff --git a/src/tests/system-tests/libs/rtklib_solver_dump_reader.cc b/src/tests/system-tests/libs/rtklib_solver_dump_reader.cc index b32f12bc5..a2c25debc 100644 --- a/src/tests/system-tests/libs/rtklib_solver_dump_reader.cc +++ b/src/tests/system-tests/libs/rtklib_solver_dump_reader.cc @@ -30,6 +30,7 @@ #include "rtklib_solver_dump_reader.h" #include +#include bool rtklib_solver_dump_reader::read_binary_obs() { @@ -80,10 +81,7 @@ bool rtklib_solver_dump_reader::restart() d_dump_file.seekg(0, std::ios::beg); return true; } - else - { - return false; - } + return false; } @@ -98,10 +96,7 @@ int64_t rtklib_solver_dump_reader::num_epochs() int64_t nepoch = size / epoch_size_bytes; return nepoch; } - else - { - return 0; - } + return 0; } @@ -111,7 +106,7 @@ bool rtklib_solver_dump_reader::open_obs_file(std::string out_file) { try { - d_dump_filename = out_file; + d_dump_filename = std::move(out_file); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::in | std::ios::binary); return true; diff --git a/src/tests/system-tests/libs/spirent_motion_csv_dump_reader.cc b/src/tests/system-tests/libs/spirent_motion_csv_dump_reader.cc index 15cd3335d..1082fb233 100644 --- a/src/tests/system-tests/libs/spirent_motion_csv_dump_reader.cc +++ b/src/tests/system-tests/libs/spirent_motion_csv_dump_reader.cc @@ -31,6 +31,7 @@ #include "spirent_motion_csv_dump_reader.h" #include #include +#include spirent_motion_csv_dump_reader::spirent_motion_csv_dump_reader() @@ -185,10 +186,7 @@ bool spirent_motion_csv_dump_reader::restart() } return true; } - else - { - return false; - } + return false; } @@ -205,10 +203,7 @@ int64_t spirent_motion_csv_dump_reader::num_epochs() } return nepoch - header_lines; } - else - { - return 0; - } + return 0; } @@ -218,7 +213,7 @@ bool spirent_motion_csv_dump_reader::open_obs_file(std::string out_file) { try { - d_dump_filename = out_file; + d_dump_filename = std::move(out_file); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str()); std::string line; diff --git a/src/tests/system-tests/position_test.cc b/src/tests/system-tests/position_test.cc index f030130e1..b719dba55 100644 --- a/src/tests/system-tests/position_test.cc +++ b/src/tests/system-tests/position_test.cc @@ -32,31 +32,32 @@ * ------------------------------------------------------------------------- */ -#include "geofunctions.h" -#include "position_test_flags.h" -#include "rtklib_solver_dump_reader.h" -#include "spirent_motion_csv_dump_reader.h" +#include "MATH_CONSTANTS.h" +#include "acquisition_msg_rx.h" #include "concurrent_map.h" #include "concurrent_queue.h" #include "control_thread.h" -#include "in_memory_configuration.h" #include "file_configuration.h" -#include "MATH_CONSTANTS.h" +#include "geofunctions.h" #include "gnuplot_i.h" -#include "test_flags.h" +#include "in_memory_configuration.h" +#include "position_test_flags.h" +#include "rtklib_solver_dump_reader.h" #include "signal_generator_flags.h" -#include +#include "spirent_motion_csv_dump_reader.h" +#include "test_flags.h" +#include "tracking_tests_flags.h" //acquisition resampler #include +#include #include #include +#include #include #include #include #include #include #include -#include -#include // For GPS NAVIGATION (L1) concurrent_queue global_gps_acq_assist_queue; @@ -70,8 +71,8 @@ public: int configure_receiver(); int run_receiver(); void check_results(); - bool save_mat_xy(std::vector& x, std::vector& y, std::string filename); - bool save_mat_x(std::vector& x, std::string filename); + bool save_mat_xy(std::vector* x, std::vector* y, std::string filename); + bool save_mat_x(std::vector* x, std::string filename); std::string config_filename_no_extension; private: @@ -87,7 +88,7 @@ private: std::string filename_rinex_obs = FLAGS_filename_rinex_obs; std::string filename_raw_data = FLAGS_filename_raw_data; - void print_results(arma::mat R_eb_enu); + void print_results(const arma::mat& R_eb_enu); std::shared_ptr config; std::shared_ptr config_f; std::string generated_kml_file; @@ -121,7 +122,7 @@ int PositionSystemTest::generate_signal() pid_t wait_result; int child_status; - char* const parmList[] = {&generator_binary[0], &generator_binary[0], &p1[0], &p2[0], &p3[0], &p4[0], &p5[0], NULL}; + char* const parmList[] = {&generator_binary[0], &generator_binary[0], &p1[0], &p2[0], &p3[0], &p4[0], &p5[0], nullptr}; int pid; if ((pid = fork()) == -1) @@ -184,6 +185,11 @@ int PositionSystemTest::configure_receiver() const int output_rate_ms = 100; config->set_property("GNSS-SDR.internal_fs_sps", std::to_string(sampling_rate_internal)); + // Enable automatic resampler for the acquisition, if required + if (FLAGS_use_acquisition_resampler == true) + { + config->set_property("GNSS-SDR.use_acquisition_resampler", "true"); + } // Set the assistance system parameters config->set_property("GNSS-SDR.SUPL_read_gps_assistance_xml", "false"); @@ -342,12 +348,12 @@ int PositionSystemTest::run_receiver() std::string argum2 = std::string("/bin/ls *kml | tail -1"); char buffer[1035]; fp = popen(&argum2[0], "r"); - if (fp == NULL) + if (fp == nullptr) { std::cout << "Failed to run command: " << argum2 << std::endl; return -1; } - while (fgets(buffer, sizeof(buffer), fp) != NULL) + while (fgets(buffer, sizeof(buffer), fp) != nullptr) { std::string aux = std::string(buffer); EXPECT_EQ(aux.empty(), false); @@ -359,7 +365,7 @@ int PositionSystemTest::run_receiver() } -bool PositionSystemTest::save_mat_xy(std::vector& x, std::vector& y, std::string filename) +bool PositionSystemTest::save_mat_xy(std::vector* x, std::vector* y, std::string filename) { try { @@ -371,7 +377,7 @@ bool PositionSystemTest::save_mat_xy(std::vector& x, std::vector matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT5); if (reinterpret_cast(matfp) != NULL) { - size_t dims[2] = {1, x.size()}; + size_t dims[2] = {1, x->size()}; matvar = Mat_VarCreate("x", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, &x[0], 0); Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB); // or MAT_COMPRESSION_NONE Mat_VarFree(matvar); @@ -394,7 +400,7 @@ bool PositionSystemTest::save_mat_xy(std::vector& x, std::vector } } -bool PositionSystemTest::save_mat_x(std::vector& x, std::string filename) +bool PositionSystemTest::save_mat_x(std::vector* x, std::string filename) { try { @@ -406,7 +412,7 @@ bool PositionSystemTest::save_mat_x(std::vector& x, std::string filename matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT5); if (reinterpret_cast(matfp) != NULL) { - size_t dims[2] = {1, x.size()}; + size_t dims[2] = {1, x->size()}; matvar = Mat_VarCreate("x", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, &x[0], 0); Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB); // or MAT_COMPRESSION_NONE Mat_VarFree(matvar); @@ -782,7 +788,7 @@ void PositionSystemTest::check_results() } -void PositionSystemTest::print_results(arma::mat R_eb_enu) +void PositionSystemTest::print_results(const arma::mat& R_eb_enu) { const std::string gnuplot_executable(FLAGS_gnuplot_executable); if (gnuplot_executable.empty()) @@ -831,7 +837,7 @@ void PositionSystemTest::print_results(arma::mat R_eb_enu) { boost::filesystem::path p(gnuplot_executable); boost::filesystem::path dir = p.parent_path(); - std::string gnuplot_path = dir.native(); + const std::string& gnuplot_path = dir.native(); Gnuplot::set_GNUPlotPath(gnuplot_path); Gnuplot g1("points"); @@ -910,7 +916,7 @@ void PositionSystemTest::print_results(arma::mat R_eb_enu) } } -TEST_F(PositionSystemTest, Position_system_test) +TEST_F(PositionSystemTest /*unused*/, Position_system_test /*unused*/) { if (FLAGS_config_file_ptest.empty()) { diff --git a/src/tests/system-tests/ttff.cc b/src/tests/system-tests/ttff.cc index 6bea0a570..e9a51e762 100644 --- a/src/tests/system-tests/ttff.cc +++ b/src/tests/system-tests/ttff.cc @@ -34,9 +34,9 @@ #include "concurrent_queue.h" #include "control_thread.h" #include "file_configuration.h" -#include "in_memory_configuration.h" #include "gnss_flowgraph.h" #include "gps_acq_assist.h" +#include "in_memory_configuration.h" #include #include #include @@ -48,9 +48,9 @@ #include #include #include -#include #include #include +#include #include @@ -398,7 +398,7 @@ void TtffTest::print_TTFF_report(const std::vector &ttff_v, std::shared_ stm << "Navigation mode: " << "3D" << std::endl; - if (source.compare("UHD_Signal_Source")) + if (source != "UHD_Signal_Source") { stm << "Source: File" << std::endl; } @@ -417,7 +417,7 @@ void TtffTest::print_TTFF_report(const std::vector &ttff_v, std::shared_ } -TEST_F(TtffTest, ColdStart) +TEST_F(TtffTest /*unused*/, ColdStart /*unused*/) { unsigned int num_measurements = 0; @@ -500,7 +500,7 @@ TEST_F(TtffTest, ColdStart) } -TEST_F(TtffTest, HotStart) +TEST_F(TtffTest /*unused*/, HotStart /*unused*/) { unsigned int num_measurements = 0; TTFF_v.clear(); diff --git a/src/tests/test_main.cc b/src/tests/test_main.cc index 52660d18f..721178fdd 100644 --- a/src/tests/test_main.cc +++ b/src/tests/test_main.cc @@ -29,40 +29,35 @@ * ------------------------------------------------------------------------- */ -#include "concurrent_queue.h" #include "concurrent_map.h" +#include "concurrent_queue.h" #include "control_thread.h" -#include "gps_navigation_message.h" - -#include "gps_ephemeris.h" -#include "gps_cnav_ephemeris.h" -#include "gps_almanac.h" -#include "gps_iono.h" -#include "gps_cnav_iono.h" -#include "gps_utc_model.h" - -#include "galileo_ephemeris.h" #include "galileo_almanac.h" +#include "galileo_ephemeris.h" #include "galileo_iono.h" #include "galileo_utc_model.h" - -#include "sbas_ephemeris.h" - -#include "glonass_gnav_ephemeris.h" #include "glonass_gnav_almanac.h" +#include "glonass_gnav_ephemeris.h" #include "glonass_gnav_utc_model.h" - -#include -#include +#include "gps_almanac.h" +#include "gps_cnav_ephemeris.h" +#include "gps_cnav_iono.h" +#include "gps_ephemeris.h" +#include "gps_iono.h" +#include "gps_navigation_message.h" +#include "gps_utc_model.h" +#include "sbas_ephemeris.h" #include +#include +#include #include #include #include #include #include #include -#include #include +#include using google::LogMessage; @@ -84,51 +79,45 @@ DECLARE_string(log_dir); #else +#include "unit-tests/arithmetic/matio_test.cc" +#include "unit-tests/arithmetic/code_generation_test.cc" #include "unit-tests/arithmetic/complex_carrier_test.cc" #include "unit-tests/arithmetic/conjugate_test.cc" -#include "unit-tests/arithmetic/magnitude_squared_test.cc" -#include "unit-tests/arithmetic/multiply_test.cc" -#include "unit-tests/arithmetic/code_generation_test.cc" #include "unit-tests/arithmetic/fft_length_test.cc" #include "unit-tests/arithmetic/fft_speed_test.cc" -#include "unit-tests/arithmetic/matio_test.cc" - -#include "unit-tests/control-plane/file_configuration_test.cc" -#include "unit-tests/control-plane/in_memory_configuration_test.cc" +#include "unit-tests/arithmetic/magnitude_squared_test.cc" +#include "unit-tests/arithmetic/multiply_test.cc" #include "unit-tests/control-plane/control_message_factory_test.cc" #include "unit-tests/control-plane/control_thread_test.cc" -#include "unit-tests/control-plane/gnss_flowgraph_test.cc" -#include "unit-tests/control-plane/string_converter_test.cc" +#include "unit-tests/control-plane/file_configuration_test.cc" #include "unit-tests/control-plane/gnss_block_factory_test.cc" - +#include "unit-tests/control-plane/gnss_flowgraph_test.cc" +#include "unit-tests/control-plane/in_memory_configuration_test.cc" +#include "unit-tests/control-plane/string_converter_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_gsoc2017_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc" +#include "unit-tests/signal-processing-blocks/adapter/adapter_test.cc" +#include "unit-tests/signal-processing-blocks/adapter/pass_through_test.cc" +#include "unit-tests/signal-processing-blocks/filter/fir_filter_test.cc" +#include "unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc" +#include "unit-tests/signal-processing-blocks/filter/notch_filter_test.cc" +#include "unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc" +#include "unit-tests/signal-processing-blocks/resampler/direct_resampler_conditioner_cc_test.cc" +#include "unit-tests/signal-processing-blocks/resampler/mmse_resampler_test.cc" #include "unit-tests/signal-processing-blocks/sources/file_signal_source_test.cc" #include "unit-tests/signal-processing-blocks/sources/gnss_sdr_valve_test.cc" #include "unit-tests/signal-processing-blocks/sources/unpack_2bit_samples_test.cc" - -#include "unit-tests/signal-processing-blocks/adapter/pass_through_test.cc" -#include "unit-tests/signal-processing-blocks/adapter/adapter_test.cc" - -#include "unit-tests/signal-processing-blocks/filter/fir_filter_test.cc" -#include "unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc" -#include "unit-tests/signal-processing-blocks/filter/notch_filter_test.cc" -#include "unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc" - -#include "unit-tests/signal-processing-blocks/resampler/direct_resampler_conditioner_cc_test.cc" -#include "unit-tests/signal-processing-blocks/resampler/mmse_resampler_test.cc" - -#include "unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc" -#include "unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc" -#include "unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc" -#include "unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc" -#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_test.cc" -#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc" -#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc" -#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc" -#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc" -#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc" -#include "unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc" -#include "unit-tests/signal-processing-blocks/acquisition/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc" -#include "unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_gsoc2017_test.cc" // #include "unit-tests/signal-processing-blocks/acquisition/glonass_l2_ca_pcps_acquisition_test.cc" #include "unit-tests/signal-processing-blocks/acquisition/beidou_b1i_pcps_acquisition_test.cc" @@ -136,48 +125,47 @@ DECLARE_string(log_dir); #include "unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_opencl_acquisition_gsoc2013_test.cc" #endif +#include "unit-tests/signal-processing-blocks/tracking/bayesian_estimation_test.cc" +#include "unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_real_codes_test.cc" +#include "unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_test.cc" #include "unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc" #include "unit-tests/signal-processing-blocks/tracking/galileo_e5a_tracking_test.cc" -#include "unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_tracking_test.cc" #include "unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc" +#include "unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_tracking_test.cc" #include "unit-tests/signal-processing-blocks/tracking/tracking_loop_filter_test.cc" -#include "unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_test.cc" -#include "unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_real_codes_test.cc" -#include "unit-tests/signal-processing-blocks/tracking/bayesian_estimation_test.cc" #if CUDA_BLOCKS_TEST #include "unit-tests/signal-processing-blocks/tracking/gpu_multicorrelator_test.cc" #endif #if FPGA_BLOCKS_TEST -#include "unit-tests/signal-processing-blocks/tracking/gps_l1_ca_dll_pll_tracking_test_fpga.cc" #include "unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test_fpga.cc" +#include "unit-tests/signal-processing-blocks/tracking/gps_l1_ca_dll_pll_tracking_test_fpga.cc" #endif +#include "unit-tests/signal-processing-blocks/pvt/nmea_printer_test.cc" +#include "unit-tests/signal-processing-blocks/pvt/rinex_printer_test.cc" +#include "unit-tests/signal-processing-blocks/pvt/rtcm_printer_test.cc" +#include "unit-tests/signal-processing-blocks/pvt/rtcm_test.cc" #include "unit-tests/signal-processing-blocks/telemetry_decoder/galileo_fnav_inav_decoder_test.cc" #include "unit-tests/system-parameters/glonass_gnav_ephemeris_test.cc" #include "unit-tests/system-parameters/glonass_gnav_nav_message_test.cc" -#include "unit-tests/signal-processing-blocks/pvt/rtcm_test.cc" -#include "unit-tests/signal-processing-blocks/pvt/rtcm_printer_test.cc" -#include "unit-tests/signal-processing-blocks/pvt/rinex_printer_test.cc" -#include "unit-tests/signal-processing-blocks/pvt/nmea_printer_test.cc" - #if EXTRA_TESTS -#include "unit-tests/signal-processing-blocks/acquisition/gps_l2_m_pcps_acquisition_test.cc" -#include "unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_test.cc" #include "unit-tests/signal-processing-blocks/acquisition/acq_performance_test.cc" -#include "unit-tests/signal-processing-blocks/tracking/gps_l2_m_dll_pll_tracking_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_test.cc" +#include "unit-tests/signal-processing-blocks/acquisition/gps_l2_m_pcps_acquisition_test.cc" +#include "unit-tests/signal-processing-blocks/pvt/rtklib_solver_test.cc" #include "unit-tests/signal-processing-blocks/tracking/gps_l1_ca_dll_pll_tracking_test.cc" #include "unit-tests/signal-processing-blocks/tracking/gps_l1_ca_kf_tracking_test.cc" +#include "unit-tests/signal-processing-blocks/tracking/gps_l2_m_dll_pll_tracking_test.cc" #include "unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test.cc" -#include "unit-tests/signal-processing-blocks/pvt/rtklib_solver_test.cc" #if ENABLE_FPGA #include "unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test_fpga.cc" #endif -#include "unit-tests/signal-processing-blocks/telemetry_decoder/gps_l1_ca_telemetry_decoder_test.cc" #include "unit-tests/signal-processing-blocks/observables/hybrid_observables_test.cc" +#include "unit-tests/signal-processing-blocks/telemetry_decoder/gps_l1_ca_telemetry_decoder_test.cc" #endif #endif // UNIT_TESTING_MINIMAL diff --git a/src/tests/unit-tests/arithmetic/code_generation_test.cc b/src/tests/unit-tests/arithmetic/code_generation_test.cc index 21f32dd47..d89b03365 100644 --- a/src/tests/unit-tests/arithmetic/code_generation_test.cc +++ b/src/tests/unit-tests/arithmetic/code_generation_test.cc @@ -29,10 +29,10 @@ * ------------------------------------------------------------------------- */ +#include "gnss_signal_processing.h" +#include "gps_sdr_signal_processing.h" #include #include -#include "gps_sdr_signal_processing.h" -#include "gnss_signal_processing.h" TEST(CodeGenerationTest, CodeGenGPSL1Test) diff --git a/src/tests/unit-tests/arithmetic/complex_carrier_test.cc b/src/tests/unit-tests/arithmetic/complex_carrier_test.cc index 1d4a0a900..3cac38fbe 100644 --- a/src/tests/unit-tests/arithmetic/complex_carrier_test.cc +++ b/src/tests/unit-tests/arithmetic/complex_carrier_test.cc @@ -29,10 +29,10 @@ * ------------------------------------------------------------------------- */ +#include "gnss_signal_processing.h" +#include #include #include -#include -#include "gnss_signal_processing.h" DEFINE_int32(size_carrier_test, 100000, "Size of the arrays used for complex carrier testing"); diff --git a/src/tests/unit-tests/arithmetic/conjugate_test.cc b/src/tests/unit-tests/arithmetic/conjugate_test.cc index ec1c6e3f0..1eaa4cc09 100644 --- a/src/tests/unit-tests/arithmetic/conjugate_test.cc +++ b/src/tests/unit-tests/arithmetic/conjugate_test.cc @@ -29,12 +29,12 @@ * ------------------------------------------------------------------------- */ -#include -#include -#include #include #include #include +#include +#include +#include DEFINE_int32(size_conjugate_test, 100000, "Size of the arrays used for conjugate testing"); diff --git a/src/tests/unit-tests/arithmetic/fft_length_test.cc b/src/tests/unit-tests/arithmetic/fft_length_test.cc index f7f006d99..3e75c4285 100644 --- a/src/tests/unit-tests/arithmetic/fft_length_test.cc +++ b/src/tests/unit-tests/arithmetic/fft_length_test.cc @@ -29,14 +29,14 @@ * ------------------------------------------------------------------------- */ +#include "gnuplot_i.h" +#include "test_flags.h" +#include +#include #include #include #include #include -#include -#include -#include "gnuplot_i.h" -#include "test_flags.h" DEFINE_int32(fft_iterations_test, 1000, "Number of averaged iterations in FFT length timing test"); diff --git a/src/tests/unit-tests/arithmetic/fft_speed_test.cc b/src/tests/unit-tests/arithmetic/fft_speed_test.cc index c18c0f822..009b40838 100644 --- a/src/tests/unit-tests/arithmetic/fft_speed_test.cc +++ b/src/tests/unit-tests/arithmetic/fft_speed_test.cc @@ -30,10 +30,10 @@ * ------------------------------------------------------------------------- */ +#include +#include #include #include -#include -#include DEFINE_int32(fft_speed_iterations_test, 100, "Number of averaged iterations in FFT length timing test"); diff --git a/src/tests/unit-tests/arithmetic/magnitude_squared_test.cc b/src/tests/unit-tests/arithmetic/magnitude_squared_test.cc index 616487a8a..5a51b32be 100644 --- a/src/tests/unit-tests/arithmetic/magnitude_squared_test.cc +++ b/src/tests/unit-tests/arithmetic/magnitude_squared_test.cc @@ -30,12 +30,12 @@ * ------------------------------------------------------------------------- */ -#include -#include -#include #include #include #include +#include +#include +#include DEFINE_int32(size_magnitude_test, 100000, "Size of the arrays used for magnitude testing"); diff --git a/src/tests/unit-tests/arithmetic/matio_test.cc b/src/tests/unit-tests/arithmetic/matio_test.cc index 0429dff75..681aa8a94 100644 --- a/src/tests/unit-tests/arithmetic/matio_test.cc +++ b/src/tests/unit-tests/arithmetic/matio_test.cc @@ -30,10 +30,10 @@ * ------------------------------------------------------------------------- */ -#include -#include #include #include +#include +#include TEST(MatioTest, WriteAndReadDoubles) { @@ -41,13 +41,13 @@ TEST(MatioTest, WriteAndReadDoubles) mat_t *matfp; matvar_t *matvar; std::string filename = "./test.mat"; - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - ASSERT_FALSE(reinterpret_cast(matfp) == NULL) << "Error creating .mat file"; + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + ASSERT_FALSE(reinterpret_cast(matfp) == nullptr) << "Error creating .mat file"; double x[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; size_t dims[2] = {10, 1}; matvar = Mat_VarCreate("x", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, x, 0); - ASSERT_FALSE(reinterpret_cast(matvar) == NULL) << "Error creating variable for โ€™xโ€™"; + ASSERT_FALSE(reinterpret_cast(matvar) == nullptr) << "Error creating variable for โ€™xโ€™"; Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB); // or MAT_COMPRESSION_NONE Mat_VarFree(matvar); @@ -59,13 +59,13 @@ TEST(MatioTest, WriteAndReadDoubles) matvar_t *matvar_read; matfp_read = Mat_Open(filename.c_str(), MAT_ACC_RDONLY); - ASSERT_FALSE(reinterpret_cast(matfp_read) == NULL) << "Error reading .mat file"; + ASSERT_FALSE(reinterpret_cast(matfp_read) == nullptr) << "Error reading .mat file"; matvar_read = Mat_VarReadInfo(matfp_read, "x"); - ASSERT_FALSE(reinterpret_cast(matvar_read) == NULL) << "Error reading variable in .mat file"; + ASSERT_FALSE(reinterpret_cast(matvar_read) == nullptr) << "Error reading variable in .mat file"; matvar_read = Mat_VarRead(matfp_read, "x"); - double *x_read = reinterpret_cast(matvar_read->data); + auto *x_read = reinterpret_cast(matvar_read->data); Mat_Close(matfp_read); for (int i = 0; i < 10; i++) @@ -83,35 +83,35 @@ TEST(MatioTest, WriteAndReadGrComplex) mat_t *matfp; matvar_t *matvar1; std::string filename = "./test3.mat"; - matfp = Mat_CreateVer(filename.c_str(), NULL, MAT_FT_MAT73); - ASSERT_FALSE(reinterpret_cast(matfp) == NULL) << "Error creating .mat file"; + matfp = Mat_CreateVer(filename.c_str(), nullptr, MAT_FT_MAT73); + ASSERT_FALSE(reinterpret_cast(matfp) == nullptr) << "Error creating .mat file"; std::vector x_v = {{1, 10}, {2, 9}, {3, 8}, {4, 7}, {5, 6}, {6, -5}, {7, -4}, {8, 3}, {9, 2}, {10, 1}}; const unsigned int size = x_v.size(); float x_real[size]; float x_imag[size]; unsigned int i = 0; - for (std::vector::const_iterator it = x_v.cbegin(); it != x_v.cend(); it++) + for (auto it : x_v) { - x_real[i] = it->real(); - x_imag[i] = it->imag(); + x_real[i] = it.real(); + x_imag[i] = it.imag(); i++; } struct mat_complex_split_t x = {x_real, x_imag}; size_t dims[2] = {static_cast(size), 1}; matvar1 = Mat_VarCreate("x", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, &x, MAT_F_COMPLEX); - ASSERT_FALSE(reinterpret_cast(matvar1) == NULL) << "Error creating variable for โ€™xโ€™"; + ASSERT_FALSE(reinterpret_cast(matvar1) == nullptr) << "Error creating variable for โ€™xโ€™"; std::vector x2 = {{1.1, -10}, {2, -9}, {3, -8}, {4, -7}, {5, 6}, {6, -5}, {7, -4}, {8, 3}, {9, 2}, {10, 1}}; const unsigned int size_y = x2.size(); float y_real[size_y]; float y_imag[size_y]; i = 0; - for (std::vector::const_iterator it = x2.cbegin(); it != x2.cend(); it++) + for (auto it : x2) { - y_real[i] = it->real(); - y_imag[i] = it->imag(); + y_real[i] = it.real(); + y_imag[i] = it.imag(); i++; } @@ -119,7 +119,7 @@ TEST(MatioTest, WriteAndReadGrComplex) size_t dims_y[2] = {static_cast(size_y), 1}; matvar_t *matvar2; matvar2 = Mat_VarCreate("y", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims_y, &y, MAT_F_COMPLEX); - ASSERT_FALSE(reinterpret_cast(matvar2) == NULL) << "Error creating variable for โ€™yโ€™"; + ASSERT_FALSE(reinterpret_cast(matvar2) == nullptr) << "Error creating variable for โ€™yโ€™"; Mat_VarWrite(matfp, matvar1, MAT_COMPRESSION_ZLIB); // or MAT_COMPRESSION_NONE Mat_VarWrite(matfp, matvar2, MAT_COMPRESSION_ZLIB); // or MAT_COMPRESSION_NONE @@ -133,19 +133,19 @@ TEST(MatioTest, WriteAndReadGrComplex) matvar_t *matvar_read; matfp_read = Mat_Open(filename.c_str(), MAT_ACC_RDONLY); - ASSERT_FALSE(reinterpret_cast(matfp_read) == NULL) << "Error reading .mat file"; + ASSERT_FALSE(reinterpret_cast(matfp_read) == nullptr) << "Error reading .mat file"; matvar_read = Mat_VarReadInfo(matfp_read, "x"); - ASSERT_FALSE(reinterpret_cast(matvar_read) == NULL) << "Error reading variable in .mat file"; + ASSERT_FALSE(reinterpret_cast(matvar_read) == nullptr) << "Error reading variable in .mat file"; matvar_read = Mat_VarRead(matfp_read, "x"); - mat_complex_split_t *x_read_st = reinterpret_cast(matvar_read->data); - float *x_read_real = reinterpret_cast(x_read_st->Re); - float *x_read_imag = reinterpret_cast(x_read_st->Im); + auto *x_read_st = reinterpret_cast(matvar_read->data); + auto *x_read_real = reinterpret_cast(x_read_st->Re); + auto *x_read_imag = reinterpret_cast(x_read_st->Im); std::vector x_v_read; for (unsigned int i = 0; i < size; i++) { - x_v_read.push_back(gr_complex(x_read_real[i], x_read_imag[i])); + x_v_read.emplace_back(x_read_real[i], x_read_imag[i]); } Mat_Close(matfp_read); diff --git a/src/tests/unit-tests/arithmetic/multiply_test.cc b/src/tests/unit-tests/arithmetic/multiply_test.cc index 19abb0434..f4747431f 100644 --- a/src/tests/unit-tests/arithmetic/multiply_test.cc +++ b/src/tests/unit-tests/arithmetic/multiply_test.cc @@ -30,13 +30,13 @@ * ------------------------------------------------------------------------- */ +#include +#include +#include #include #include #include #include -#include -#include -#include DEFINE_int32(size_multiply_test, 100000, "Size of the arrays used for multiply testing"); diff --git a/src/tests/unit-tests/control-plane/control_message_factory_test.cc b/src/tests/unit-tests/control-plane/control_message_factory_test.cc index dd372de97..7440d37f4 100644 --- a/src/tests/unit-tests/control-plane/control_message_factory_test.cc +++ b/src/tests/unit-tests/control-plane/control_message_factory_test.cc @@ -31,9 +31,9 @@ */ -#include -#include #include "control_message_factory.h" +#include +#include TEST(ControlMessageFactoryTest, GetQueueMessage) diff --git a/src/tests/unit-tests/control-plane/control_thread_test.cc b/src/tests/unit-tests/control-plane/control_thread_test.cc index 2cc7c6ca2..0155cb227 100644 --- a/src/tests/unit-tests/control-plane/control_thread_test.cc +++ b/src/tests/unit-tests/control-plane/control_thread_test.cc @@ -31,25 +31,25 @@ */ -#include +#include "control_message_factory.h" +#include "control_thread.h" +#include "in_memory_configuration.h" +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include -#include #include #include +#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include "control_thread.h" -#include "in_memory_configuration.h" -#include "control_message_factory.h" +#include class ControlThreadTest : public ::testing::Test @@ -88,7 +88,7 @@ int ControlThreadTest::stop_receiver() } -TEST_F(ControlThreadTest, InstantiateRunControlMessages) +TEST_F(ControlThreadTest /*unused*/, InstantiateRunControlMessages /*unused*/) { std::shared_ptr config = std::make_shared(); @@ -150,7 +150,7 @@ TEST_F(ControlThreadTest, InstantiateRunControlMessages) } -TEST_F(ControlThreadTest, InstantiateRunControlMessages2) +TEST_F(ControlThreadTest /*unused*/, InstantiateRunControlMessages2 /*unused*/) { std::shared_ptr config = std::make_shared(); config->set_property("SignalSource.implementation", "File_Signal_Source"); @@ -214,7 +214,7 @@ TEST_F(ControlThreadTest, InstantiateRunControlMessages2) } -TEST_F(ControlThreadTest, StopReceiverProgrammatically) +TEST_F(ControlThreadTest /*unused*/, StopReceiverProgrammatically /*unused*/) { std::shared_ptr config = std::make_shared(); config->set_property("SignalSource.implementation", "File_Signal_Source"); diff --git a/src/tests/unit-tests/control-plane/file_configuration_test.cc b/src/tests/unit-tests/control-plane/file_configuration_test.cc index 68fa64aad..6f7661f30 100644 --- a/src/tests/unit-tests/control-plane/file_configuration_test.cc +++ b/src/tests/unit-tests/control-plane/file_configuration_test.cc @@ -30,8 +30,8 @@ */ -#include #include "file_configuration.h" +#include TEST(FileConfigurationTest, OverridedProperties) diff --git a/src/tests/unit-tests/control-plane/gnss_block_factory_test.cc b/src/tests/unit-tests/control-plane/gnss_block_factory_test.cc index 1dfa028cf..9eff70397 100644 --- a/src/tests/unit-tests/control-plane/gnss_block_factory_test.cc +++ b/src/tests/unit-tests/control-plane/gnss_block_factory_test.cc @@ -33,18 +33,18 @@ * ------------------------------------------------------------------------- */ -#include -#include -#include -#include "in_memory_configuration.h" -#include "gnss_block_interface.h" #include "acquisition_interface.h" -#include "tracking_interface.h" -#include "telemetry_decoder_interface.h" +#include "channel.h" +#include "gnss_block_factory.h" +#include "gnss_block_interface.h" +#include "in_memory_configuration.h" #include "observables_interface.h" #include "pvt_interface.h" -#include "gnss_block_factory.h" -#include "channel.h" +#include "telemetry_decoder_interface.h" +#include "tracking_interface.h" +#include +#include +#include TEST(GNSSBlockFactoryTest, InstantiateFileSignalSource) { diff --git a/src/tests/unit-tests/control-plane/gnss_flowgraph_test.cc b/src/tests/unit-tests/control-plane/gnss_flowgraph_test.cc index bca21b629..711b49d5f 100644 --- a/src/tests/unit-tests/control-plane/gnss_flowgraph_test.cc +++ b/src/tests/unit-tests/control-plane/gnss_flowgraph_test.cc @@ -30,21 +30,21 @@ * ------------------------------------------------------------------------- */ +#include "acquisition_interface.h" +#include "channel.h" +#include "channel_interface.h" +#include "file_configuration.h" +#include "file_signal_source.h" +#include "gnss_block_interface.h" +#include "gnss_flowgraph.h" +#include "in_memory_configuration.h" +#include "pass_through.h" +#include "tracking_interface.h" #include #include -#include "gnss_flowgraph.h" -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" -#include "file_configuration.h" -#include "channel.h" -#include "acquisition_interface.h" -#include "tracking_interface.h" -#include "channel_interface.h" -#include "pass_through.h" -#include "file_signal_source.h" -TEST(GNSSFlowgraph, InstantiateConnectStartStopOldNotation) +TEST(GNSSFlowgraph /*unused*/, InstantiateConnectStartStopOldNotation /*unused*/) { std::shared_ptr config = std::make_shared(); @@ -80,7 +80,7 @@ TEST(GNSSFlowgraph, InstantiateConnectStartStopOldNotation) } -TEST(GNSSFlowgraph, InstantiateConnectStartStop) +TEST(GNSSFlowgraph /*unused*/, InstantiateConnectStartStop /*unused*/) { std::shared_ptr config = std::make_shared(); config->set_property("GNSS-SDR.internal_fs_sps", "4000000"); @@ -114,7 +114,7 @@ TEST(GNSSFlowgraph, InstantiateConnectStartStop) EXPECT_FALSE(flowgraph->running()); } -TEST(GNSSFlowgraph, InstantiateConnectStartStopGalileoE1B) +TEST(GNSSFlowgraph /*unused*/, InstantiateConnectStartStopGalileoE1B /*unused*/) { std::shared_ptr config = std::make_shared(); config->set_property("GNSS-SDR.internal_fs_sps", "4000000"); @@ -149,7 +149,7 @@ TEST(GNSSFlowgraph, InstantiateConnectStartStopGalileoE1B) } -TEST(GNSSFlowgraph, InstantiateConnectStartStopHybrid) +TEST(GNSSFlowgraph /*unused*/, InstantiateConnectStartStopHybrid /*unused*/) { std::shared_ptr config = std::make_shared(); config->set_property("GNSS-SDR.internal_fs_sps", "4000000"); diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/acq_performance_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/acq_performance_test.cc index d0dcc4673..8b738eebf 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/acq_performance_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/acq_performance_test.cc @@ -29,29 +29,29 @@ * ------------------------------------------------------------------------- */ -#include "gps_l1_ca_pcps_acquisition.h" -#include "gps_l1_ca_pcps_acquisition_fine_doppler.h" +#include "acquisition_dump_reader.h" +#include "display.h" +#include "file_configuration.h" #include "galileo_e1_pcps_ambiguous_acquisition.h" #include "galileo_e5a_pcps_acquisition.h" #include "glonass_l1_ca_pcps_acquisition.h" #include "glonass_l2_ca_pcps_acquisition.h" +#include "gnss_sdr_valve.h" +#include "gnuplot_i.h" +#include "gps_l1_ca_pcps_acquisition.h" +#include "gps_l1_ca_pcps_acquisition_fine_doppler.h" #include "gps_l2_m_pcps_acquisition.h" #include "gps_l5i_pcps_acquisition.h" #include "in_memory_configuration.h" -#include "file_configuration.h" -#include "gnss_sdr_valve.h" -#include "acquisition_dump_reader.h" -#include "display.h" -#include "gnuplot_i.h" #include "signal_generator_flags.h" #include "test_flags.h" #include "tracking_true_obs_reader.h" #include "true_observables_reader.h" #include -#include #include #include #include +#include DEFINE_string(config_file_ptest, std::string(""), "File containing alternative configuration parameters for the acquisition performance test."); @@ -87,6 +87,8 @@ DEFINE_int32(acq_test_iterations, 1, "Number of iterations (same signal, differe DEFINE_bool(plot_acq_test, false, "Plots results with gnuplot, if available"); DEFINE_int32(acq_test_skiphead, 0, "Number of samples to skip in the input file"); +DEFINE_bool(acq_test_dump, false, "Dump the results of an acquisition block into .mat files."); + // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class AcqPerfTest_msg_rx; @@ -523,8 +525,15 @@ int AcquisitionPerformanceTest::configure_receiver(double cn0, float pfa, unsign config->set_property("Acquisition.make_two_steps", "false"); } + if (FLAGS_acq_test_dump) + { + config->set_property("Acquisition.dump", "true"); + } + else + { + config->set_property("Acquisition.dump", "false"); + } - config->set_property("Acquisition.dump", "true"); std::string dump_file = path_str + std::string("/acquisition_") + std::to_string(cn0) + "_" + std::to_string(iter) + "_" + std::to_string(pfa); config->set_property("Acquisition.dump_filename", dump_file); config->set_property("Acquisition.dump_channel", std::to_string(dump_channel)); diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc index edc2eb3ce..7e3be06c6 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc @@ -30,27 +30,27 @@ */ -#include #include -#include -#include #include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" -#include "gnss_synchro.h" +#include "fir_filter.h" #include "galileo_e1_pcps_8ms_ambiguous_acquisition.h" +#include "gen_signal_source.h" +#include "gnss_block_interface.h" +#include "gnss_sdr_valve.h" +#include "gnss_synchro.h" +#include "in_memory_configuration.h" #include "signal_generator.h" #include "signal_generator_c.h" -#include "fir_filter.h" -#include "gen_signal_source.h" -#include "gnss_sdr_valve.h" +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test_msg_rx; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc index d5cbef8c0..7f15ac400 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc @@ -31,26 +31,26 @@ */ -#include -#include -#include #include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" -#include "gnss_synchro.h" +#include "fir_filter.h" #include "galileo_e1_pcps_ambiguous_acquisition.h" +#include "gen_signal_source.h" +#include "gnss_block_interface.h" +#include "gnss_sdr_valve.h" +#include "gnss_synchro.h" +#include "in_memory_configuration.h" #include "signal_generator.h" #include "signal_generator_c.h" -#include "fir_filter.h" -#include "gen_signal_source.h" -#include "gnss_sdr_valve.h" +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc index e0c6b4534..73b67416b 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc @@ -41,25 +41,25 @@ */ -#include -#include -#include #include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include +#include "galileo_e1_pcps_ambiguous_acquisition.h" #include "gnss_block_factory.h" #include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "gnss_sdr_valve.h" #include "gnss_signal.h" #include "gnss_synchro.h" -#include "galileo_e1_pcps_ambiguous_acquisition.h" +#include "in_memory_configuration.h" +#include +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class GalileoE1PcpsAmbiguousAcquisitionGSoCTest_msg_rx; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_test.cc index 10ed1e676..786bfbff7 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_test.cc @@ -31,31 +31,31 @@ */ -#include #include #include -#include -#include #include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include +#include "Galileo_E1.h" +#include "acquisition_dump_reader.h" +#include "galileo_e1_pcps_ambiguous_acquisition.h" #include "gnss_block_factory.h" #include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "gnss_sdr_valve.h" #include "gnss_signal.h" #include "gnss_synchro.h" #include "gnuplot_i.h" +#include "in_memory_configuration.h" #include "test_flags.h" -#include "acquisition_dump_reader.h" -#include "galileo_e1_pcps_ambiguous_acquisition.h" -#include "Galileo_E1.h" +#include +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class GalileoE1PcpsAmbiguousAcquisitionTest_msg_rx; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc index d2738a9a3..3388bf162 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc @@ -31,27 +31,27 @@ */ -#include #include -#include -#include #include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" -#include "gnss_synchro.h" +#include "fir_filter.h" #include "galileo_e1_pcps_cccwsr_ambiguous_acquisition.h" +#include "gen_signal_source.h" +#include "gnss_block_interface.h" +#include "gnss_sdr_valve.h" +#include "gnss_synchro.h" +#include "in_memory_configuration.h" #include "signal_generator.h" #include "signal_generator_c.h" -#include "fir_filter.h" -#include "gen_signal_source.h" -#include "gnss_sdr_valve.h" +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class GalileoE1PcpsCccwsrAmbiguousAcquisitionTest_msg_rx; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc index 9acd50a0a..b4a7b4410 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc @@ -31,29 +31,29 @@ */ +#include +#include +#include +#include +#include #include #include #include -#include -#include -#include -#include -#include #ifdef GR_GREATER_38 #include #else #include #endif -#include +#include "fir_filter.h" +#include "galileo_e1_pcps_quicksync_ambiguous_acquisition.h" +#include "gen_signal_source.h" #include "gnss_block_interface.h" -#include "in_memory_configuration.h" +#include "gnss_sdr_valve.h" #include "gnss_synchro.h" +#include "in_memory_configuration.h" #include "signal_generator.h" #include "signal_generator_c.h" -#include "fir_filter.h" -#include "gen_signal_source.h" -#include "gnss_sdr_valve.h" -#include "galileo_e1_pcps_quicksync_ambiguous_acquisition.h" +#include DEFINE_double(e1_value_threshold, 0.3, "Value of the threshold for the acquisition"); DEFINE_int32(e1_value_CN0_dB_0, 50, "Value for the CN0_dB_0 in channel 0"); diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc index ce86126ea..8fe2305a3 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc @@ -30,30 +30,30 @@ * ------------------------------------------------------------------------- */ -#include #include #include -#include -#include #include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "configuration_interface.h" -#include "gnss_synchro.h" +#include "fir_filter.h" #include "galileo_e1_pcps_tong_ambiguous_acquisition.h" +#include "gen_signal_source.h" +#include "gnss_block_interface.h" +#include "gnss_sdr_valve.h" +#include "gnss_synchro.h" +#include "in_memory_configuration.h" #include "signal_generator.h" #include "signal_generator_c.h" -#include "fir_filter.h" -#include "gen_signal_source.h" -#include "gnss_sdr_valve.h" +#include +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test_msg_rx; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc index 63cf64e3e..df67c7756 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc @@ -29,27 +29,27 @@ * ------------------------------------------------------------------------- */ -#include -#include -#include #include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" -#include "gnss_synchro.h" +#include "fir_filter.h" #include "galileo_e5a_noncoherent_iq_acquisition_caf.h" +#include "gen_signal_source.h" +#include "gnss_block_interface.h" +#include "gnss_sdr_valve.h" +#include "gnss_synchro.h" +#include "in_memory_configuration.h" +#include "pass_through.h" #include "signal_generator.h" #include "signal_generator_c.h" -#include "fir_filter.h" -#include "gen_signal_source.h" -#include "gnss_sdr_valve.h" -#include "pass_through.h" +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_gsoc2017_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_gsoc2017_test.cc index 30758feac..70ad8e25e 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_gsoc2017_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_gsoc2017_test.cc @@ -31,30 +31,30 @@ */ -#include -#include -#include #include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "configuration_interface.h" -#include "gnss_synchro.h" -#include "glonass_l1_ca_pcps_acquisition.h" -#include "signal_generator.h" -#include "signal_generator_c.h" #include "freq_xlating_fir_filter.h" #include "gen_signal_source.h" +#include "glonass_l1_ca_pcps_acquisition.h" +#include "gnss_block_interface.h" #include "gnss_sdr_valve.h" -#include "boost/shared_ptr.hpp" +#include "gnss_synchro.h" +#include "in_memory_configuration.h" #include "pass_through.h" +#include "signal_generator.h" +#include "signal_generator_c.h" +#include "boost/shared_ptr.hpp" +#include +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_test.cc index b250b7e64..9fca76da0 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_test.cc @@ -30,28 +30,28 @@ * ------------------------------------------------------------------------- */ -#include -#include #include #include -#include -#include #include +#include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include "gnss_block_factory.h" -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" -#include "gnss_sdr_valve.h" -#include "gnss_synchro.h" #include "freq_xlating_fir_filter.h" #include "glonass_l1_ca_pcps_acquisition.h" +#include "gnss_block_factory.h" +#include "gnss_block_interface.h" +#include "gnss_sdr_valve.h" +#include "gnss_synchro.h" +#include "in_memory_configuration.h" +#include +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l2_ca_pcps_acquisition_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l2_ca_pcps_acquisition_test.cc index cf2af8a56..a8f668f69 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l2_ca_pcps_acquisition_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l2_ca_pcps_acquisition_test.cc @@ -30,30 +30,30 @@ */ -#include -#include -#include #include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "configuration_interface.h" -#include "gnss_synchro.h" -#include "glonass_l2_ca_pcps_acquisition.h" -#include "signal_generator.h" -#include "signal_generator_c.h" #include "fir_filter.h" #include "gen_signal_source.h" +#include "glonass_l2_ca_pcps_acquisition.h" +#include "gnss_block_interface.h" #include "gnss_sdr_valve.h" -#include "boost/shared_ptr.hpp" +#include "gnss_synchro.h" +#include "in_memory_configuration.h" #include "pass_through.h" +#include "signal_generator.h" +#include "signal_generator_c.h" +#include "boost/shared_ptr.hpp" +#include +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc index 7fe814a5c..af4f5b6a5 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc @@ -31,30 +31,30 @@ */ -#include -#include -#include #include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "configuration_interface.h" -#include "gnss_synchro.h" -#include "gps_l1_ca_pcps_acquisition.h" -#include "signal_generator.h" -#include "signal_generator_c.h" #include "fir_filter.h" #include "gen_signal_source.h" +#include "gnss_block_interface.h" #include "gnss_sdr_valve.h" -#include "boost/shared_ptr.hpp" +#include "gnss_synchro.h" +#include "gps_l1_ca_pcps_acquisition.h" +#include "in_memory_configuration.h" #include "pass_through.h" +#include "signal_generator.h" +#include "signal_generator_c.h" +#include "boost/shared_ptr.hpp" +#include +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc index 6f028cd4a..d93f11918 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc @@ -31,37 +31,38 @@ */ -#include #include #include #include -#include -#include #include +#include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include +#include "GPS_L1_CA.h" +#include "acquisition_dump_reader.h" #include "gnss_block_factory.h" #include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "gnss_sdr_valve.h" #include "gnss_synchro.h" #include "gnuplot_i.h" -#include "GPS_L1_CA.h" -#include "test_flags.h" -#include "acquisition_dump_reader.h" #include "gps_l1_ca_pcps_acquisition.h" +#include "in_memory_configuration.h" +#include "test_flags.h" +#include +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class GpsL1CaPcpsAcquisitionTest_msg_rx; -typedef boost::shared_ptr GpsL1CaPcpsAcquisitionTest_msg_rx_sptr; +using GpsL1CaPcpsAcquisitionTest_msg_rx_sptr = boost::shared_ptr; GpsL1CaPcpsAcquisitionTest_msg_rx_sptr GpsL1CaPcpsAcquisitionTest_msg_rx_make(); @@ -88,7 +89,7 @@ void GpsL1CaPcpsAcquisitionTest_msg_rx::msg_handler_events(pmt::pmt_t msg) { try { - int64_t message = pmt::to_long(msg); + int64_t message = pmt::to_long(std::move(msg)); rx_message = message; } catch (boost::bad_any_cast &e) @@ -107,9 +108,7 @@ GpsL1CaPcpsAcquisitionTest_msg_rx::GpsL1CaPcpsAcquisitionTest_msg_rx() : gr::blo } -GpsL1CaPcpsAcquisitionTest_msg_rx::~GpsL1CaPcpsAcquisitionTest_msg_rx() -{ -} +GpsL1CaPcpsAcquisitionTest_msg_rx::~GpsL1CaPcpsAcquisitionTest_msg_rx() = default; // ########################################################### @@ -127,9 +126,7 @@ protected: doppler_step = 100; } - ~GpsL1CaPcpsAcquisitionTest() - { - } + ~GpsL1CaPcpsAcquisitionTest() = default; void init(); void plot_grid(); @@ -137,7 +134,7 @@ protected: gr::top_block_sptr top_block; std::shared_ptr factory; std::shared_ptr config; - Gnss_Synchro gnss_synchro; + Gnss_Synchro gnss_synchro{}; size_t item_size; unsigned int doppler_max; unsigned int doppler_step; @@ -177,9 +174,9 @@ void GpsL1CaPcpsAcquisitionTest::plot_grid() { //load the measured values std::string basename = "./tmp-acq-gps1/acquisition_G_1C"; - unsigned int sat = static_cast(gnss_synchro.PRN); + auto sat = static_cast(gnss_synchro.PRN); - unsigned int samples_per_code = static_cast(round(4000000 / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); // !! + auto samples_per_code = static_cast(round(4000000 / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); // !! acquisition_dump_reader acq_dump(basename, sat, doppler_max, doppler_step, samples_per_code, 1); if (!acq_dump.read_binary_acq()) std::cout << "Error reading files" << std::endl; @@ -202,7 +199,7 @@ void GpsL1CaPcpsAcquisitionTest::plot_grid() { boost::filesystem::path p(gnuplot_executable); boost::filesystem::path dir = p.parent_path(); - std::string gnuplot_path = dir.native(); + const std::string &gnuplot_path = dir.native(); Gnuplot::set_GNUPlotPath(gnuplot_path); Gnuplot g1("lines"); @@ -349,7 +346,7 @@ TEST_F(GpsL1CaPcpsAcquisitionTest, ValidationOfResults) ASSERT_EQ(1, msg_rx->rx_message) << "Acquisition failure. Expected message: 1=ACQ SUCCESS."; double delay_error_samples = std::abs(expected_delay_samples - gnss_synchro.Acq_delay_samples); - float delay_error_chips = static_cast(delay_error_samples * 1023 / 4000); + auto delay_error_chips = static_cast(delay_error_samples * 1023 / 4000); double doppler_error_hz = std::abs(expected_doppler_hz - gnss_synchro.Acq_doppler_hz); EXPECT_LE(doppler_error_hz, 666) << "Doppler error exceeds the expected value: 666 Hz = 2/(3*integration period)"; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test_fpga.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test_fpga.cc index 4fba7a4b9..79515988e 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test_fpga.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test_fpga.cc @@ -29,29 +29,28 @@ * ------------------------------------------------------------------------- */ -#include -#include #include #include -#include -#include #include +#include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include #include "gnss_block_factory.h" #include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "gnss_sdr_valve.h" #include "gnss_synchro.h" #include "gps_l1_ca_pcps_acquisition_fpga.h" - +#include "in_memory_configuration.h" +#include +#include +#include +#include #include #define DMA_ACQ_TRANSFER_SIZE 2046 // DMA transfer size for the acquisition diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_opencl_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_opencl_acquisition_gsoc2013_test.cc index 4ff687b66..2fa64118b 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_opencl_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_opencl_acquisition_gsoc2013_test.cc @@ -31,28 +31,28 @@ */ -#include #include -#include -#include #include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "configuration_interface.h" -#include "gnss_synchro.h" -#include "gps_l1_ca_pcps_opencl_acquisition.h" -#include "signal_generator.h" -#include "signal_generator_c.h" #include "fir_filter.h" #include "gen_signal_source.h" +#include "gnss_block_interface.h" #include "gnss_sdr_valve.h" +#include "gnss_synchro.h" +#include "gps_l1_ca_pcps_opencl_acquisition.h" +#include "in_memory_configuration.h" +#include "signal_generator.h" +#include "signal_generator_c.h" +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class GpsL1CaPcpsOpenClAcquisitionGSoC2013Test_msg_rx; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc index 2ffd1bd15..966b33473 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc @@ -31,28 +31,28 @@ */ +#include +#include +#include +#include #include #include -#include -#include -#include -#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include #include "gnss_block_factory.h" #include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "gnss_sdr_valve.h" #include "gnss_synchro.h" +#include "gps_l1_ca_pcps_quicksync_acquisition.h" +#include "in_memory_configuration.h" #include "signal_generator.h" #include "signal_generator_c.h" -#include "gps_l1_ca_pcps_quicksync_acquisition.h" +#include +#include +#include DEFINE_double(value_threshold, 1, "Value of the threshold for the acquisition"); DEFINE_int32(value_CN0_dB_0, 44, "Value for the CN0_dB_0 in channel 0"); diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc index d069fd703..d24b4b0f7 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc @@ -31,29 +31,29 @@ */ -#include #include -#include -#include #include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "configuration_interface.h" -#include "gnss_synchro.h" -#include "gps_l1_ca_pcps_tong_acquisition.h" -#include "signal_generator.h" -#include "signal_generator_c.h" #include "fir_filter.h" #include "gen_signal_source.h" +#include "gnss_block_interface.h" #include "gnss_sdr_valve.h" +#include "gnss_synchro.h" +#include "gps_l1_ca_pcps_tong_acquisition.h" +#include "in_memory_configuration.h" +#include "signal_generator.h" +#include "signal_generator_c.h" +#include +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class GpsL1CaPcpsTongAcquisitionGSoC2013Test_msg_rx; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l2_m_pcps_acquisition_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l2_m_pcps_acquisition_test.cc index d6cb2813c..f2d5e8e41 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l2_m_pcps_acquisition_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l2_m_pcps_acquisition_test.cc @@ -31,32 +31,32 @@ */ -#include #include #include -#include -#include #include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include -#include +#include "GPS_L2C.h" +#include "acquisition_dump_reader.h" #include "gnss_block_factory.h" #include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "gnss_sdr_valve.h" #include "gnss_synchro.h" #include "gnuplot_i.h" -#include "test_flags.h" -#include "acquisition_dump_reader.h" #include "gps_l2_m_pcps_acquisition.h" -#include "GPS_L2C.h" +#include "in_memory_configuration.h" +#include "test_flags.h" +#include +#include +#include +#include +#include // ######## GNURADIO BLOCK MESSAGE RECEVER ######### diff --git a/src/tests/unit-tests/signal-processing-blocks/adapter/adapter_test.cc b/src/tests/unit-tests/signal-processing-blocks/adapter/adapter_test.cc index 2aae6e9c6..89f2cd338 100644 --- a/src/tests/unit-tests/signal-processing-blocks/adapter/adapter_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/adapter/adapter_test.cc @@ -29,22 +29,22 @@ * ------------------------------------------------------------------------- */ +#include "byte_to_short.h" +#include "ibyte_to_cbyte.h" +#include "ibyte_to_complex.h" +#include "ibyte_to_cshort.h" +#include "in_memory_configuration.h" +#include "ishort_to_complex.h" +#include "ishort_to_cshort.h" +#include +#include +#include #include #include #include #include #include #include -#include -#include -#include -#include "byte_to_short.h" -#include "ibyte_to_cbyte.h" -#include "ibyte_to_complex.h" -#include "ibyte_to_cshort.h" -#include "ishort_to_complex.h" -#include "ishort_to_cshort.h" -#include "in_memory_configuration.h" class DataTypeAdapter : public ::testing::Test @@ -61,7 +61,7 @@ public: std::string file_name_input; std::string file_name_output; std::vector input_data_bytes; - std::vector input_data_shorts; + std::vector input_data_shorts; }; @@ -70,19 +70,17 @@ DataTypeAdapter::DataTypeAdapter() file_name_input = "adapter_test_input.dat"; file_name_output = "adapter_test_output.dat"; int8_t input_bytes[] = {2, 23, -1, 127, -127, 0}; - short input_shorts[] = {2, 23, -1, 127, -127, 0, 255, 255}; + int16_t input_shorts[] = {2, 23, -1, 127, -127, 0, 255, 255}; const std::vector input_data_bytes_(input_bytes, input_bytes + sizeof(input_bytes) / sizeof(int8_t)); input_data_bytes = input_data_bytes_; - const std::vector input_data_shorts_(input_shorts, input_shorts + sizeof(input_shorts) / sizeof(short)); + const std::vector input_data_shorts_(input_shorts, input_shorts + sizeof(input_shorts) / sizeof(int16_t)); input_data_shorts = input_data_shorts_; } -DataTypeAdapter::~DataTypeAdapter() -{ -} +DataTypeAdapter::~DataTypeAdapter() = default; int DataTypeAdapter::run_ishort_to_cshort_block() @@ -94,15 +92,14 @@ int DataTypeAdapter::run_ishort_to_cshort_block() EXPECT_EQ(expected_implementation, ishort_to_cshort->implementation()); std::ofstream ofs(file_name_input.c_str(), std::ofstream::binary); - for (std::vector::const_iterator i = input_data_shorts.cbegin(); i != input_data_shorts.cend(); ++i) + for (int16_t aux : input_data_shorts) { - short aux = *i; - ofs.write(reinterpret_cast(&aux), sizeof(short)); + ofs.write(reinterpret_cast(&aux), sizeof(int16_t)); } ofs.close(); auto top_block = gr::make_top_block("Ishort_To_Cshort test"); - auto file_source = gr::blocks::file_source::make(sizeof(short), file_name_input.c_str()); + auto file_source = gr::blocks::file_source::make(sizeof(int16_t), file_name_input.c_str()); auto sink = gr::blocks::file_sink::make(sizeof(lv_16sc_t), file_name_output.c_str(), false); EXPECT_NO_THROW({ @@ -123,15 +120,14 @@ int DataTypeAdapter::run_ishort_to_complex_block() EXPECT_EQ(expected_implementation, ishort_to_complex->implementation()); std::ofstream ofs(file_name_input.c_str(), std::ofstream::binary); - for (std::vector::const_iterator i = input_data_shorts.cbegin(); i != input_data_shorts.cend(); ++i) + for (int16_t aux : input_data_shorts) { - short aux = *i; - ofs.write(reinterpret_cast(&aux), sizeof(short)); + ofs.write(reinterpret_cast(&aux), sizeof(int16_t)); } ofs.close(); auto top_block = gr::make_top_block("Ishort_To_Complex test"); - auto file_source = gr::blocks::file_source::make(sizeof(short), file_name_input.c_str()); + auto file_source = gr::blocks::file_source::make(sizeof(int16_t), file_name_input.c_str()); auto sink = gr::blocks::file_sink::make(sizeof(gr_complex), file_name_output.c_str(), false); EXPECT_NO_THROW({ @@ -152,9 +148,9 @@ int DataTypeAdapter::run_ibyte_to_cshort_block() EXPECT_EQ(expected_implementation, ibyte_to_cshort->implementation()); std::ofstream ofs(file_name_input.c_str()); - for (std::vector::const_iterator i = input_data_bytes.cbegin(); i != input_data_bytes.cend(); ++i) + for (signed char input_data_byte : input_data_bytes) { - ofs << *i; + ofs << input_data_byte; } ofs.close(); @@ -180,9 +176,9 @@ int DataTypeAdapter::run_ibyte_to_complex_block() EXPECT_EQ(expected_implementation, ibyte_to_complex->implementation()); std::ofstream ofs(file_name_input.c_str()); - for (std::vector::const_iterator i = input_data_bytes.cbegin(); i != input_data_bytes.cend(); ++i) + for (signed char input_data_byte : input_data_bytes) { - ofs << *i; + ofs << input_data_byte; } ofs.close(); @@ -208,15 +204,15 @@ int DataTypeAdapter::run_ibyte_to_cbyte_block() EXPECT_EQ(expected_implementation, ibyte_to_cbyte->implementation()); std::ofstream ofs(file_name_input.c_str()); - for (std::vector::const_iterator i = input_data_bytes.cbegin(); i != input_data_bytes.cend(); ++i) + for (signed char input_data_byte : input_data_bytes) { - ofs << *i; + ofs << input_data_byte; } ofs.close(); auto top_block = gr::make_top_block("Ibyte_To_Cbyte test"); auto file_source = gr::blocks::file_source::make(sizeof(int8_t), file_name_input.c_str()); - auto sink = gr::blocks::file_sink::make(sizeof(short), file_name_output.c_str(), false); + auto sink = gr::blocks::file_sink::make(sizeof(int16_t), file_name_output.c_str(), false); EXPECT_NO_THROW({ top_block->connect(file_source, 0, ibyte_to_cbyte->get_left_block(), 0); @@ -236,9 +232,9 @@ int DataTypeAdapter::run_byte_to_short_block() EXPECT_EQ(expected_implementation, byte_to_short->implementation()); std::ofstream ofs(file_name_input.c_str()); - for (std::vector::const_iterator i = input_data_bytes.cbegin(); i != input_data_bytes.cend(); ++i) + for (signed char input_data_byte : input_data_bytes) { - ofs << *i; + ofs << input_data_byte; } ofs.close(); @@ -368,9 +364,9 @@ TEST_F(DataTypeAdapter, IshortToComplexValidationOfResults) { while (ifs.read(reinterpret_cast(&iSample), sizeof(gr_complex))) { - EXPECT_EQ(input_data_shorts.at(i), static_cast(iSample.real())); + EXPECT_EQ(input_data_shorts.at(i), static_cast(iSample.real())); i++; - EXPECT_EQ(input_data_shorts.at(i), static_cast(iSample.imag())); + EXPECT_EQ(input_data_shorts.at(i), static_cast(iSample.imag())); i++; } } @@ -394,9 +390,9 @@ TEST_F(DataTypeAdapter, IshortToCshortValidationOfResults) { while (ifs.read(reinterpret_cast(&iSample), sizeof(lv_16sc_t))) { - EXPECT_EQ(input_data_shorts.at(i), static_cast(iSample.real())); + EXPECT_EQ(input_data_shorts.at(i), static_cast(iSample.real())); i++; - EXPECT_EQ(input_data_shorts.at(i), static_cast(iSample.imag())); + EXPECT_EQ(input_data_shorts.at(i), static_cast(iSample.imag())); i++; } } diff --git a/src/tests/unit-tests/signal-processing-blocks/adapter/pass_through_test.cc b/src/tests/unit-tests/signal-processing-blocks/adapter/pass_through_test.cc index 224c073e1..e15c5d253 100644 --- a/src/tests/unit-tests/signal-processing-blocks/adapter/pass_through_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/adapter/pass_through_test.cc @@ -31,9 +31,9 @@ */ +#include "in_memory_configuration.h" #include "pass_through.h" #include -#include "in_memory_configuration.h" TEST(PassThroughTest, Instantiate) diff --git a/src/tests/unit-tests/signal-processing-blocks/filter/fir_filter_test.cc b/src/tests/unit-tests/signal-processing-blocks/filter/fir_filter_test.cc index 142802256..9c411c862 100644 --- a/src/tests/unit-tests/signal-processing-blocks/filter/fir_filter_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/filter/fir_filter_test.cc @@ -28,28 +28,28 @@ * ------------------------------------------------------------------------- */ +#include +#include +#include #include #include #include -#include -#include -#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include +#include "file_signal_source.h" +#include "fir_filter.h" #include "gnss_block_factory.h" #include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "gnss_sdr_valve.h" +#include "in_memory_configuration.h" #include "interleaved_byte_to_complex_byte.h" #include "interleaved_short_to_complex_short.h" -#include "fir_filter.h" -#include "file_signal_source.h" +#include +#include +#include DEFINE_int32(filter_test_nsamples, 1000000, "Number of samples to filter in the tests (max: 2147483647)"); @@ -63,9 +63,7 @@ protected: item_size = sizeof(gr_complex); config = std::make_shared(); } - ~FirFilterTest() - { - } + ~FirFilterTest() = default; void init(); void configure_cbyte_cbyte(); diff --git a/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc b/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc index 9028403bf..f23a84558 100644 --- a/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc @@ -28,26 +28,26 @@ * ------------------------------------------------------------------------- */ +#include +#include +#include #include #include #include -#include -#include -#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include +#include "file_signal_source.h" #include "gnss_block_factory.h" #include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "gnss_sdr_valve.h" +#include "in_memory_configuration.h" #include "notch_filter_lite.h" -#include "file_signal_source.h" +#include +#include +#include DEFINE_int32(notch_filter_lite_test_nsamples, 1000000, "Number of samples to filter in the tests (max: 2147483647)"); @@ -62,9 +62,7 @@ protected: config = std::make_shared(); nsamples = FLAGS_notch_filter_lite_test_nsamples; } - ~NotchFilterLiteTest() - { - } + ~NotchFilterLiteTest() = default; void init(); void configure_gr_complex_gr_complex(); diff --git a/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_test.cc b/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_test.cc index 2010b646c..b3c9fbece 100644 --- a/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_test.cc @@ -28,26 +28,26 @@ * ------------------------------------------------------------------------- */ +#include +#include +#include #include #include #include -#include -#include -#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include +#include "file_signal_source.h" #include "gnss_block_factory.h" #include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "gnss_sdr_valve.h" +#include "in_memory_configuration.h" #include "notch_filter.h" -#include "file_signal_source.h" +#include +#include +#include DEFINE_int32(notch_filter_test_nsamples, 1000000, "Number of samples to filter in the tests (max: 2147483647)"); @@ -62,9 +62,7 @@ protected: config = std::make_shared(); nsamples = FLAGS_notch_filter_test_nsamples; } - ~NotchFilterTest() - { - } + ~NotchFilterTest() = default; void init(); void configure_gr_complex_gr_complex(); diff --git a/src/tests/unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc b/src/tests/unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc index 4cff0f421..729ff78dd 100644 --- a/src/tests/unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc @@ -28,26 +28,26 @@ * ------------------------------------------------------------------------- */ +#include +#include +#include #include #include #include -#include -#include -#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include +#include "file_signal_source.h" #include "gnss_block_factory.h" #include "gnss_block_interface.h" -#include "in_memory_configuration.h" #include "gnss_sdr_valve.h" +#include "in_memory_configuration.h" #include "pulse_blanking_filter.h" -#include "file_signal_source.h" +#include +#include +#include DEFINE_int32(pb_filter_test_nsamples, 1000000, "Number of samples to filter in the tests (max: 2147483647)"); @@ -62,9 +62,7 @@ protected: config = std::make_shared(); nsamples = FLAGS_pb_filter_test_nsamples; } - ~PulseBlankingFilterTest() - { - } + ~PulseBlankingFilterTest() = default; void init(); void configure_gr_complex_gr_complex(); diff --git a/src/tests/unit-tests/signal-processing-blocks/libs/acquisition_dump_reader.cc b/src/tests/unit-tests/signal-processing-blocks/libs/acquisition_dump_reader.cc index 4cb401ab2..f401b1bc9 100644 --- a/src/tests/unit-tests/signal-processing-blocks/libs/acquisition_dump_reader.cc +++ b/src/tests/unit-tests/signal-processing-blocks/libs/acquisition_dump_reader.cc @@ -38,13 +38,13 @@ bool acquisition_dump_reader::read_binary_acq() { mat_t* matfile = Mat_Open(d_dump_filename.c_str(), MAT_ACC_RDONLY); - if (matfile == NULL) + if (matfile == nullptr) { std::cout << "ยกยกยกUnreachable Acquisition dump file!!!" << std::endl; return false; } matvar_t* var_ = Mat_VarRead(matfile, "acq_grid"); - if (var_ == NULL) + if (var_ == nullptr) { std::cout << "ยกยกยกUnreachable grid variable into Acquisition dump file!!!" << std::endl; Mat_Close(matfile); @@ -119,7 +119,7 @@ bool acquisition_dump_reader::read_binary_acq() std::vector >::iterator it1; std::vector::iterator it2; - float* aux = static_cast(var_->data); + auto* aux = static_cast(var_->data); int k = 0; float normalization_factor = std::pow(d_samples_per_code, 4) * input_power; for (it1 = mag.begin(); it1 != mag.end(); it1++) @@ -147,7 +147,7 @@ acquisition_dump_reader::acquisition_dump_reader(const std::string& basename, unsigned int samples_per_code_ = 0; mat_t* matfile = Mat_Open(d_dump_filename.c_str(), MAT_ACC_RDONLY); - if (matfile != NULL) + if (matfile != nullptr) { matvar_t* var_ = Mat_VarRead(matfile, "doppler_max"); doppler_max_ = *static_cast(var_->data); @@ -234,6 +234,4 @@ acquisition_dump_reader::acquisition_dump_reader(const std::string& basename, } -acquisition_dump_reader::~acquisition_dump_reader() -{ -} +acquisition_dump_reader::~acquisition_dump_reader() = default; diff --git a/src/tests/unit-tests/signal-processing-blocks/libs/acquisition_msg_rx.cc b/src/tests/unit-tests/signal-processing-blocks/libs/acquisition_msg_rx.cc index 5f7d18b77..4295a6564 100644 --- a/src/tests/unit-tests/signal-processing-blocks/libs/acquisition_msg_rx.cc +++ b/src/tests/unit-tests/signal-processing-blocks/libs/acquisition_msg_rx.cc @@ -31,10 +31,11 @@ */ #include "acquisition_msg_rx.h" -#include #include #include #include +#include +#include Acquisition_msg_rx_sptr Acquisition_msg_rx_make() @@ -47,7 +48,7 @@ void Acquisition_msg_rx::msg_handler_events(pmt::pmt_t msg) { try { - int64_t message = pmt::to_long(msg); + int64_t message = pmt::to_long(std::move(msg)); rx_message = message; top_block->stop(); // stop the flowgraph } @@ -67,4 +68,4 @@ Acquisition_msg_rx::Acquisition_msg_rx() : gr::block("Acquisition_msg_rx", gr::i } -Acquisition_msg_rx::~Acquisition_msg_rx() {} +Acquisition_msg_rx::~Acquisition_msg_rx() = default; diff --git a/src/tests/unit-tests/signal-processing-blocks/libs/acquisition_msg_rx.h b/src/tests/unit-tests/signal-processing-blocks/libs/acquisition_msg_rx.h index 2095bff72..90a61a482 100644 --- a/src/tests/unit-tests/signal-processing-blocks/libs/acquisition_msg_rx.h +++ b/src/tests/unit-tests/signal-processing-blocks/libs/acquisition_msg_rx.h @@ -33,8 +33,8 @@ #ifndef GNSS_SDR_ACQUISITION_MSG_RX_H #define GNSS_SDR_ACQUISITION_MSG_RX_H -#include #include +#include #include // ######## GNURADIO ACQUISITION BLOCK MESSAGE RECEVER ######### diff --git a/src/tests/unit-tests/signal-processing-blocks/libs/observables_dump_reader.cc b/src/tests/unit-tests/signal-processing-blocks/libs/observables_dump_reader.cc index 08f891810..95c5ed22d 100644 --- a/src/tests/unit-tests/signal-processing-blocks/libs/observables_dump_reader.cc +++ b/src/tests/unit-tests/signal-processing-blocks/libs/observables_dump_reader.cc @@ -30,6 +30,7 @@ #include "observables_dump_reader.h" #include +#include bool observables_dump_reader::read_binary_obs() { @@ -62,10 +63,7 @@ bool observables_dump_reader::restart() d_dump_file.seekg(0, std::ios::beg); return true; } - else - { - return false; - } + return false; } @@ -81,10 +79,7 @@ int64_t observables_dump_reader::num_epochs() int64_t nepoch = size / epoch_size_bytes; return nepoch; } - else - { - return 0; - } + return 0; } @@ -94,7 +89,7 @@ bool observables_dump_reader::open_obs_file(std::string out_file) { try { - d_dump_filename = out_file; + d_dump_filename = std::move(out_file); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::in | std::ios::binary); return true; diff --git a/src/tests/unit-tests/signal-processing-blocks/libs/tlm_dump_reader.cc b/src/tests/unit-tests/signal-processing-blocks/libs/tlm_dump_reader.cc index 64508e56e..c8c95afd4 100644 --- a/src/tests/unit-tests/signal-processing-blocks/libs/tlm_dump_reader.cc +++ b/src/tests/unit-tests/signal-processing-blocks/libs/tlm_dump_reader.cc @@ -30,6 +30,7 @@ #include "tlm_dump_reader.h" #include +#include bool tlm_dump_reader::read_binary_obs() { @@ -55,10 +56,7 @@ bool tlm_dump_reader::restart() d_dump_file.seekg(0, std::ios::beg); return true; } - else - { - return false; - } + return false; } @@ -74,10 +72,7 @@ int64_t tlm_dump_reader::num_epochs() int64_t nepoch = size / epoch_size_bytes; return nepoch; } - else - { - return 0; - } + return 0; } @@ -87,7 +82,7 @@ bool tlm_dump_reader::open_obs_file(std::string out_file) { try { - d_dump_filename = out_file; + d_dump_filename = std::move(out_file); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::in | std::ios::binary); std::cout << "TLM dump enabled, Log file: " << d_dump_filename.c_str() << std::endl; diff --git a/src/tests/unit-tests/signal-processing-blocks/libs/tracking_dump_reader.cc b/src/tests/unit-tests/signal-processing-blocks/libs/tracking_dump_reader.cc index 5ed6a0fec..233bd8acb 100644 --- a/src/tests/unit-tests/signal-processing-blocks/libs/tracking_dump_reader.cc +++ b/src/tests/unit-tests/signal-processing-blocks/libs/tracking_dump_reader.cc @@ -30,6 +30,7 @@ #include "tracking_dump_reader.h" #include +#include bool tracking_dump_reader::read_binary_obs() { @@ -74,10 +75,7 @@ bool tracking_dump_reader::restart() d_dump_file.seekg(0, std::ios::beg); return true; } - else - { - return false; - } + return false; } @@ -95,10 +93,9 @@ int64_t tracking_dump_reader::num_epochs() int64_t nepoch = size / epoch_size_bytes; return nepoch; } - else - { - return 0; - } + + + return 0; } @@ -108,7 +105,7 @@ bool tracking_dump_reader::open_obs_file(std::string out_file) { try { - d_dump_filename = out_file; + d_dump_filename = std::move(out_file); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::in | std::ios::binary); return true; diff --git a/src/tests/unit-tests/signal-processing-blocks/libs/tracking_true_obs_reader.cc b/src/tests/unit-tests/signal-processing-blocks/libs/tracking_true_obs_reader.cc index 2c03737cd..efa913404 100644 --- a/src/tests/unit-tests/signal-processing-blocks/libs/tracking_true_obs_reader.cc +++ b/src/tests/unit-tests/signal-processing-blocks/libs/tracking_true_obs_reader.cc @@ -30,6 +30,7 @@ #include "tracking_true_obs_reader.h" #include +#include bool tracking_true_obs_reader::read_binary_obs() { @@ -57,10 +58,7 @@ bool tracking_true_obs_reader::restart() d_dump_file.seekg(0, std::ios::beg); return true; } - else - { - return false; - } + return false; } @@ -76,10 +74,7 @@ int64_t tracking_true_obs_reader::num_epochs() int64_t nepoch = size / epoch_size_bytes; return nepoch; } - else - { - return 0; - } + return 0; } @@ -90,14 +85,14 @@ bool tracking_true_obs_reader::open_obs_file(std::string out_file) try { d_dump_file.clear(); - d_dump_filename = out_file; + d_dump_filename = std::move(out_file); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::in | std::ios::binary); return true; } catch (const std::ifstream::failure &e) { - std::cout << "Problem opening Tracking dump Log file: " << d_dump_filename.c_str() << " Error: " << e.what() << std::endl; + std::cout << "Problem opening Tracking dump Log file: " << d_dump_filename.c_str() << std::endl; return false; } } diff --git a/src/tests/unit-tests/signal-processing-blocks/libs/true_observables_reader.cc b/src/tests/unit-tests/signal-processing-blocks/libs/true_observables_reader.cc index f662f76dc..14cd52562 100644 --- a/src/tests/unit-tests/signal-processing-blocks/libs/true_observables_reader.cc +++ b/src/tests/unit-tests/signal-processing-blocks/libs/true_observables_reader.cc @@ -30,6 +30,7 @@ #include "true_observables_reader.h" #include +#include bool true_observables_reader::read_binary_obs() { @@ -62,10 +63,7 @@ bool true_observables_reader::restart() d_dump_file.seekg(0, std::ios::beg); return true; } - else - { - return false; - } + return false; } @@ -81,10 +79,7 @@ int64_t true_observables_reader::num_epochs() int64_t nepoch = size / epoch_size_bytes; return nepoch; } - else - { - return 0; - } + return 0; } @@ -94,7 +89,7 @@ bool true_observables_reader::open_obs_file(std::string out_file) { try { - d_dump_filename = out_file; + d_dump_filename = std::move(out_file); d_dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); d_dump_file.open(d_dump_filename.c_str(), std::ios::in | std::ios::binary); std::cout << "True observables Log file opened: " << d_dump_filename.c_str() << std::endl; diff --git a/src/tests/unit-tests/signal-processing-blocks/observables/hybrid_observables_test.cc b/src/tests/unit-tests/signal-processing-blocks/observables/hybrid_observables_test.cc index 9422e144a..feccb8105 100644 --- a/src/tests/unit-tests/signal-processing-blocks/observables/hybrid_observables_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/observables/hybrid_observables_test.cc @@ -30,51 +30,61 @@ * ------------------------------------------------------------------------- */ -#include -#include -#include +#include "GPS_L1_CA.h" +#include "GPS_L2C.h" +#include "GPS_L5.h" +#include "Galileo_E1.h" +#include "Galileo_E5a.h" +#include "acquisition_msg_rx.h" +#include "galileo_e1_pcps_ambiguous_acquisition.h" +#include "galileo_e5a_noncoherent_iq_acquisition_caf.h" +#include "galileo_e5a_pcps_acquisition.h" +#include "glonass_l1_ca_pcps_acquisition.h" +#include "glonass_l2_ca_pcps_acquisition.h" +#include "gnss_block_factory.h" +#include "gnss_block_interface.h" +#include "gnss_satellite.h" +#include "gnss_sdr_sample_counter.h" +#include "gnss_synchro.h" +#include "gnuplot_i.h" +#include "gps_l1_ca_dll_pll_tracking.h" +#include "gps_l1_ca_pcps_acquisition.h" +#include "gps_l2_m_pcps_acquisition.h" +#include "gps_l5i_pcps_acquisition.h" +#include "hybrid_observables.h" +#include "in_memory_configuration.h" +#include "observable_tests_flags.h" +#include "observables_dump_reader.h" +#include "signal_generator_flags.h" +#include "telemetry_decoder_interface.h" +#include "test_flags.h" +#include "tlm_dump_reader.h" +#include "tracking_dump_reader.h" +#include "tracking_interface.h" +#include "tracking_tests_flags.h" +#include "tracking_true_obs_reader.h" +#include "true_observables_reader.h" #include -#include #include #include #include -#include -#include +#include +#include #include #include #include #include +#include +#include #include -#include "GPS_L1_CA.h" -#include "gnss_satellite.h" -#include "gnss_block_factory.h" -#include "gnss_block_interface.h" -#include "acquisition_msg_rx.h" -#include "gps_l1_ca_pcps_acquisition.h" -#include "galileo_e1_pcps_ambiguous_acquisition.h" -#include "galileo_e5a_pcps_acquisition.h" -#include "galileo_e5a_noncoherent_iq_acquisition_caf.h" -#include "glonass_l1_ca_pcps_acquisition.h" -#include "glonass_l2_ca_pcps_acquisition.h" -#include "gps_l2_m_pcps_acquisition.h" -#include "gps_l5i_pcps_acquisition.h" -#include "tracking_interface.h" -#include "telemetry_decoder_interface.h" -#include "in_memory_configuration.h" -#include "gnss_synchro.h" -#include "tracking_true_obs_reader.h" -#include "true_observables_reader.h" -#include "tracking_dump_reader.h" -#include "observables_dump_reader.h" -#include "tlm_dump_reader.h" -#include "gps_l1_ca_dll_pll_tracking.h" -#include "hybrid_observables.h" -#include "signal_generator_flags.h" -#include "gnss_sdr_sample_counter.h" -#include "test_flags.h" -#include "tracking_tests_flags.h" -#include "observable_tests_flags.h" -#include "gnuplot_i.h" +#include +#include +#include +#ifdef GR_GREATER_38 +#include +#else +#include +#endif // ######## GNURADIO BLOCK MESSAGE RECEVER FOR TRACKING MESSAGES ######### @@ -186,6 +196,19 @@ HybridObservablesTest_tlm_msg_rx::~HybridObservablesTest_tlm_msg_rx() class HybridObservablesTest : public ::testing::Test { public: + enum StringValue + { + evGPS_1C, + evGPS_2S, + evGPS_L5, + evSBAS_1C, + evGAL_1B, + evGAL_5X, + evGLO_1G, + evGLO_2G + }; + std::map mapStringValues_; + std::string generator_binary; std::string p1; std::string p2; @@ -247,6 +270,13 @@ public: factory = std::make_shared(); config = std::make_shared(); item_size = sizeof(gr_complex); + mapStringValues_["1C"] = evGPS_1C; + mapStringValues_["2S"] = evGPS_2S; + mapStringValues_["L5"] = evGPS_L5; + mapStringValues_["1B"] = evGAL_1B; + mapStringValues_["5X"] = evGAL_5X; + mapStringValues_["1G"] = evGLO_1G; + mapStringValues_["2G"] = evGLO_2G; } ~HybridObservablesTest() @@ -328,6 +358,11 @@ bool HybridObservablesTest::acquire_signal() tmp_gnss_synchro.Channel_ID = 0; config = std::make_shared(); config->set_property("GNSS-SDR.internal_fs_sps", std::to_string(baseband_sampling_freq)); + // Enable automatic resampler for the acquisition, if required + if (FLAGS_use_acquisition_resampler == true) + { + config->set_property("GNSS-SDR.use_acquisition_resampler", "true"); + } config->set_property("Acquisition.blocking_on_standby", "true"); config->set_property("Acquisition.blocking", "true"); config->set_property("Acquisition.dump", "false"); @@ -337,11 +372,12 @@ bool HybridObservablesTest::acquire_signal() std::shared_ptr acquisition; std::string System_and_Signal; + std::string signal; //create the correspondign acquisition block according to the desired tracking signal if (implementation.compare("GPS_L1_CA_DLL_PLL_Tracking") == 0) { tmp_gnss_synchro.System = 'G'; - std::string signal = "1C"; + signal = "1C"; const char* str = signal.c_str(); // get a C style null terminated string std::memcpy(static_cast(tmp_gnss_synchro.Signal), str, 3); // copy string into synchro char array: 2 char + null tmp_gnss_synchro.PRN = SV_ID; @@ -353,7 +389,7 @@ bool HybridObservablesTest::acquire_signal() else if (implementation.compare("Galileo_E1_DLL_PLL_VEML_Tracking") == 0) { tmp_gnss_synchro.System = 'E'; - std::string signal = "1B"; + signal = "1B"; const char* str = signal.c_str(); // get a C style null terminated string std::memcpy(static_cast(tmp_gnss_synchro.Signal), str, 3); // copy string into synchro char array: 2 char + null tmp_gnss_synchro.PRN = SV_ID; @@ -364,7 +400,7 @@ bool HybridObservablesTest::acquire_signal() else if (implementation.compare("GPS_L2_M_DLL_PLL_Tracking") == 0) { tmp_gnss_synchro.System = 'G'; - std::string signal = "2S"; + signal = "2S"; const char* str = signal.c_str(); // get a C style null terminated string std::memcpy(static_cast(tmp_gnss_synchro.Signal), str, 3); // copy string into synchro char array: 2 char + null tmp_gnss_synchro.PRN = SV_ID; @@ -375,7 +411,7 @@ bool HybridObservablesTest::acquire_signal() else if (implementation.compare("Galileo_E5a_DLL_PLL_Tracking_b") == 0) { tmp_gnss_synchro.System = 'E'; - std::string signal = "5X"; + signal = "5X"; const char* str = signal.c_str(); // get a C style null terminated string std::memcpy(static_cast(tmp_gnss_synchro.Signal), str, 3); // copy string into synchro char array: 2 char + null tmp_gnss_synchro.PRN = SV_ID; @@ -391,7 +427,7 @@ bool HybridObservablesTest::acquire_signal() else if (implementation.compare("Galileo_E5a_DLL_PLL_Tracking") == 0) { tmp_gnss_synchro.System = 'E'; - std::string signal = "5X"; + signal = "5X"; const char* str = signal.c_str(); // get a C style null terminated string std::memcpy(static_cast(tmp_gnss_synchro.Signal), str, 3); // copy string into synchro char array: 2 char + null tmp_gnss_synchro.PRN = SV_ID; @@ -402,7 +438,7 @@ bool HybridObservablesTest::acquire_signal() else if (implementation.compare("GPS_L5_DLL_PLL_Tracking") == 0) { tmp_gnss_synchro.System = 'G'; - std::string signal = "L5"; + signal = "L5"; const char* str = signal.c_str(); // get a C style null terminated string std::memcpy(static_cast(tmp_gnss_synchro.Signal), str, 3); // copy string into synchro char array: 2 char + null tmp_gnss_synchro.PRN = SV_ID; @@ -433,10 +469,88 @@ bool HybridObservablesTest::acquire_signal() file_source->seek(2 * FLAGS_skip_samples, 0); //skip head. ibyte, two bytes per complex sample gr::blocks::interleaved_char_to_complex::sptr gr_interleaved_char_to_complex = gr::blocks::interleaved_char_to_complex::make(); //gr::blocks::head::sptr head_samples = gr::blocks::head::make(sizeof(gr_complex), baseband_sampling_freq * FLAGS_duration); + //top_block->connect(head_samples, 0, acquisition->get_left_block(), 0); top_block->connect(file_source, 0, gr_interleaved_char_to_complex, 0); - top_block->connect(gr_interleaved_char_to_complex, 0, acquisition->get_left_block(), 0); - //top_block->connect(head_samples, 0, acquisition->get_left_block(), 0); + + // Enable automatic resampler for the acquisition, if required + if (FLAGS_use_acquisition_resampler == true) + { + //create acquisition resamplers if required + double resampler_ratio = 1.0; + + double opt_fs = baseband_sampling_freq; + //find the signal associated to this channel + switch (mapStringValues_[signal]) + { + case evGPS_1C: + opt_fs = GPS_L1_CA_OPT_ACQ_FS_HZ; + break; + case evGPS_2S: + opt_fs = GPS_L2C_OPT_ACQ_FS_HZ; + break; + case evGPS_L5: + opt_fs = GPS_L5_OPT_ACQ_FS_HZ; + break; + case evSBAS_1C: + opt_fs = GPS_L1_CA_OPT_ACQ_FS_HZ; + break; + case evGAL_1B: + opt_fs = Galileo_E1_OPT_ACQ_FS_HZ; + break; + case evGAL_5X: + opt_fs = Galileo_E5a_OPT_ACQ_FS_HZ; + break; + case evGLO_1G: + opt_fs = baseband_sampling_freq; + break; + case evGLO_2G: + opt_fs = baseband_sampling_freq; + break; + } + if (opt_fs < baseband_sampling_freq) + { + resampler_ratio = baseband_sampling_freq / opt_fs; + int decimation = floor(resampler_ratio); + while (baseband_sampling_freq % decimation > 0) + { + decimation--; + }; + double acq_fs = baseband_sampling_freq / decimation; + + if (decimation > 1) + { + //create a FIR low pass filter + std::vector taps; + taps = gr::filter::firdes::low_pass(1.0, + baseband_sampling_freq, + acq_fs / 2.1, + acq_fs / 10, + gr::filter::firdes::win_type::WIN_HAMMING); + std::cout << "Enabled decimation low pass filter with " << taps.size() << " taps and decimation factor of " << decimation << std::endl; + acquisition->set_resampler_latency((taps.size() - 1) / 2); + gr::basic_block_sptr fir_filter_ccf_ = gr::filter::fir_filter_ccf::make(decimation, taps); + top_block->connect(gr_interleaved_char_to_complex, 0, fir_filter_ccf_, 0); + top_block->connect(fir_filter_ccf_, 0, acquisition->get_left_block(), 0); + } + else + { + std::cout << "Disabled acquisition resampler because the input sampling frequency is too low\n"; + top_block->connect(gr_interleaved_char_to_complex, 0, acquisition->get_left_block(), 0); + } + } + else + { + std::cout << "Disabled acquisition resampler because the input sampling frequency is too low\n"; + top_block->connect(gr_interleaved_char_to_complex, 0, acquisition->get_left_block(), 0); + } + } + else + { + top_block->connect(gr_interleaved_char_to_complex, 0, acquisition->get_left_block(), 0); + //top_block->connect(head_samples, 0, acquisition->get_left_block(), 0); + } + boost::shared_ptr msg_rx; try @@ -1763,8 +1877,11 @@ TEST_F(HybridObservablesTest, ValidationOfResults) } else { - ASSERT_EQ(ReadRinexObs(&true_obs_vec, gnss_synchro_master), true) - << "Failure reading RINEX file"; + if (!FLAGS_duplicated_satellites_test) + { + ASSERT_EQ(ReadRinexObs(&true_obs_vec, gnss_synchro_master), true) + << "Failure reading RINEX file"; + } } //read measured values observables_dump_reader estimated_observables(tracking_ch_vec.size()); @@ -1825,10 +1942,13 @@ TEST_F(HybridObservablesTest, ValidationOfResults) measured_obs_vec.at(n).shed_rows(0, index(0)); } - index = arma::find(measured_obs_vec.at(n).col(0) >= true_obs_vec.at(n)(0, 0), 1, "first"); - if ((index.size() > 0) and (index(0) > 0)) + if (!FLAGS_duplicated_satellites_test) { - measured_obs_vec.at(n).shed_rows(0, index(0)); + index = arma::find(measured_obs_vec.at(n).col(0) >= true_obs_vec.at(n)(0, 0), 1, "first"); + if ((index.size() > 0) and (index(0) > 0)) + { + measured_obs_vec.at(n).shed_rows(0, index(0)); + } } } diff --git a/src/tests/unit-tests/signal-processing-blocks/pvt/nmea_printer_test.cc b/src/tests/unit-tests/signal-processing-blocks/pvt/nmea_printer_test.cc index ccf97ecaa..074deea05 100644 --- a/src/tests/unit-tests/signal-processing-blocks/pvt/nmea_printer_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/pvt/nmea_printer_test.cc @@ -29,10 +29,10 @@ */ +#include "nmea_printer.h" #include #include #include -#include "nmea_printer.h" class NmeaPrinterTest : public ::testing::Test diff --git a/src/tests/unit-tests/signal-processing-blocks/pvt/rinex_printer_test.cc b/src/tests/unit-tests/signal-processing-blocks/pvt/rinex_printer_test.cc index 007ace647..c4a559448 100644 --- a/src/tests/unit-tests/signal-processing-blocks/pvt/rinex_printer_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/pvt/rinex_printer_test.cc @@ -28,8 +28,8 @@ * ------------------------------------------------------------------------- */ -#include #include "rinex_printer.h" +#include TEST(RinexPrinterTest, GalileoObsHeader) diff --git a/src/tests/unit-tests/signal-processing-blocks/pvt/rtcm_printer_test.cc b/src/tests/unit-tests/signal-processing-blocks/pvt/rtcm_printer_test.cc index 4f648e0b7..a1e52190d 100644 --- a/src/tests/unit-tests/signal-processing-blocks/pvt/rtcm_printer_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/pvt/rtcm_printer_test.cc @@ -29,8 +29,8 @@ */ -#include #include "rtcm_printer.h" +#include TEST(RtcmPrinterTest, Instantiate) diff --git a/src/tests/unit-tests/signal-processing-blocks/pvt/rtcm_test.cc b/src/tests/unit-tests/signal-processing-blocks/pvt/rtcm_test.cc index 4d8e54af6..cd8771880 100644 --- a/src/tests/unit-tests/signal-processing-blocks/pvt/rtcm_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/pvt/rtcm_test.cc @@ -29,10 +29,10 @@ * ------------------------------------------------------------------------- */ +#include "Galileo_E1.h" +#include "rtcm.h" #include #include -#include "rtcm.h" -#include "Galileo_E1.h" TEST(RtcmTest, HexToBin) { diff --git a/src/tests/unit-tests/signal-processing-blocks/pvt/rtklib_solver_test.cc b/src/tests/unit-tests/signal-processing-blocks/pvt/rtklib_solver_test.cc index fe0c81ab6..d4ae24ba8 100644 --- a/src/tests/unit-tests/signal-processing-blocks/pvt/rtklib_solver_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/pvt/rtklib_solver_test.cc @@ -28,18 +28,18 @@ * ------------------------------------------------------------------------- */ +#include "geofunctions.h" +#include "gnss_sdr_supl_client.h" +#include "in_memory_configuration.h" +#include "rtklib_solver.h" +#include +#include +#include +#include #include -#include #include #include -#include -#include -#include -#include "rtklib_solver.h" -#include "in_memory_configuration.h" -#include "gnss_sdr_supl_client.h" -#include "geofunctions.h" -#include +#include rtk_t configure_rtklib_options() diff --git a/src/tests/unit-tests/signal-processing-blocks/resampler/direct_resampler_conditioner_cc_test.cc b/src/tests/unit-tests/signal-processing-blocks/resampler/direct_resampler_conditioner_cc_test.cc index 55c49c568..d8ce67450 100644 --- a/src/tests/unit-tests/signal-processing-blocks/resampler/direct_resampler_conditioner_cc_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/resampler/direct_resampler_conditioner_cc_test.cc @@ -31,18 +31,18 @@ */ -#include -#include #include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include "gnss_sdr_valve.h" #include "direct_resampler_conditioner_cc.h" +#include "gnss_sdr_valve.h" +#include +#include TEST(DirectResamplerConditionerCcTest, InstantiationAndRunTest) diff --git a/src/tests/unit-tests/signal-processing-blocks/resampler/mmse_resampler_test.cc b/src/tests/unit-tests/signal-processing-blocks/resampler/mmse_resampler_test.cc index c00561eb3..2bc26b8b4 100644 --- a/src/tests/unit-tests/signal-processing-blocks/resampler/mmse_resampler_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/resampler/mmse_resampler_test.cc @@ -29,18 +29,18 @@ * ------------------------------------------------------------------------- */ -#include -#include #include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include #include "gnss_sdr_valve.h" #include "mmse_resampler_conditioner.h" +#include +#include TEST(MmseResamplerTest, InstantiationAndRunTestWarning) { diff --git a/src/tests/unit-tests/signal-processing-blocks/sources/file_signal_source_test.cc b/src/tests/unit-tests/signal-processing-blocks/sources/file_signal_source_test.cc index 8634d72bc..344d1c1bc 100644 --- a/src/tests/unit-tests/signal-processing-blocks/sources/file_signal_source_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/sources/file_signal_source_test.cc @@ -29,13 +29,13 @@ * ------------------------------------------------------------------------- */ -#include -#include -#include -#include -#include #include "file_signal_source.h" #include "in_memory_configuration.h" +#include +#include +#include +#include +#include TEST(FileSignalSource, Instantiate) { diff --git a/src/tests/unit-tests/signal-processing-blocks/sources/gnss_sdr_valve_test.cc b/src/tests/unit-tests/signal-processing-blocks/sources/gnss_sdr_valve_test.cc index 41c10d607..02e1b09df 100644 --- a/src/tests/unit-tests/signal-processing-blocks/sources/gnss_sdr_valve_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/sources/gnss_sdr_valve_test.cc @@ -31,16 +31,16 @@ */ -#include #include +#include #ifdef GR_GREATER_38 #include #else #include #endif +#include "gnss_sdr_valve.h" #include #include -#include "gnss_sdr_valve.h" TEST(ValveTest, CheckEventSentAfter100Samples) { diff --git a/src/tests/unit-tests/signal-processing-blocks/sources/unpack_2bit_samples_test.cc b/src/tests/unit-tests/signal-processing-blocks/sources/unpack_2bit_samples_test.cc index 68891bff0..7fc787352 100644 --- a/src/tests/unit-tests/signal-processing-blocks/sources/unpack_2bit_samples_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/sources/unpack_2bit_samples_test.cc @@ -31,18 +31,18 @@ */ -#include #include +#include #ifdef GR_GREATER_38 -#include #include +#include #else +#include #include #include -#include #endif -#include #include "unpack_2bit_samples.h" +#include std::vector packData(std::vector const &raw_data, bool big_endian) @@ -52,9 +52,9 @@ std::vector packData(std::vector const &raw_data, int shift = (big_endian ? 6 : 0); unsigned int j = 0; - for (unsigned int i = 0; i < raw_data.size(); ++i) + for (signed char i : raw_data) { - unsigned val = static_cast((raw_data[i] - 1) / 2 & 0x03); + auto val = static_cast((i - 1) / 2 & 0x03); packed_data[j] |= val << shift; diff --git a/src/tests/unit-tests/signal-processing-blocks/telemetry_decoder/galileo_fnav_inav_decoder_test.cc b/src/tests/unit-tests/signal-processing-blocks/telemetry_decoder/galileo_fnav_inav_decoder_test.cc index 1db19d4a7..748811a20 100644 --- a/src/tests/unit-tests/signal-processing-blocks/telemetry_decoder/galileo_fnav_inav_decoder_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/telemetry_decoder/galileo_fnav_inav_decoder_test.cc @@ -30,16 +30,16 @@ * ------------------------------------------------------------------------- */ -#include "galileo_navigation_message.h" -#include "galileo_fnav_message.h" #include "convolutional.h" -#include +#include "galileo_fnav_message.h" +#include "galileo_navigation_message.h" +#include +#include +#include #include #include #include -#include -#include -#include +#include class Galileo_FNAV_INAV_test : public ::testing::Test diff --git a/src/tests/unit-tests/signal-processing-blocks/telemetry_decoder/gps_l1_ca_telemetry_decoder_test.cc b/src/tests/unit-tests/signal-processing-blocks/telemetry_decoder/gps_l1_ca_telemetry_decoder_test.cc index 22a1118d9..4f5da024e 100644 --- a/src/tests/unit-tests/signal-processing-blocks/telemetry_decoder/gps_l1_ca_telemetry_decoder_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/telemetry_decoder/gps_l1_ca_telemetry_decoder_test.cc @@ -30,37 +30,37 @@ * ------------------------------------------------------------------------- */ -#include +#include +#include +#include +#include #include #include #include -#include -#include -#include -#include +#include #ifdef GR_GREATER_38 #include #else #include #endif +#include "GPS_L1_CA.h" +#include "gnss_block_factory.h" +#include "gnss_block_interface.h" +#include "gnss_synchro.h" +#include "gps_l1_ca_dll_pll_c_aid_tracking.h" +#include "gps_l1_ca_dll_pll_tracking.h" +#include "gps_l1_ca_telemetry_decoder.h" +#include "in_memory_configuration.h" +#include "signal_generator_flags.h" +#include "telemetry_decoder_interface.h" +#include "tlm_dump_reader.h" +#include "tracking_dump_reader.h" +#include "tracking_interface.h" +#include "tracking_true_obs_reader.h" #include #include #include #include -#include "GPS_L1_CA.h" -#include "gnss_block_factory.h" -#include "gnss_block_interface.h" -#include "tracking_interface.h" -#include "telemetry_decoder_interface.h" -#include "in_memory_configuration.h" -#include "gnss_synchro.h" -#include "gps_l1_ca_telemetry_decoder.h" -#include "tracking_true_obs_reader.h" -#include "tracking_dump_reader.h" -#include "tlm_dump_reader.h" -#include "gps_l1_ca_dll_pll_tracking.h" -#include "gps_l1_ca_dll_pll_c_aid_tracking.h" -#include "signal_generator_flags.h" // ######## GNURADIO BLOCK MESSAGE RECEVER FOR TRACKING MESSAGES ######### diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/bayesian_estimation_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/bayesian_estimation_test.cc index f32e82f16..dd7d0398b 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/bayesian_estimation_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/bayesian_estimation_test.cc @@ -29,10 +29,10 @@ * ------------------------------------------------------------------------- */ -#include +#include "bayesian_estimation.h" #include #include -#include "bayesian_estimation.h" +#include #define BAYESIAN_TEST_N_TRIALS 100 #define BAYESIAN_TEST_ITER 10000 diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_real_codes_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_real_codes_test.cc index 3b0c24883..68eae1518 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_real_codes_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_real_codes_test.cc @@ -29,17 +29,17 @@ * ------------------------------------------------------------------------- */ +#include "GPS_L1_CA.h" +#include "cpu_multicorrelator_real_codes.h" +#include "gps_sdr_signal_processing.h" +#include +#include +#include +#include #include #include #include #include -#include -#include -#include -#include -#include "cpu_multicorrelator_real_codes.h" -#include "gps_sdr_signal_processing.h" -#include "GPS_L1_CA.h" DEFINE_int32(cpu_multicorrelator_real_codes_iterations_test, 100, "Number of averaged iterations in CPU multicorrelator test timing test"); diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_test.cc index 068a9dce5..706c6fe45 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_test.cc @@ -29,17 +29,17 @@ * ------------------------------------------------------------------------- */ +#include "GPS_L1_CA.h" +#include "cpu_multicorrelator.h" +#include "gps_sdr_signal_processing.h" +#include +#include +#include +#include #include #include #include #include -#include -#include -#include -#include -#include "cpu_multicorrelator.h" -#include "gps_sdr_signal_processing.h" -#include "GPS_L1_CA.h" DEFINE_int32(cpu_multicorrelator_iterations_test, 100, "Number of averaged iterations in CPU multicorrelator test timing test"); diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc index fb61cd4bd..897257b93 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc @@ -31,26 +31,25 @@ */ -#include -#include -#include +#include "galileo_e1_dll_pll_veml_tracking.h" +#include "gnss_block_factory.h" +#include "gnss_block_interface.h" +#include "gnss_sdr_valve.h" +#include "gnss_synchro.h" +#include "in_memory_configuration.h" #include +#include +#include +#include +#include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include -#include "gnss_block_factory.h" -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" -#include "gnss_sdr_valve.h" -#include "gnss_synchro.h" -#include "galileo_e1_dll_pll_veml_tracking.h" - class GalileoE1DllPllVemlTrackingInternalTest : public ::testing::Test { @@ -65,9 +64,7 @@ protected: gnss_synchro = Gnss_Synchro(); } - ~GalileoE1DllPllVemlTrackingInternalTest() - { - } + ~GalileoE1DllPllVemlTrackingInternalTest() = default; void init(); @@ -75,7 +72,7 @@ protected: gr::top_block_sptr top_block; std::shared_ptr factory; std::shared_ptr config; - Gnss_Synchro gnss_synchro; + Gnss_Synchro gnss_synchro{}; size_t item_size; bool stop; int message; diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e5a_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e5a_tracking_test.cc index 9c6d274f7..29ffe6edd 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e5a_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e5a_tracking_test.cc @@ -31,25 +31,25 @@ */ -#include -#include -#include +#include "galileo_e5a_dll_pll_tracking.h" +#include "gnss_block_factory.h" +#include "gnss_block_interface.h" +#include "gnss_sdr_valve.h" +#include "gnss_synchro.h" +#include "in_memory_configuration.h" #include +#include +#include +#include +#include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include -#include "gnss_block_factory.h" -#include "gnss_block_interface.h" -#include "in_memory_configuration.h" -#include "gnss_sdr_valve.h" -#include "gnss_synchro.h" -#include "galileo_e5a_dll_pll_tracking.h" class GalileoE5aTrackingTest : public ::testing::Test diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc index 352c837e1..64c6df3b5 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc @@ -31,27 +31,26 @@ */ -#include -#include -#include +#include "glonass_l1_ca_dll_pll_c_aid_tracking.h" +#include "gnss_block_factory.h" +#include "gnss_block_interface.h" +#include "gnss_sdr_valve.h" +#include "gnss_synchro.h" +#include "in_memory_configuration.h" +#include "tracking_interface.h" #include +#include +#include +#include +#include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include -#include "gnss_block_factory.h" -#include "gnss_block_interface.h" -#include "tracking_interface.h" -#include "in_memory_configuration.h" -#include "gnss_sdr_valve.h" -#include "gnss_synchro.h" -#include "glonass_l1_ca_dll_pll_c_aid_tracking.h" - // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class GlonassL1CaDllPllCAidTrackingTest_msg_rx; @@ -162,7 +161,7 @@ TEST_F(GlonassL1CaDllPllCAidTrackingTest, ValidationOfResults) init(); queue = gr::msg_queue::make(0); top_block = gr::make_top_block("Tracking test"); - std::shared_ptr tracking = std::make_shared(config.get(), "Tracking_1G", 1, 1); + std::shared_ptr tracking = std::make_shared(config.get(), "Tracking_1G", 1, 1); boost::shared_ptr msg_rx = GlonassL1CaDllPllCAidTrackingTest_msg_rx_make(); gnss_synchro.Acq_delay_samples = 1343; diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_tracking_test.cc index 6503e30db..2bf4f8938 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_tracking_test.cc @@ -31,26 +31,26 @@ */ -#include -#include -#include +#include "glonass_l1_ca_dll_pll_tracking.h" +#include "gnss_block_factory.h" +#include "gnss_block_interface.h" +#include "gnss_sdr_valve.h" +#include "gnss_synchro.h" +#include "in_memory_configuration.h" +#include "tracking_interface.h" #include +#include +#include +#include +#include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include -#include "gnss_block_factory.h" -#include "gnss_block_interface.h" -#include "tracking_interface.h" -#include "in_memory_configuration.h" -#include "gnss_sdr_valve.h" -#include "gnss_synchro.h" -#include "glonass_l1_ca_dll_pll_tracking.h" // ######## GNURADIO BLOCK MESSAGE RECEVER ######### diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_dll_pll_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_dll_pll_tracking_test.cc index 3484fc791..58fd52407 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_dll_pll_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_dll_pll_tracking_test.cc @@ -30,35 +30,34 @@ * ------------------------------------------------------------------------- */ +#include "GPS_L1_CA.h" +#include "gnss_block_factory.h" +#include "gnuplot_i.h" +#include "in_memory_configuration.h" +#include "signal_generator_flags.h" +#include "test_flags.h" +#include "tracking_dump_reader.h" +#include "tracking_interface.h" +#include "tracking_tests_flags.h" +#include "tracking_true_obs_reader.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include -#include -#include -#include -#include -#include -#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include -#include "GPS_L1_CA.h" -#include "gnss_block_factory.h" -#include "tracking_interface.h" -#include "in_memory_configuration.h" -#include "tracking_true_obs_reader.h" -#include "tracking_dump_reader.h" -#include "signal_generator_flags.h" -#include "gnuplot_i.h" -#include "test_flags.h" -#include "tracking_tests_flags.h" - // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class GpsL1CADllPllTrackingTest_msg_rx; diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_dll_pll_tracking_test_fpga.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_dll_pll_tracking_test_fpga.cc index 977f87f7a..ffaeffc76 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_dll_pll_tracking_test_fpga.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_dll_pll_tracking_test_fpga.cc @@ -2,7 +2,7 @@ * \file gps_l1_ca_dll_pll_tracking_test.cc * \brief This class implements a tracking test for Galileo_E5a_DLL_PLL_Tracking * implementation based on some input parameters. - * \author Marc Majoral, 2017. mmajoral(at)cttc.cat + * \author Marc Majoral, 2017. mmajoral(at)cttc.cat * \author Javier Arribas, 2017. jarribas(at)cttc.es * * @@ -31,46 +31,46 @@ * ------------------------------------------------------------------------- */ +#include "GPS_L1_CA.h" +#include "gnss_block_factory.h" +#include "gnss_block_interface.h" +#include "gnss_synchro.h" +#include "gps_l1_ca_dll_pll_tracking_fpga.h" +#include "in_memory_configuration.h" +#include "interleaved_byte_to_complex_short.h" +#include "signal_generator_flags.h" +#include "tracking_dump_reader.h" +#include "tracking_interface.h" +#include "tracking_true_obs_reader.h" +#include +#include // to test the FPGA we have to create a simultaneous task to send the samples using the DMA and stop the test +#include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include // FPGA read input file #include #include #include -#include -#include // to test the FPGA we have to create a simultaneous task to send the samples using the DMA and stop the test -#include // FPGA read input file -#include -#include -#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include -#include -#include -#include "GPS_L1_CA.h" -#include "gnss_block_factory.h" -#include "gnss_block_interface.h" -#include "tracking_interface.h" -#include "in_memory_configuration.h" -#include "gnss_synchro.h" -//#include "gps_l1_ca_dll_pll_c_aid_tracking_fpga.h" -#include "gps_l1_ca_dll_pll_tracking_fpga.h" -#include "tracking_true_obs_reader.h" -#include "tracking_dump_reader.h" -#include "signal_generator_flags.h" -#include "interleaved_byte_to_complex_short.h" #define DMA_TRACK_TRANSFER_SIZE 2046 // DMA transfer size for tracking #define MIN_SAMPLES_REMAINING 20000 // number of remaining samples in the DMA that causes the CPU to stop the flowgraph (it has to be a bit alrger than 2x max packet size) #define FIVE_SECONDS 5000000 // five seconds in microseconds void send_tracking_gps_input_samples(FILE *rx_signal_file, - int num_remaining_samples, gr::top_block_sptr top_block) + int num_remaining_samples, const gr::top_block_sptr& top_block) { int num_samples_transferred = 0; // number of samples that have been transferred to the DMA so far static int flowgraph_stopped = 0; // flag to indicate if the flowgraph is stopped already @@ -143,7 +143,7 @@ void sending_thread(gr::top_block_sptr top_block, const char *file_name) usleep(FIVE_SECONDS); // wait for some time to give time to the other thread to program the device //send_tracking_gps_input_samples(dma_descr, rx_signal_file, file_length); - send_tracking_gps_input_samples(rx_signal_file, file_length, top_block); + send_tracking_gps_input_samples(rx_signal_file, file_length, std::move(top_block)); fclose(rx_signal_file); } @@ -152,7 +152,7 @@ void sending_thread(gr::top_block_sptr top_block, const char *file_name) // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class GpsL1CADllPllTrackingTestFpga_msg_rx; -typedef boost::shared_ptr GpsL1CADllPllTrackingTestFpga_msg_rx_sptr; +using GpsL1CADllPllTrackingTestFpga_msg_rx_sptr = boost::shared_ptr; GpsL1CADllPllTrackingTestFpga_msg_rx_sptr GpsL1CADllPllTrackingTestFpga_msg_rx_make(); @@ -181,7 +181,7 @@ void GpsL1CADllPllTrackingTestFpga_msg_rx::msg_handler_events(pmt::pmt_t msg) { try { - int64_t message = pmt::to_long(msg); + int64_t message = pmt::to_long(std::move(msg)); rx_message = message; } catch (boost::bad_any_cast &e) @@ -205,9 +205,7 @@ GpsL1CADllPllTrackingTestFpga_msg_rx::GpsL1CADllPllTrackingTestFpga_msg_rx() : g } -GpsL1CADllPllTrackingTestFpga_msg_rx::~GpsL1CADllPllTrackingTestFpga_msg_rx() -{ -} +GpsL1CADllPllTrackingTestFpga_msg_rx::~GpsL1CADllPllTrackingTestFpga_msg_rx() = default; // ########################################################### @@ -244,9 +242,7 @@ public: gnss_synchro = Gnss_Synchro(); } - ~GpsL1CADllPllTrackingTestFpga() - { - } + ~GpsL1CADllPllTrackingTestFpga() = default; void configure_receiver(); @@ -284,7 +280,7 @@ int GpsL1CADllPllTrackingTestFpga::generate_signal() int child_status; char *const parmList[] = {&generator_binary[0], &generator_binary[0], &p1[0], &p2[0], &p3[0], - &p4[0], &p5[0], NULL}; + &p4[0], &p5[0], nullptr}; int pid; if ((pid = fork()) == -1) diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_kf_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_kf_tracking_test.cc index 775c3540b..96c84302f 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_kf_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_kf_tracking_test.cc @@ -30,33 +30,33 @@ * ------------------------------------------------------------------------- */ +#include "GPS_L1_CA.h" +#include "gnss_block_factory.h" +#include "gnss_sdr_flags.h" +#include "gnuplot_i.h" +#include "in_memory_configuration.h" +#include "signal_generator_flags.h" +#include "test_flags.h" +#include "tracking_dump_reader.h" +#include "tracking_interface.h" +#include "tracking_true_obs_reader.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include -#include -#include -#include -#include -#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include -#include "GPS_L1_CA.h" -#include "gnss_block_factory.h" -#include "tracking_interface.h" -#include "in_memory_configuration.h" -#include "tracking_true_obs_reader.h" -#include "tracking_dump_reader.h" -#include "signal_generator_flags.h" -#include "gnuplot_i.h" -#include "test_flags.h" -#include "gnss_sdr_flags.h" DEFINE_bool(plot_gps_l1_kf_tracking_test, false, "Plots results of GpsL1CAKfTrackingTest with gnuplot"); diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l2_m_dll_pll_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l2_m_dll_pll_tracking_test.cc index 3c40eb54c..d56f2f3ab 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l2_m_dll_pll_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l2_m_dll_pll_tracking_test.cc @@ -31,26 +31,26 @@ */ -#include -#include -#include +#include "gnss_block_factory.h" +#include "gnss_block_interface.h" +#include "gnss_sdr_valve.h" +#include "gnss_synchro.h" +#include "gps_l2_m_dll_pll_tracking.h" +#include "in_memory_configuration.h" +#include "tracking_interface.h" #include +#include +#include +#include +#include +#include +#include +#include #ifdef GR_GREATER_38 #include #else #include #endif -#include -#include -#include -#include -#include "gnss_block_factory.h" -#include "gnss_block_interface.h" -#include "tracking_interface.h" -#include "in_memory_configuration.h" -#include "gnss_sdr_valve.h" -#include "gnss_synchro.h" -#include "gps_l2_m_dll_pll_tracking.h" // ######## GNURADIO BLOCK MESSAGE RECEVER ######### diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/gpu_multicorrelator_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/gpu_multicorrelator_test.cc index 35095ad7f..5048fe638 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/gpu_multicorrelator_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/gpu_multicorrelator_test.cc @@ -29,15 +29,15 @@ * ------------------------------------------------------------------------- */ -#include -#include -#include -#include -#include -#include +#include "GPS_L1_CA.h" #include "cuda_multicorrelator.h" #include "gps_sdr_signal_processing.h" -#include "GPS_L1_CA.h" +#include +#include +#include +#include +#include +#include DEFINE_int32(gpu_multicorrelator_iterations_test, 1000, "Number of averaged iterations in GPU multicorrelator test timing test"); diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_loop_filter_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_loop_filter_test.cc index 34abf6f46..f59a87a1c 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_loop_filter_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_loop_filter_test.cc @@ -56,10 +56,10 @@ TEST(TrackingLoopFilterTest, FirstOrderLoop) float g1 = noise_bandwidth * 4.0; float result = 0.0; - for (unsigned int i = 0; i < sample_data.size(); ++i) + for (float i : sample_data) { - result = theFilter.apply(sample_data[i]); - EXPECT_FLOAT_EQ(result, sample_data[i] * g1); + result = theFilter.apply(i); + EXPECT_FLOAT_EQ(result, i * g1); } } diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test.cc index 6b33a2c33..2d9861d6f 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test.cc @@ -30,40 +30,49 @@ * ------------------------------------------------------------------------- */ - #include "GPS_L1_CA.h" -#include "gnss_block_factory.h" +#include "GPS_L2C.h" +#include "GPS_L5.h" +#include "Galileo_E1.h" +#include "Galileo_E5a.h" +#include "acquisition_msg_rx.h" #include "control_message_factory.h" -#include "tracking_interface.h" -#include "gnss_sdr_valve.h" -#include "gps_l2_m_pcps_acquisition.h" -#include "gps_l1_ca_pcps_acquisition.h" -#include "gps_l1_ca_pcps_acquisition_fine_doppler.h" #include "galileo_e1_pcps_ambiguous_acquisition.h" #include "galileo_e5a_noncoherent_iq_acquisition_caf.h" #include "galileo_e5a_pcps_acquisition.h" +#include "gnss_block_factory.h" +#include "gnss_sdr_valve.h" +#include "gnuplot_i.h" +#include "gps_l1_ca_pcps_acquisition.h" +#include "gps_l1_ca_pcps_acquisition_fine_doppler.h" +#include "gps_l2_m_pcps_acquisition.h" #include "gps_l5i_pcps_acquisition.h" #include "in_memory_configuration.h" -#include "tracking_true_obs_reader.h" -#include "tracking_dump_reader.h" #include "signal_generator_flags.h" -#include "gnuplot_i.h" #include "test_flags.h" +#include "tracking_dump_reader.h" +#include "tracking_interface.h" #include "tracking_tests_flags.h" -#include "acquisition_msg_rx.h" +#include "tracking_true_obs_reader.h" +#include #include -#include #include +#include #include #include #include -#include +#include #include +#include #include #include #include #include -#include +#ifdef GR_GREATER_38 +#include +#else +#include +#endif // ######## GNURADIO TRACKING BLOCK MESSAGE RECEVER ######### @@ -126,6 +135,19 @@ TrackingPullInTest_msg_rx::~TrackingPullInTest_msg_rx() class TrackingPullInTest : public ::testing::Test { public: + enum StringValue + { + evGPS_1C, + evGPS_2S, + evGPS_L5, + evSBAS_1C, + evGAL_1B, + evGAL_5X, + evGLO_1G, + evGLO_2G + }; + std::map mapStringValues_; + std::string generator_binary; std::string p1; std::string p2; @@ -171,6 +193,13 @@ public: config = std::make_shared(); item_size = sizeof(gr_complex); gnss_synchro = Gnss_Synchro(); + mapStringValues_["1C"] = evGPS_1C; + mapStringValues_["2S"] = evGPS_2S; + mapStringValues_["L5"] = evGPS_L5; + mapStringValues_["1B"] = evGAL_1B; + mapStringValues_["5X"] = evGAL_5X; + mapStringValues_["1G"] = evGLO_1G; + mapStringValues_["2G"] = evGLO_2G; } ~TrackingPullInTest() @@ -289,7 +318,7 @@ void TrackingPullInTest::configure_receiver( System_and_Signal = "GPS L2CM"; signal.copy(gnss_synchro.Signal, 2, 0); config->set_property("Tracking.early_late_space_chips", "0.5"); - config->set_property("Tracking.track_pilot", "false"); + config->set_property("Tracking.track_pilot", "true"); } else if (implementation.compare("Galileo_E5a_DLL_PLL_Tracking") == 0 or implementation.compare("Galileo_E5a_DLL_PLL_Tracking_b") == 0) { @@ -302,7 +331,7 @@ void TrackingPullInTest::configure_receiver( config->supersede_property("Tracking.implementation", std::string("Galileo_E5a_DLL_PLL_Tracking")); } config->set_property("Tracking.early_late_space_chips", "0.5"); - config->set_property("Tracking.track_pilot", "false"); + config->set_property("Tracking.track_pilot", "true"); config->set_property("Tracking.order", "2"); } else if (implementation.compare("GPS_L5_DLL_PLL_Tracking") == 0) @@ -312,7 +341,7 @@ void TrackingPullInTest::configure_receiver( System_and_Signal = "GPS L5I"; signal.copy(gnss_synchro.Signal, 2, 0); config->set_property("Tracking.early_late_space_chips", "0.5"); - config->set_property("Tracking.track_pilot", "false"); + config->set_property("Tracking.track_pilot", "true"); config->set_property("Tracking.order", "2"); } else @@ -345,8 +374,15 @@ bool TrackingPullInTest::acquire_signal(int SV_ID) // Satellite signal definition Gnss_Synchro tmp_gnss_synchro; tmp_gnss_synchro.Channel_ID = 0; + + config = std::make_shared(); config->set_property("GNSS-SDR.internal_fs_sps", std::to_string(baseband_sampling_freq)); + // Enable automatic resampler for the acquisition, if required + if (FLAGS_use_acquisition_resampler == true) + { + config->set_property("GNSS-SDR.use_acquisition_resampler", "true"); + } config->set_property("Acquisition.blocking_on_standby", "true"); config->set_property("Acquisition.blocking", "true"); config->set_property("Acquisition.dump", "false"); @@ -356,11 +392,12 @@ bool TrackingPullInTest::acquire_signal(int SV_ID) std::shared_ptr acquisition; std::string System_and_Signal; + std::string signal; //create the correspondign acquisition block according to the desired tracking signal if (implementation.compare("GPS_L1_CA_DLL_PLL_Tracking") == 0) { tmp_gnss_synchro.System = 'G'; - std::string signal = "1C"; + signal = "1C"; const char* str = signal.c_str(); // get a C style null terminated string std::memcpy(static_cast(tmp_gnss_synchro.Signal), str, 3); // copy string into synchro char array: 2 char + null tmp_gnss_synchro.PRN = SV_ID; @@ -372,7 +409,7 @@ bool TrackingPullInTest::acquire_signal(int SV_ID) else if (implementation.compare("Galileo_E1_DLL_PLL_VEML_Tracking") == 0) { tmp_gnss_synchro.System = 'E'; - std::string signal = "1B"; + signal = "1B"; const char* str = signal.c_str(); // get a C style null terminated string std::memcpy(static_cast(tmp_gnss_synchro.Signal), str, 3); // copy string into synchro char array: 2 char + null tmp_gnss_synchro.PRN = SV_ID; @@ -383,7 +420,7 @@ bool TrackingPullInTest::acquire_signal(int SV_ID) else if (implementation.compare("GPS_L2_M_DLL_PLL_Tracking") == 0) { tmp_gnss_synchro.System = 'G'; - std::string signal = "2S"; + signal = "2S"; const char* str = signal.c_str(); // get a C style null terminated string std::memcpy(static_cast(tmp_gnss_synchro.Signal), str, 3); // copy string into synchro char array: 2 char + null tmp_gnss_synchro.PRN = SV_ID; @@ -394,7 +431,7 @@ bool TrackingPullInTest::acquire_signal(int SV_ID) else if (implementation.compare("Galileo_E5a_DLL_PLL_Tracking_b") == 0) { tmp_gnss_synchro.System = 'E'; - std::string signal = "5X"; + signal = "5X"; const char* str = signal.c_str(); // get a C style null terminated string std::memcpy(static_cast(tmp_gnss_synchro.Signal), str, 3); // copy string into synchro char array: 2 char + null tmp_gnss_synchro.PRN = SV_ID; @@ -410,7 +447,7 @@ bool TrackingPullInTest::acquire_signal(int SV_ID) else if (implementation.compare("Galileo_E5a_DLL_PLL_Tracking") == 0) { tmp_gnss_synchro.System = 'E'; - std::string signal = "5X"; + signal = "5X"; const char* str = signal.c_str(); // get a C style null terminated string std::memcpy(static_cast(tmp_gnss_synchro.Signal), str, 3); // copy string into synchro char array: 2 char + null tmp_gnss_synchro.PRN = SV_ID; @@ -421,7 +458,7 @@ bool TrackingPullInTest::acquire_signal(int SV_ID) else if (implementation.compare("GPS_L5_DLL_PLL_Tracking") == 0) { tmp_gnss_synchro.System = 'G'; - std::string signal = "L5"; + signal = "L5"; const char* str = signal.c_str(); // get a C style null terminated string std::memcpy(static_cast(tmp_gnss_synchro.Signal), str, 3); // copy string into synchro char array: 2 char + null tmp_gnss_synchro.PRN = SV_ID; @@ -449,13 +486,90 @@ bool TrackingPullInTest::acquire_signal(int SV_ID) std::string file = FLAGS_signal_file; const char* file_name = file.c_str(); file_source = gr::blocks::file_source::make(sizeof(int8_t), file_name, false); - file_source->seek(2 * FLAGS_skip_samples, 0); //skip head. ibyte, two bytes per complex sample + file_source->seek(2 * FLAGS_skip_samples, SEEK_SET); //skip head. ibyte, two bytes per complex sample gr::blocks::interleaved_char_to_complex::sptr gr_interleaved_char_to_complex = gr::blocks::interleaved_char_to_complex::make(); //gr::blocks::head::sptr head_samples = gr::blocks::head::make(sizeof(gr_complex), baseband_sampling_freq * FLAGS_duration); top_block->connect(file_source, 0, gr_interleaved_char_to_complex, 0); - top_block->connect(gr_interleaved_char_to_complex, 0, acquisition->get_left_block(), 0); - //top_block->connect(head_samples, 0, acquisition->get_left_block(), 0); + + // Enable automatic resampler for the acquisition, if required + if (FLAGS_use_acquisition_resampler == true) + { + //create acquisition resamplers if required + double resampler_ratio = 1.0; + + double opt_fs = baseband_sampling_freq; + //find the signal associated to this channel + switch (mapStringValues_[signal]) + { + case evGPS_1C: + opt_fs = GPS_L1_CA_OPT_ACQ_FS_HZ; + break; + case evGPS_2S: + opt_fs = GPS_L2C_OPT_ACQ_FS_HZ; + break; + case evGPS_L5: + opt_fs = GPS_L5_OPT_ACQ_FS_HZ; + break; + case evSBAS_1C: + opt_fs = GPS_L1_CA_OPT_ACQ_FS_HZ; + break; + case evGAL_1B: + opt_fs = Galileo_E1_OPT_ACQ_FS_HZ; + break; + case evGAL_5X: + opt_fs = Galileo_E5a_OPT_ACQ_FS_HZ; + break; + case evGLO_1G: + opt_fs = baseband_sampling_freq; + break; + case evGLO_2G: + opt_fs = baseband_sampling_freq; + break; + } + if (opt_fs < baseband_sampling_freq) + { + resampler_ratio = baseband_sampling_freq / opt_fs; + int decimation = floor(resampler_ratio); + while (baseband_sampling_freq % decimation > 0) + { + decimation--; + }; + double acq_fs = baseband_sampling_freq / decimation; + + if (decimation > 1) + { + //create a FIR low pass filter + std::vector taps; + taps = gr::filter::firdes::low_pass(1.0, + baseband_sampling_freq, + acq_fs / 2.1, + acq_fs / 10, + gr::filter::firdes::win_type::WIN_HAMMING); + std::cout << "Enabled decimation low pass filter with " << taps.size() << " taps and decimation factor of " << decimation << std::endl; + acquisition->set_resampler_latency((taps.size() - 1) / 2); + gr::basic_block_sptr fir_filter_ccf_ = gr::filter::fir_filter_ccf::make(decimation, taps); + top_block->connect(gr_interleaved_char_to_complex, 0, fir_filter_ccf_, 0); + top_block->connect(fir_filter_ccf_, 0, acquisition->get_left_block(), 0); + } + else + { + std::cout << "Disabled acquisition resampler because the input sampling frequency is too low\n"; + top_block->connect(gr_interleaved_char_to_complex, 0, acquisition->get_left_block(), 0); + } + } + else + { + std::cout << "Disabled acquisition resampler because the input sampling frequency is too low\n"; + top_block->connect(gr_interleaved_char_to_complex, 0, acquisition->get_left_block(), 0); + } + } + else + { + top_block->connect(gr_interleaved_char_to_complex, 0, acquisition->get_left_block(), 0); + //top_block->connect(head_samples, 0, acquisition->get_left_block(), 0); + } + boost::shared_ptr msg_rx; try @@ -531,7 +645,7 @@ bool TrackingPullInTest::acquire_signal(int SV_ID) std::cout << " . "; } top_block->stop(); - file_source->seek(2 * FLAGS_skip_samples, 0); //skip head. ibyte, two bytes per complex sample + file_source->seek(2 * FLAGS_skip_samples, SEEK_SET); //skip head. ibyte, two bytes per complex sample std::cout.flush(); } std::cout << "]" << std::endl; diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test_fpga.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test_fpga.cc index 1c35cc64e..0c4683d7a 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test_fpga.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test_fpga.cc @@ -30,34 +30,34 @@ * ------------------------------------------------------------------------- */ -#include -#include -#include +#include "GPS_L1_CA.h" +#include "galileo_e5a_noncoherent_iq_acquisition_caf.h" +#include "galileo_e5a_pcps_acquisition.h" +#include "gnss_block_factory.h" +#include "gnuplot_i.h" +#include "gps_l1_ca_pcps_acquisition.h" +#include "gps_l1_ca_pcps_acquisition_fine_doppler.h" +#include "gps_l2_m_pcps_acquisition.h" +#include "gps_l5i_pcps_acquisition.h" +#include "in_memory_configuration.h" +#include "signal_generator_flags.h" +#include "test_flags.h" +#include "tracking_dump_reader.h" +#include "tracking_interface.h" +#include "tracking_tests_flags.h" +#include "tracking_true_obs_reader.h" #include #include -#include #include +#include #include #include #include -#include +#include #include -#include "GPS_L1_CA.h" -#include "gnss_block_factory.h" -#include "tracking_interface.h" -#include "gps_l2_m_pcps_acquisition.h" -#include "gps_l1_ca_pcps_acquisition.h" -#include "gps_l1_ca_pcps_acquisition_fine_doppler.h" -#include "galileo_e5a_noncoherent_iq_acquisition_caf.h" -#include "galileo_e5a_pcps_acquisition.h" -#include "gps_l5i_pcps_acquisition.h" -#include "in_memory_configuration.h" -#include "tracking_true_obs_reader.h" -#include "tracking_dump_reader.h" -#include "signal_generator_flags.h" -#include "gnuplot_i.h" -#include "test_flags.h" -#include "tracking_tests_flags.h" +#include +#include +#include // ######## GNURADIO ACQUISITION BLOCK MESSAGE RECEVER ######### diff --git a/src/tests/unit-tests/system-parameters/glonass_gnav_ephemeris_test.cc b/src/tests/unit-tests/system-parameters/glonass_gnav_ephemeris_test.cc index d73c9e767..b69c8fd15 100644 --- a/src/tests/unit-tests/system-parameters/glonass_gnav_ephemeris_test.cc +++ b/src/tests/unit-tests/system-parameters/glonass_gnav_ephemeris_test.cc @@ -31,8 +31,8 @@ */ -#include "gnss_signal_processing.h" #include "glonass_gnav_ephemeris.h" +#include "gnss_signal_processing.h" TEST(GlonassGnavEphemerisTest, ComputeGlonassTime) diff --git a/src/tests/unit-tests/system-parameters/glonass_gnav_nav_message_test.cc b/src/tests/unit-tests/system-parameters/glonass_gnav_nav_message_test.cc index f42a0d04d..3b91be0e6 100644 --- a/src/tests/unit-tests/system-parameters/glonass_gnav_nav_message_test.cc +++ b/src/tests/unit-tests/system-parameters/glonass_gnav_nav_message_test.cc @@ -31,8 +31,8 @@ * ------------------------------------------------------------------------- */ -#include "gnss_signal_processing.h" #include "glonass_gnav_navigation_message.h" +#include "gnss_signal_processing.h" /*! * \brief Testing CRC computation for GLONASS GNAV data bits of a string diff --git a/src/utils/front-end-cal/front_end_cal.cc b/src/utils/front-end-cal/front_end_cal.cc index 9fec07116..9fd80f772 100644 --- a/src/utils/front-end-cal/front_end_cal.cc +++ b/src/utils/front-end-cal/front_end_cal.cc @@ -30,22 +30,23 @@ */ #include "front_end_cal.h" -#include -#include -#include +#include "gnss_sdr_supl_client.h" +#include "gps_almanac.h" +#include "gps_cnav_ephemeris.h" +#include "gps_cnav_iono.h" +#include "gps_ephemeris.h" +#include "gps_iono.h" +#include "gps_navigation_message.h" +#include "gps_utc_model.h" #include -#include +#include #include #include -#include -#include "gps_navigation_message.h" -#include "gps_ephemeris.h" -#include "gps_cnav_ephemeris.h" -#include "gps_almanac.h" -#include "gps_iono.h" -#include "gps_cnav_iono.h" -#include "gps_utc_model.h" -#include "gnss_sdr_supl_client.h" +#include +#include +#include +#include +#include extern concurrent_map global_gps_ephemeris_map; extern concurrent_map global_gps_iono_map; @@ -53,9 +54,9 @@ extern concurrent_map global_gps_utc_model_map; extern concurrent_map global_gps_almanac_map; extern concurrent_map global_gps_acq_assist_map; -FrontEndCal::FrontEndCal() {} +FrontEndCal::FrontEndCal() = default; -FrontEndCal::~FrontEndCal() {} +FrontEndCal::~FrontEndCal() = default; bool FrontEndCal::read_assistance_from_XML() { @@ -77,12 +78,9 @@ bool FrontEndCal::read_assistance_from_XML() } return true; } - else - { - std::cout << "ERROR: SUPL client error reading XML" << std::endl; - LOG(WARNING) << "ERROR: SUPL client error reading XML"; - return false; - } + std::cout << "ERROR: SUPL client error reading XML" << std::endl; + LOG(WARNING) << "ERROR: SUPL client error reading XML"; + return false; } @@ -235,7 +233,7 @@ int FrontEndCal::Get_SUPL_Assist() void FrontEndCal::set_configuration(std::shared_ptr configuration) { - configuration_ = configuration; + configuration_ = std::move(configuration); } @@ -255,29 +253,18 @@ bool FrontEndCal::get_ephemeris() { return true; } - else - { - return false; - } - } - else - { - return true; - } - } - else - { - std::cout << "Trying to read ephemeris from SUPL server..." << std::endl; - LOG(INFO) << "Trying to read ephemeris from SUPL server..."; - if (Get_SUPL_Assist() == 0) - { - return true; - } - else - { return false; } + return true; } + + std::cout << "Trying to read ephemeris from SUPL server..." << std::endl; + LOG(INFO) << "Trying to read ephemeris from SUPL server..."; + if (Get_SUPL_Assist() == 0) + { + return true; + } + return false; } @@ -376,10 +363,7 @@ double FrontEndCal::estimate_doppler_from_eph(unsigned int PRN, double TOW, doub mean_Doppler_Hz = arma::mean(Doppler_Hz); return mean_Doppler_Hz; } - else - { - throw(1); - } + throw(1); } diff --git a/src/utils/front-end-cal/front_end_cal.h b/src/utils/front-end-cal/front_end_cal.h index 3a6e9aeeb..261043461 100644 --- a/src/utils/front-end-cal/front_end_cal.h +++ b/src/utils/front-end-cal/front_end_cal.h @@ -32,9 +32,9 @@ #ifndef GNSS_SDR_FRONT_END_CAL_H_ #define GNSS_SDR_FRONT_END_CAL_H_ -#include -#include "file_configuration.h" #include "concurrent_map.h" +#include "file_configuration.h" +#include class FrontEndCal diff --git a/src/utils/front-end-cal/main.cc b/src/utils/front-end-cal/main.cc index c3f129803..b1680d51f 100644 --- a/src/utils/front-end-cal/main.cc +++ b/src/utils/front-end-cal/main.cc @@ -32,47 +32,48 @@ #define FRONT_END_CAL_VERSION "0.0.1" #endif -#include "front_end_cal.h" #include "concurrent_map.h" #include "concurrent_queue.h" #include "file_configuration.h" -#include "gps_l1_ca_pcps_acquisition_fine_doppler.h" -#include "gnss_signal.h" -#include "gnss_synchro.h" -#include "gnss_block_factory.h" -#include "gps_navigation_message.h" -#include "gps_ephemeris.h" -#include "gps_cnav_ephemeris.h" -#include "gps_almanac.h" -#include "gps_iono.h" -#include "gps_cnav_iono.h" -#include "gps_utc_model.h" -#include "galileo_ephemeris.h" +#include "front_end_cal.h" #include "galileo_almanac.h" +#include "galileo_ephemeris.h" #include "galileo_iono.h" #include "galileo_utc_model.h" -#include "sbas_ephemeris.h" -#include "gnss_sdr_supl_client.h" +#include "gnss_block_factory.h" #include "gnss_sdr_flags.h" +#include "gnss_sdr_supl_client.h" +#include "gnss_signal.h" +#include "gnss_synchro.h" +#include "gps_almanac.h" +#include "gps_cnav_ephemeris.h" +#include "gps_cnav_iono.h" +#include "gps_ephemeris.h" +#include "gps_iono.h" +#include "gps_l1_ca_pcps_acquisition_fine_doppler.h" +#include "gps_navigation_message.h" +#include "gps_utc_model.h" +#include "sbas_ephemeris.h" +#include #include #include #include -#include #include -#include -#include +#include +#include +#include #include #include -#include -#include -#include -#include +#include +#include #include #include +#include #include // for ctime #include #include #include +#include #include @@ -96,7 +97,7 @@ std::vector gnss_sync_vector; // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class FrontEndCal_msg_rx; -typedef boost::shared_ptr FrontEndCal_msg_rx_sptr; +using FrontEndCal_msg_rx_sptr = boost::shared_ptr; FrontEndCal_msg_rx_sptr FrontEndCal_msg_rx_make(); @@ -124,7 +125,7 @@ void FrontEndCal_msg_rx::msg_handler_events(pmt::pmt_t msg) { try { - int64_t message = pmt::to_long(msg); + int64_t message = pmt::to_long(std::move(msg)); rx_message = message; channel_internal_queue.push(rx_message); } @@ -144,7 +145,9 @@ FrontEndCal_msg_rx::FrontEndCal_msg_rx() : gr::block("FrontEndCal_msg_rx", gr::i } -FrontEndCal_msg_rx::~FrontEndCal_msg_rx() {} +FrontEndCal_msg_rx::~FrontEndCal_msg_rx() = default; + + void wait_message() { while (!stop) @@ -171,7 +174,7 @@ void wait_message() } -bool front_end_capture(std::shared_ptr configuration) +bool front_end_capture(const std::shared_ptr& configuration) { gr::top_block_sptr top_block; GNSSBlockFactory block_factory; @@ -188,7 +191,7 @@ bool front_end_capture(std::shared_ptr configuration) catch (const boost::exception_ptr& e) { std::cout << "Exception caught in creating source " << e << std::endl; - return 0; + return false; } std::shared_ptr conditioner; @@ -199,7 +202,7 @@ bool front_end_capture(std::shared_ptr configuration) catch (const boost::exception_ptr& e) { std::cout << "Exception caught in creating signal conditioner " << e << std::endl; - return 0; + return false; } gr::block_sptr sink; sink = gr::blocks::file_sink::make(sizeof(gr_complex), "tmp_capture.dat"); @@ -399,7 +402,7 @@ int main(int argc, char** argv) // record startup time std::chrono::time_point start, end; - std::chrono::duration elapsed_seconds; + std::chrono::duration elapsed_seconds{}; start = std::chrono::system_clock::now(); bool start_msg = true; @@ -427,13 +430,13 @@ int main(int argc, char** argv) std::cout << "["; start_msg = false; } - if (gnss_sync_vector.size() > 0) + if (!gnss_sync_vector.empty()) { std::cout << " " << PRN << " "; double doppler_measurement_hz = 0; - for (std::vector::iterator it = gnss_sync_vector.begin(); it != gnss_sync_vector.end(); ++it) + for (auto& it : gnss_sync_vector) { - doppler_measurement_hz += (*it).Acq_doppler_hz; + doppler_measurement_hz += it.Acq_doppler_hz; } doppler_measurement_hz = doppler_measurement_hz / gnss_sync_vector.size(); doppler_measurements_map.insert(std::pair(PRN, doppler_measurement_hz)); @@ -520,7 +523,7 @@ int main(int argc, char** argv) std::cout << "Longitude=" << lon_deg << " [ยบ]" << std::endl; std::cout << "Altitude=" << altitude_m << " [m]" << std::endl; - if (doppler_measurements_map.size() == 0) + if (doppler_measurements_map.empty()) { std::cout << "Sorry, no GPS satellites detected in the front-end capture, please check the antenna setup..." << std::endl; delete acquisition; @@ -538,21 +541,21 @@ int main(int argc, char** argv) std::cout << "SV ID Measured [Hz] Predicted [Hz]" << std::endl; - for (std::map::iterator it = doppler_measurements_map.begin(); it != doppler_measurements_map.end(); ++it) + for (auto& it : doppler_measurements_map) { try { double doppler_estimated_hz; - doppler_estimated_hz = front_end_cal.estimate_doppler_from_eph(it->first, current_TOW, lat_deg, lon_deg, altitude_m); - std::cout << " " << it->first << " " << it->second << " " << doppler_estimated_hz << std::endl; + doppler_estimated_hz = front_end_cal.estimate_doppler_from_eph(it.first, current_TOW, lat_deg, lon_deg, altitude_m); + std::cout << " " << it.first << " " << it.second << " " << doppler_estimated_hz << std::endl; // 7. Compute front-end IF and sampling frequency estimation // Compare with the measurements and compute clock drift using FE model double estimated_fs_Hz, estimated_f_if_Hz, f_osc_err_ppm; - front_end_cal.GPS_L1_front_end_model_E4000(doppler_estimated_hz, it->second, fs_in_, &estimated_fs_Hz, &estimated_f_if_Hz, &f_osc_err_ppm); + front_end_cal.GPS_L1_front_end_model_E4000(doppler_estimated_hz, it.second, fs_in_, &estimated_fs_Hz, &estimated_f_if_Hz, &f_osc_err_ppm); - f_if_estimation_Hz_map.insert(std::pair(it->first, estimated_f_if_Hz)); - f_fs_estimation_Hz_map.insert(std::pair(it->first, estimated_fs_Hz)); - f_ppm_estimation_Hz_map.insert(std::pair(it->first, f_osc_err_ppm)); + f_if_estimation_Hz_map.insert(std::pair(it.first, estimated_f_if_Hz)); + f_fs_estimation_Hz_map.insert(std::pair(it.first, estimated_fs_Hz)); + f_ppm_estimation_Hz_map.insert(std::pair(it.first, f_osc_err_ppm)); } catch (const std::logic_error& e) { @@ -564,7 +567,7 @@ int main(int argc, char** argv) } catch (int ex) { - std::cout << " " << it->first << " " << it->second << " (Eph not found)" << std::endl; + std::cout << " " << it.first << " " << it.second << " (Eph not found)" << std::endl; } } @@ -574,11 +577,11 @@ int main(int argc, char** argv) double mean_osc_err_ppm = 0; int n_elements = f_if_estimation_Hz_map.size(); - for (std::map::iterator it = f_if_estimation_Hz_map.begin(); it != f_if_estimation_Hz_map.end(); ++it) + for (auto& it : f_if_estimation_Hz_map) { - mean_f_if_Hz += (*it).second; - mean_fs_Hz += f_fs_estimation_Hz_map.find((*it).first)->second; - mean_osc_err_ppm += f_ppm_estimation_Hz_map.find((*it).first)->second; + mean_f_if_Hz += it.second; + mean_fs_Hz += f_fs_estimation_Hz_map.find(it.first)->second; + mean_osc_err_ppm += f_ppm_estimation_Hz_map.find(it.first)->second; } mean_f_if_Hz /= n_elements; @@ -595,13 +598,13 @@ int main(int argc, char** argv) << "Corrected Doppler vs. Predicted" << std::endl; std::cout << "SV ID Corrected [Hz] Predicted [Hz]" << std::endl; - for (std::map::iterator it = doppler_measurements_map.begin(); it != doppler_measurements_map.end(); ++it) + for (auto& it : doppler_measurements_map) { try { double doppler_estimated_hz; - doppler_estimated_hz = front_end_cal.estimate_doppler_from_eph(it->first, current_TOW, lat_deg, lon_deg, altitude_m); - std::cout << " " << it->first << " " << it->second - mean_f_if_Hz << " " << doppler_estimated_hz << std::endl; + doppler_estimated_hz = front_end_cal.estimate_doppler_from_eph(it.first, current_TOW, lat_deg, lon_deg, altitude_m); + std::cout << " " << it.first << " " << it.second - mean_f_if_Hz << " " << doppler_estimated_hz << std::endl; } catch (const std::logic_error& e) { @@ -613,7 +616,7 @@ int main(int argc, char** argv) } catch (int ex) { - std::cout << " " << it->first << " " << it->second - mean_f_if_Hz << " (Eph not found)" << std::endl; + std::cout << " " << it.first << " " << it.second - mean_f_if_Hz << " (Eph not found)" << std::endl; } } diff --git a/src/utils/matlab/hybrid_observables_plot_sample.m b/src/utils/matlab/hybrid_observables_plot_sample.m index 94ce10ae6..2a8a784e5 100644 --- a/src/utils/matlab/hybrid_observables_plot_sample.m +++ b/src/utils/matlab/hybrid_observables_plot_sample.m @@ -31,7 +31,7 @@ close all; addpath('./libs'); samplingFreq = 25000000; %[Hz] channels=10; -path='/home/gnss/Documents/gnss-sdr/'; +path='/home/dmiralles/Documents/gnss-sdr/'; observables_log_path=[path 'observables.dat']; GNSS_observables= read_hybrid_observables_dump(channels,observables_log_path); diff --git a/src/utils/rinex2assist/main.cc b/src/utils/rinex2assist/main.cc index 31fcd3ebb..f23b58ed7 100644 --- a/src/utils/rinex2assist/main.cc +++ b/src/utils/rinex2assist/main.cc @@ -30,21 +30,21 @@ */ -#include "gps_ephemeris.h" #include "galileo_ephemeris.h" -#include "gps_utc_model.h" -#include "gps_iono.h" -#include "galileo_utc_model.h" #include "galileo_iono.h" -#include -#include -#include -#include +#include "galileo_utc_model.h" +#include "gps_ephemeris.h" +#include "gps_iono.h" +#include "gps_utc_model.h" #include -#include -#include #include #include +#include +#include +#include +#include +#include +#include #include #include @@ -77,68 +77,74 @@ int main(int argc, char** argv) // Uncompress if RINEX file is gzipped std::string rinex_filename(argv[1]); std::string input_filename = rinex_filename; - std::size_t found = rinex_filename.find_last_of("."); + std::size_t found = rinex_filename.find_last_of('.'); if (found != std::string::npos) { - if ((rinex_filename.substr(found + 1, found + 3).compare("gz") == 0)) + if (rinex_filename.size() >= found + 3) { - std::ifstream file(rinex_filename, std::ios_base::in | std::ios_base::binary); - if (file.fail()) + if ((rinex_filename.substr(found + 1, found + 3) == "gz")) { - std::cerr << "Could not open file " << rinex_filename << std::endl; - return 1; - } - boost::iostreams::filtering_streambuf in; - try - { - in.push(boost::iostreams::gzip_decompressor()); - } - catch (const boost::exception& e) - { - std::cerr << "Could not decompress file " << rinex_filename << std::endl; - return 1; - } - in.push(file); - std::string rinex_filename_unzipped = rinex_filename.substr(0, found); - std::ofstream output_file(rinex_filename_unzipped.c_str(), std::ios_base::out | std::ios_base::binary | std::ios_base::trunc); - if (file.fail()) - { - std::cerr << "Could not create file " << rinex_filename_unzipped << std::endl; - return 1; - } - boost::iostreams::copy(in, output_file); - input_filename = rinex_filename_unzipped; - } - if ((rinex_filename.substr(found + 1, found + 2).compare("Z") == 0)) - { - std::ifstream file(rinex_filename, std::ios_base::in | std::ios_base::binary); - if (file.fail()) - { - std::cerr << "Could not open file" << rinex_filename << std::endl; - return 1; - } - file.close(); - std::string uncompress_executable(UNCOMPRESS_EXECUTABLE); - if (!uncompress_executable.empty()) - { - // option k is not always available, so we save a copy of the original file - std::string argum = std::string("/bin/cp " + rinex_filename + " " + rinex_filename + ".aux"); - int s1 = std::system(argum.c_str()); - std::string argum2 = std::string(uncompress_executable + " -f " + rinex_filename); - int s2 = std::system(argum2.c_str()); - std::string argum3 = std::string("/bin/mv " + rinex_filename + +".aux" + " " + rinex_filename); - int s3 = std::system(argum3.c_str()); - input_filename = rinex_filename.substr(0, found); - if ((s1 != 0) or (s2 != 0) or (s3 != 0)) + std::ifstream file(rinex_filename, std::ios_base::in | std::ios_base::binary); + if (file.fail()) { - std::cerr << "Failure uncompressing file." << std::endl; + std::cerr << "Could not open file " << rinex_filename << std::endl; return 1; } + boost::iostreams::filtering_streambuf in; + try + { + in.push(boost::iostreams::gzip_decompressor()); + } + catch (const boost::exception& e) + { + std::cerr << "Could not decompress file " << rinex_filename << std::endl; + return 1; + } + in.push(file); + std::string rinex_filename_unzipped = rinex_filename.substr(0, found); + std::ofstream output_file(rinex_filename_unzipped.c_str(), std::ios_base::out | std::ios_base::binary | std::ios_base::trunc); + if (file.fail()) + { + std::cerr << "Could not create file " << rinex_filename_unzipped << std::endl; + return 1; + } + boost::iostreams::copy(in, output_file); + input_filename = rinex_filename_unzipped; } - else + } + if (rinex_filename.size() >= found + 2) + { + if ((rinex_filename.substr(found + 1, found + 2) == "Z")) { - std::cerr << "uncompress program not found." << std::endl; - return 1; + std::ifstream file(rinex_filename, std::ios_base::in | std::ios_base::binary); + if (file.fail()) + { + std::cerr << "Could not open file" << rinex_filename << std::endl; + return 1; + } + file.close(); + std::string uncompress_executable(UNCOMPRESS_EXECUTABLE); + if (!uncompress_executable.empty()) + { + // option k is not always available, so we save a copy of the original file + std::string argum = std::string("/bin/cp " + rinex_filename + " " + rinex_filename + ".aux"); + int s1 = std::system(argum.c_str()); + std::string argum2 = std::string(uncompress_executable + " -f " + rinex_filename); + int s2 = std::system(argum2.c_str()); + std::string argum3 = std::string("/bin/mv " + rinex_filename + +".aux" + " " + rinex_filename); + int s3 = std::system(argum3.c_str()); + input_filename = rinex_filename.substr(0, found); + if ((s1 != 0) or (s2 != 0) or (s3 != 0)) + { + std::cerr << "Failure uncompressing file." << std::endl; + return 1; + } + } + else + { + std::cerr << "uncompress program not found." << std::endl; + return 1; + } } } } @@ -164,7 +170,7 @@ int main(int argc, char** argv) rnffs >> hdr; // Check that it really is a RINEX navigation file - if (hdr.fileType.substr(0, 1).compare("N") != 0) + if (hdr.fileType.substr(0, 1) != "N") { std::cerr << "This is not a valid RINEX navigation file, or file not found." << std::endl; std::cerr << "No XML file will be created." << std::endl; @@ -172,7 +178,7 @@ int main(int argc, char** argv) } // Collect UTC parameters from RINEX header - if (hdr.fileSys.compare("G: (GPS)") == 0 || hdr.fileSys.compare("MIXED") == 0) + if (hdr.fileSys == "G: (GPS)" || hdr.fileSys == "MIXED") { gps_utc_model.valid = (hdr.valid > 2147483648) ? true : false; gps_utc_model.d_A1 = hdr.mapTimeCorr["GPUT"].A0; @@ -195,7 +201,7 @@ int main(int argc, char** argv) gps_iono.d_beta2 = hdr.mapIonoCorr["GPSB"].param[2]; gps_iono.d_beta3 = hdr.mapIonoCorr["GPSB"].param[3]; } - if (hdr.fileSys.compare("E: (GAL)") == 0 || hdr.fileSys.compare("MIXED") == 0) + if (hdr.fileSys == "E: (GAL)" || hdr.fileSys == "MIXED") { gal_utc_model.A0_6 = hdr.mapTimeCorr["GAUT"].A0; gal_utc_model.A1_6 = hdr.mapTimeCorr["GAUT"].A1; @@ -221,7 +227,7 @@ int main(int argc, char** argv) // Read navigation data while (rnffs >> rne) { - if (rne.satSys.compare("G") == 0 or rne.satSys.empty()) + if (rne.satSys == "G" or rne.satSys.empty()) { // Fill GPS ephemeris object Gps_Ephemeris eph; @@ -254,19 +260,19 @@ int main(int argc, char** argv) eph.d_TGD = rne.Tgd; eph.d_IODC = rne.IODC; eph.i_AODO = 0; // - eph.b_fit_interval_flag = (rne.fitint > 4) ? 1 : 0; + eph.b_fit_interval_flag = (rne.fitint > 4) ? true : false; eph.d_spare1 = 0.0; eph.d_spare2 = 0.0; eph.d_A_f0 = rne.af0; eph.d_A_f1 = rne.af1; eph.d_A_f2 = rne.af2; - eph.b_integrity_status_flag = 0; // - eph.b_alert_flag = 0; // - eph.b_antispoofing_flag = 0; // + eph.b_integrity_status_flag = false; // + eph.b_alert_flag = false; // + eph.b_antispoofing_flag = false; // eph_map[i] = eph; i++; } - if (rne.satSys.compare("E") == 0) + if (rne.satSys == "E") { // Fill Galileo ephemeris object Galileo_Ephemeris eph;