mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-13 11:40:33 +00:00
Merge branch 'next' of https://github.com/gnss-sdr/gnss-sdr into vtl_experimental
This commit is contained in:
commit
3bd0b07965
4
.github/workflows/main.yml
vendored
4
.github/workflows/main.yml
vendored
@ -42,7 +42,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: install dependencies
|
||||
run: brew install llvm && ln -s /usr/local/opt/llvm/bin/clang-format /usr/local/bin
|
||||
run: brew install clang-format && brew link clang-format
|
||||
- name: run clang-format
|
||||
run: find . -iname \*.h -o -iname \*.c -o -iname \*.cpp | xargs clang-format -style=file -i
|
||||
- name: check
|
||||
@ -54,7 +54,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: install dependencies
|
||||
run: brew install llvm pkg-config hdf5 armadillo lapack gflags glog gnuradio libmatio log4cpp pugixml protobuf && ln -s /usr/local/opt/llvm/bin/clang-tidy /usr/local/bin && ln -s /usr/local/Cellar/llvm/10.*/bin/clang-apply-replacements /usr/local/bin && cp /usr/local/Cellar/llvm/10.*/share/clang/run-clang-tidy.py /usr/local/bin && pip3 install mako
|
||||
run: brew install llvm pkg-config hdf5 armadillo lapack gflags glog gnuradio libmatio log4cpp pugixml protobuf && ln -s /usr/local/opt/llvm/bin/clang-tidy /usr/local/bin && ln -s /usr/local/Cellar/llvm/11.*/bin/clang-apply-replacements /usr/local/bin && cp /usr/local/Cellar/llvm/11.*/share/clang/run-clang-tidy.py /usr/local/bin && pip3 install mako
|
||||
- name: Prepare run
|
||||
run: cd build && cmake .. && make volk_gnsssdr_module gtest-1.10.0 core_monitor pvt_libs
|
||||
- name: run clang-tidy
|
||||
|
1
AUTHORS
1
AUTHORS
@ -51,6 +51,7 @@ David Pubill david.pubill@cttc.cat Contributor
|
||||
Fran Fabra fabra@ice.csic.es Contributor
|
||||
Gabriel Araujo gabriel.araujo.5000@gmail.com Contributor
|
||||
Gerald LaMountain gerald@gece.neu.edu Contributor
|
||||
Josh Schindehette jschindehette@geontech.com Contributor
|
||||
Leonardo Tonetto tonetto.dev@gmail.com Contributor
|
||||
Mara Branzanti mara.branzanti@gmail.com Contributor
|
||||
Marc Molina marc.molina.pena@gmail.com Contributor
|
||||
|
103
CMakeLists.txt
103
CMakeLists.txt
@ -117,6 +117,8 @@ if(CMAKE_VERSION VERSION_LESS 3.5.1)
|
||||
set(ENABLE_BENCHMARKS OFF)
|
||||
endif()
|
||||
|
||||
option(ENABLE_EXTERNAL_MATHJAX "Use MathJax from an external CDN in HTML docs" ON)
|
||||
|
||||
|
||||
################################################################################
|
||||
# GNSS-SDR version information
|
||||
@ -322,14 +324,15 @@ set(GNSSSDR_PROTOBUF_MIN_VERSION "3.0.0")
|
||||
################################################################################
|
||||
set(GNSSSDR_GFLAGS_LOCAL_VERSION "2.2.2")
|
||||
set(GNSSSDR_GLOG_LOCAL_VERSION "0.4.0")
|
||||
set(GNSSSDR_ARMADILLO_LOCAL_VERSION "9.900.x")
|
||||
set(GNSSSDR_ARMADILLO_LOCAL_VERSION "10.1.x")
|
||||
set(GNSSSDR_GTEST_LOCAL_VERSION "1.10.0")
|
||||
set(GNSSSDR_GNSS_SIM_LOCAL_VERSION "master")
|
||||
set(GNSSSDR_GPSTK_LOCAL_VERSION "3.0.0")
|
||||
set(GNSSSDR_MATIO_LOCAL_VERSION "1.5.18")
|
||||
set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.10")
|
||||
set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "3.13.0")
|
||||
set(GNSSSDR_BENCHMARK_LOCAL_VERSION "1.5.1")
|
||||
set(GNSSSDR_BENCHMARK_LOCAL_VERSION "1.5.2")
|
||||
set(GNSSSDR_MATHJAX_EXTERNAL_VERSION "2.7.7")
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS "3.0.2")
|
||||
set(GNSSSDR_GFLAGS_LOCAL_VERSION "2.2.1") # Fix for CentOS 7
|
||||
@ -1117,6 +1120,19 @@ if(NOT VOLKGNSSSDR_FOUND)
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
include(GNUInstallDirs)
|
||||
set(SUPPORTED_CPU_FEATURES_ARCH FALSE)
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
|
||||
set(SUPPORTED_CPU_FEATURES_ARCH TRUE)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
|
||||
set(SUPPORTED_CPU_FEATURES_ARCH TRUE)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
|
||||
set(SUPPORTED_CPU_FEATURES_ARCH TRUE)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64)|(AMD64|amd64)|(^i.86$)")
|
||||
set(SUPPORTED_CPU_FEATURES_ARCH TRUE)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
|
||||
set(SUPPORTED_CPU_FEATURES_ARCH TRUE)
|
||||
endif()
|
||||
if(CMAKE_VERSION VERSION_LESS 3.2)
|
||||
ExternalProject_Add(volk_gnsssdr_module
|
||||
PREFIX ${CMAKE_BINARY_DIR}/volk_gnsssdr_module
|
||||
@ -1131,20 +1147,38 @@ if(NOT VOLKGNSSSDR_FOUND)
|
||||
INSTALL_DIR ${CMAKE_BINARY_DIR}/volk_gnsssdr_module/install
|
||||
)
|
||||
else()
|
||||
ExternalProject_Add(volk_gnsssdr_module
|
||||
PREFIX ${CMAKE_BINARY_DIR}/volk_gnsssdr_module
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}/volk_gnsssdr_module/build
|
||||
CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS}
|
||||
-DCMAKE_BUILD_TYPE=$<$<CONFIG:None>:None>$<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>$<$<CONFIG:RelWithDebInfo>:RelWithDebInfo>$<$<CONFIG:MinSizeRel>:MinSizeRel>$<$<CONFIG:NoOptWithASM>:NoOptWithASM>$<$<CONFIG:Coverage>:Coverage>$<$<CONFIG:O2WithASM>:O2WithASM>$<$<CONFIG:O3WithASM>:O3WithASM>$<$<CONFIG:ASAN>:ASAN>
|
||||
DOWNLOAD_COMMAND ""
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND ""
|
||||
BUILD_COMMAND ${VOLK_GNSSSDR_BUILD_COMMAND} volk_gnsssdr_profile
|
||||
BUILD_BYPRODUCTS ${CMAKE_BINARY_DIR}/volk_gnsssdr_module/install/lib/${CMAKE_FIND_LIBRARY_PREFIXES}volk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr_profile
|
||||
INSTALL_DIR ${CMAKE_BINARY_DIR}/volk_gnsssdr_module/install
|
||||
)
|
||||
if(SUPPORTED_CPU_FEATURES_ARCH)
|
||||
ExternalProject_Add(volk_gnsssdr_module
|
||||
PREFIX ${CMAKE_BINARY_DIR}/volk_gnsssdr_module
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}/volk_gnsssdr_module/build
|
||||
CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS}
|
||||
-DCMAKE_BUILD_TYPE=$<$<CONFIG:None>:None>$<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>$<$<CONFIG:RelWithDebInfo>:RelWithDebInfo>$<$<CONFIG:MinSizeRel>:MinSizeRel>$<$<CONFIG:NoOptWithASM>:NoOptWithASM>$<$<CONFIG:Coverage>:Coverage>$<$<CONFIG:O2WithASM>:O2WithASM>$<$<CONFIG:O3WithASM>:O3WithASM>$<$<CONFIG:ASAN>:ASAN>
|
||||
DOWNLOAD_COMMAND ""
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND ""
|
||||
BUILD_COMMAND ${VOLK_GNSSSDR_BUILD_COMMAND} volk_gnsssdr_profile
|
||||
BUILD_BYPRODUCTS ${CMAKE_BINARY_DIR}/volk_gnsssdr_module/install/lib/${CMAKE_FIND_LIBRARY_PREFIXES}volk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr_profile
|
||||
${CMAKE_BINARY_DIR}/volk_gnsssdr_module/install/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}cpu_features${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
INSTALL_DIR ${CMAKE_BINARY_DIR}/volk_gnsssdr_module/install
|
||||
)
|
||||
else()
|
||||
ExternalProject_Add(volk_gnsssdr_module
|
||||
PREFIX ${CMAKE_BINARY_DIR}/volk_gnsssdr_module
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}/volk_gnsssdr_module/build
|
||||
CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS}
|
||||
-DCMAKE_BUILD_TYPE=$<$<CONFIG:None>:None>$<$<CONFIG:Debug>:Debug>$<$<CONFIG:Release>:Release>$<$<CONFIG:RelWithDebInfo>:RelWithDebInfo>$<$<CONFIG:MinSizeRel>:MinSizeRel>$<$<CONFIG:NoOptWithASM>:NoOptWithASM>$<$<CONFIG:Coverage>:Coverage>$<$<CONFIG:O2WithASM>:O2WithASM>$<$<CONFIG:O3WithASM>:O3WithASM>$<$<CONFIG:ASAN>:ASAN>
|
||||
DOWNLOAD_COMMAND ""
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND ""
|
||||
BUILD_COMMAND ${VOLK_GNSSSDR_BUILD_COMMAND} volk_gnsssdr_profile
|
||||
BUILD_BYPRODUCTS ${CMAKE_BINARY_DIR}/volk_gnsssdr_module/install/lib/${CMAKE_FIND_LIBRARY_PREFIXES}volk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
${CMAKE_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr_profile
|
||||
INSTALL_DIR ${CMAKE_BINARY_DIR}/volk_gnsssdr_module/install
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT ORC_FOUND)
|
||||
@ -1168,6 +1202,11 @@ if(NOT VOLKGNSSSDR_FOUND)
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${VOLK_GNSSSDR_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${VOLK_GNSSSDR_LIBRARIES}"
|
||||
)
|
||||
if(CMAKE_VERSION VERSION_GREATER 3.0 AND SUPPORTED_CPU_FEATURES_ARCH)
|
||||
set_target_properties(Volkgnsssdr::volkgnsssdr PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES ${CMAKE_BINARY_DIR}/volk_gnsssdr_module/install/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}cpu_features${CMAKE_STATIC_LIBRARY_SUFFIX}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 3.2)
|
||||
@ -2497,7 +2536,7 @@ endif()
|
||||
|
||||
|
||||
################################################################################
|
||||
# Doxygen - http://www.doxygen.nl (OPTIONAL, used if found)
|
||||
# Doxygen - https://www.doxygen.nl (OPTIONAL, used if found)
|
||||
################################################################################
|
||||
if(CMAKE_VERSION VERSION_LESS 3.6.9)
|
||||
find_package(Doxygen)
|
||||
@ -2505,7 +2544,7 @@ else()
|
||||
find_package(Doxygen OPTIONAL_COMPONENTS dot)
|
||||
endif()
|
||||
set_package_properties(Doxygen PROPERTIES
|
||||
URL "http://www.doxygen.nl"
|
||||
URL "https://www.doxygen.nl"
|
||||
PURPOSE "Used to generate code documentation by doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} doc'"
|
||||
TYPE OPTIONAL
|
||||
)
|
||||
@ -2526,13 +2565,28 @@ endif()
|
||||
set_package_properties(LATEX PROPERTIES
|
||||
URL "https://www.latex-project.org"
|
||||
DESCRIPTION "High-quality typesetting system"
|
||||
PURPOSE "Used to generate a PDF manual by doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} pdfmanual'"
|
||||
PURPOSE "Used to generate a PDF manual by doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} pdfmanual'."
|
||||
TYPE OPTIONAL
|
||||
)
|
||||
if(DEFINED MATHJAX2_ROOT)
|
||||
set(ENABLE_EXTERNAL_MATHJAX OFF)
|
||||
endif()
|
||||
if(ENABLE_EXTERNAL_MATHJAX AND NOT DEFINED MATHJAX2_USE_ROOT)
|
||||
set(MATHJAX2_USE_ROOT "https://cdnjs.cloudflare.com/ajax/libs/mathjax/${GNSSSDR_MATHJAX_EXTERNAL_VERSION}")
|
||||
endif()
|
||||
unset(MATHJAX2_FOUND CACHE)
|
||||
find_package(MATHJAX2)
|
||||
set_package_properties(MATHJAX2 PROPERTIES
|
||||
URL "https://www.mathjax.org"
|
||||
DESCRIPTION "Beautiful and accessible math in all browsers"
|
||||
PURPOSE "Used to generate equations in HTML docs when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} doc'."
|
||||
TYPE OPTIONAL
|
||||
)
|
||||
|
||||
if(DOXYGEN_FOUND)
|
||||
message(STATUS "Doxygen found.")
|
||||
message(STATUS " You can build the documentation with '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} doc'.")
|
||||
message(STATUS " When done, point your browser to ${CMAKE_BINARY_DIR}/html/index.html")
|
||||
message(STATUS " When done, point your browser to ${CMAKE_BINARY_DIR}/docs/html/index.html")
|
||||
if(CMAKE_VERSION VERSION_LESS 3.9.6)
|
||||
if(DOXYGEN_DOT_FOUND)
|
||||
set(HAVE_DOT "YES")
|
||||
@ -2569,10 +2623,13 @@ if(DOXYGEN_FOUND)
|
||||
endif()
|
||||
if(PDFLATEX_COMPILER)
|
||||
set(GENERATE_PDF_DOCUMENTATION "YES")
|
||||
set(GNSSSDR_USE_MATHJAX "NO")
|
||||
else()
|
||||
set(GENERATE_PDF_DOCUMENTATION "NO")
|
||||
endif()
|
||||
if(MATHJAX2_FOUND)
|
||||
set(GNSSSDR_USE_MATHJAX "YES")
|
||||
else()
|
||||
set(GNSSSDR_USE_MATHJAX "NO")
|
||||
endif()
|
||||
configure_file(${CMAKE_SOURCE_DIR}/docs/doxygen/Doxyfile.in
|
||||
${CMAKE_BINARY_DIR}/docs/doxygen/Doxyfile
|
||||
@ -2613,7 +2670,7 @@ if(DOXYGEN_FOUND)
|
||||
else()
|
||||
message(STATUS " Doxygen has not been found in your system.")
|
||||
message(STATUS " You can get nice code documentation by using it!")
|
||||
message(STATUS " Get it from http://www.doxygen.nl/download.html")
|
||||
message(STATUS " Get it from https://www.doxygen.nl/download.html")
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU")
|
||||
if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat")
|
||||
message(STATUS " or simply by doing 'sudo yum install doxygen-latex'.")
|
||||
@ -2625,6 +2682,7 @@ else()
|
||||
message(STATUS " or simply by doing 'sudo port install doxygen +docs', if you are using Macports,")
|
||||
message(STATUS " or 'brew cask install mactex', then restart Terminal and do 'brew install graphviz doxygen', if you use Homebrew.")
|
||||
endif()
|
||||
set(ENABLE_EXTERNAL_MATHJAX OFF)
|
||||
endif()
|
||||
|
||||
|
||||
@ -3141,6 +3199,7 @@ add_feature_info(ENABLE_OWN_GPSTK ENABLE_OWN_GPSTK "Forces the downloading and b
|
||||
add_feature_info(ENABLE_GNSS_SIM_INSTALL ENABLE_GNSS_SIM_INSTALL "Enables downloading and building of gnss-sim.")
|
||||
add_feature_info(ENABLE_INSTALL_TESTS ENABLE_INSTALL_TESTS "Install test binaries when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} install'.")
|
||||
add_feature_info(ENABLE_BENCHMARKS ENABLE_BENCHMARKS "Enables building of code snippet benchmarks.")
|
||||
add_feature_info(ENABLE_EXTERNAL_MATHJAX ENABLE_EXTERNAL_MATHJAX "Use MathJax from an external CDN in HTML docs when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} doc'.")
|
||||
|
||||
message(STATUS "")
|
||||
message(STATUS "***************************************")
|
||||
|
208
LICENSES/Apache-2.0.txt
Normal file
208
LICENSES/Apache-2.0.txt
Normal file
@ -0,0 +1,208 @@
|
||||
Apache License
|
||||
|
||||
Version 2.0, January 2004
|
||||
|
||||
http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION,
|
||||
AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction, and distribution
|
||||
as defined by Sections 1 through 9 of this document.
|
||||
|
||||
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright
|
||||
owner that is granting the License.
|
||||
|
||||
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all other entities
|
||||
that control, are controlled by, or are under common control with that entity.
|
||||
For the purposes of this definition, "control" means (i) the power, direct
|
||||
or indirect, to cause the direction or management of such entity, whether
|
||||
by contract or otherwise, or (ii) ownership of fifty percent (50%) or more
|
||||
of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions
|
||||
granted by this License.
|
||||
|
||||
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications, including
|
||||
but not limited to software source code, documentation source, and configuration
|
||||
files.
|
||||
|
||||
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical transformation
|
||||
or translation of a Source form, including but not limited to compiled object
|
||||
code, generated documentation, and conversions to other media types.
|
||||
|
||||
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or Object form,
|
||||
made available under the License, as indicated by a copyright notice that
|
||||
is included in or attached to the work (an example is provided in the Appendix
|
||||
below).
|
||||
|
||||
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object form,
|
||||
that is based on (or derived from) the Work and for which the editorial revisions,
|
||||
annotations, elaborations, or other modifications represent, as a whole, an
|
||||
original work of authorship. For the purposes of this License, Derivative
|
||||
Works shall not include works that remain separable from, or merely link (or
|
||||
bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
||||
|
||||
|
||||
|
||||
"Contribution" shall mean any work of authorship, including the original version
|
||||
of the Work and any modifications or additions to that Work or Derivative
|
||||
Works thereof, that is intentionally submitted to Licensor for inclusion in
|
||||
the Work by the copyright owner or by an individual or Legal Entity authorized
|
||||
to submit on behalf of the copyright owner. For the purposes of this definition,
|
||||
"submitted" means any form of electronic, verbal, or written communication
|
||||
sent to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems, and
|
||||
issue tracking systems that are managed by, or on behalf of, the Licensor
|
||||
for the purpose of discussing and improving the Work, but excluding communication
|
||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
||||
owner as "Not a Contribution."
|
||||
|
||||
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
|
||||
of whom a Contribution has been received by Licensor and subsequently incorporated
|
||||
within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of this
|
||||
License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
|
||||
no-charge, royalty-free, irrevocable copyright license to reproduce, prepare
|
||||
Derivative Works of, publicly display, publicly perform, sublicense, and distribute
|
||||
the Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of this License,
|
||||
each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
|
||||
no-charge, royalty-free, irrevocable (except as stated in this section) patent
|
||||
license to make, have made, use, offer to sell, sell, import, and otherwise
|
||||
transfer the Work, where such license applies only to those patent claims
|
||||
licensable by such Contributor that are necessarily infringed by their Contribution(s)
|
||||
alone or by combination of their Contribution(s) with the Work to which such
|
||||
Contribution(s) was submitted. If You institute patent litigation against
|
||||
any entity (including a cross-claim or counterclaim in a lawsuit) alleging
|
||||
that the Work or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses granted to You
|
||||
under this License for that Work shall terminate as of the date such litigation
|
||||
is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the Work or
|
||||
Derivative Works thereof in any medium, with or without modifications, and
|
||||
in Source or Object form, provided that You meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or Derivative Works a copy
|
||||
of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices stating that
|
||||
You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works that You distribute,
|
||||
all copyright, patent, trademark, and attribution notices from the Source
|
||||
form of the Work, excluding those notices that do not pertain to any part
|
||||
of the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its distribution,
|
||||
then any Derivative Works that You distribute must include a readable copy
|
||||
of the attribution notices contained within such NOTICE file, excluding those
|
||||
notices that do not pertain to any part of the Derivative Works, in at least
|
||||
one of the following places: within a NOTICE text file distributed as part
|
||||
of the Derivative Works; within the Source form or documentation, if provided
|
||||
along with the Derivative Works; or, within a display generated by the Derivative
|
||||
Works, if and wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and do not modify the
|
||||
License. You may add Your own attribution notices within Derivative Works
|
||||
that You distribute, alongside or as an addendum to the NOTICE text from the
|
||||
Work, provided that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and may provide
|
||||
additional or different license terms and conditions for use, reproduction,
|
||||
or distribution of Your modifications, or for any such Derivative Works as
|
||||
a whole, provided Your use, reproduction, and distribution of the Work otherwise
|
||||
complies with the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise, any
|
||||
Contribution intentionally submitted for inclusion in the Work by You to the
|
||||
Licensor shall be under the terms and conditions of this License, without
|
||||
any additional terms or conditions. Notwithstanding the above, nothing herein
|
||||
shall supersede or modify the terms of any separate license agreement you
|
||||
may have executed with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade names,
|
||||
trademarks, service marks, or product names of the Licensor, except as required
|
||||
for reasonable and customary use in describing the origin of the Work and
|
||||
reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to
|
||||
in writing, Licensor provides the Work (and each Contributor provides its
|
||||
Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied, including, without limitation, any warranties
|
||||
or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness
|
||||
of using or redistributing the Work and assume any risks associated with Your
|
||||
exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory, whether
|
||||
in tort (including negligence), contract, or otherwise, unless required by
|
||||
applicable law (such as deliberate and grossly negligent acts) or agreed to
|
||||
in writing, shall any Contributor be liable to You for damages, including
|
||||
any direct, indirect, special, incidental, or consequential damages of any
|
||||
character arising as a result of this License or out of the use or inability
|
||||
to use the Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all other commercial
|
||||
damages or losses), even if such Contributor has been advised of the possibility
|
||||
of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing the Work
|
||||
or Derivative Works thereof, You may choose to offer, and charge a fee for,
|
||||
acceptance of support, warranty, indemnity, or other liability obligations
|
||||
and/or rights consistent with this License. However, in accepting such obligations,
|
||||
You may act only on Your own behalf and on Your sole responsibility, not on
|
||||
behalf of any other Contributor, and only if You agree to indemnify, defend,
|
||||
and hold each Contributor harmless for any liability incurred by, or claims
|
||||
asserted against, such Contributor by reason of your accepting any such warranty
|
||||
or additional liability. END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following boilerplate
|
||||
notice, with the fields enclosed by brackets "[]" replaced with your own identifying
|
||||
information. (Don't include the brackets!) The text should be enclosed in
|
||||
the appropriate comment syntax for the file format. We also recommend that
|
||||
a file or class name and description of purpose be included on the same "printed
|
||||
page" as the copyright notice for easier identification within third-party
|
||||
archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
See the License for the specific language governing permissions and
|
||||
|
||||
limitations under the License.
|
@ -292,9 +292,9 @@ $ sudo apt-get install libblas-dev liblapack-dev # For Debian/Ubuntu/Linux
|
||||
$ sudo yum install lapack-devel blas-devel # For Fedora/CentOS/RHEL
|
||||
$ sudo zypper install lapack-devel blas-devel # For OpenSUSE
|
||||
$ sudo pacman -S blas lapack # For Arch Linux
|
||||
$ wget https://sourceforge.net/projects/arma/files/armadillo-9.880.1.tar.xz
|
||||
$ tar xvfz armadillo-9.880.1.tar.xz
|
||||
$ cd armadillo-9.880.1
|
||||
$ wget http://sourceforge.net/projects/arma/files/armadillo-10.1.0.tar.xz
|
||||
$ tar xvfz armadillo-10.1.0.tar.xz
|
||||
$ cd armadillo-10.1.0
|
||||
$ cmake .
|
||||
$ make
|
||||
$ sudo make install
|
||||
|
@ -26,6 +26,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED GLOG_ROOT)
|
||||
set(GLOG_ROOT /usr /usr/local)
|
||||
endif()
|
||||
|
@ -13,6 +13,11 @@
|
||||
if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
# if GR_REQUIRED_COMPONENTS is not defined, it will be set to the following list
|
||||
|
@ -21,6 +21,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_GTEST gtest)
|
||||
|
||||
if(NOT GTEST_DIR)
|
||||
|
@ -15,6 +15,10 @@
|
||||
# Gnuradio::dbfcttc
|
||||
#
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_GR_DBFCTTC gr-dbfcttc)
|
||||
|
||||
if(NOT GRDBFCTTC_ROOT)
|
||||
|
@ -15,6 +15,10 @@
|
||||
# Gnuradio::gn3s
|
||||
#
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_GR_GN3S gr-gn3s)
|
||||
|
||||
if(NOT GRGN3S_ROOT)
|
||||
|
@ -15,6 +15,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_IIO gnuradio-iio)
|
||||
|
||||
if(NOT GRIIO_ROOT)
|
||||
|
@ -33,6 +33,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(GROSMOSDR_PKG gnuradio-osmosdr)
|
||||
|
||||
if(NOT GROSMOSDR_ROOT)
|
||||
|
@ -15,6 +15,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_LIBAD9361 libad9361)
|
||||
|
||||
if(NOT LIBAD9361_ROOT)
|
||||
|
@ -15,6 +15,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_LIBIIO libiio)
|
||||
|
||||
if(NOT LIBIIO_ROOT)
|
||||
|
@ -21,6 +21,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_LOG4CPP log4cpp QUIET)
|
||||
|
||||
if(LOG4CPP_INCLUDE_DIR)
|
||||
|
51
cmake/Modules/FindMATHJAX2.cmake
Normal file
51
cmake/Modules/FindMATHJAX2.cmake
Normal file
@ -0,0 +1,51 @@
|
||||
# Copyright (C) 2011-2020 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# GNSS-SDR is a software-defined Global Navigation Satellite Systems receiver
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
#
|
||||
#
|
||||
# Find MathJax package (version 2).
|
||||
#
|
||||
# A hint can be provided by defining MATHJAX2_ROOT
|
||||
# (will succeed if ${MATHJAX2_ROOT}/MathJax.js is found).
|
||||
#
|
||||
# Alternatively, a path can be provided in MATHJAX2_USE_ROOT
|
||||
# so that ${MATHJAX2_USE_ROOT}/MathJax.js is used without
|
||||
# checking its existence.
|
||||
# This path could be a URL, an absolute local path or
|
||||
# a path relative to the generated HTML folder.
|
||||
#
|
||||
# Note that version 2 and 3 are incompatible
|
||||
# and doxygen requires version 2.
|
||||
# See: https://github.com/doxygen/doxygen/issues/7346
|
||||
#
|
||||
# Defined variables:
|
||||
# - MATHJAX2_FOUND - True if MathJax found
|
||||
# - MATHJAX2_JS_PATH - Path to MathJax.js file
|
||||
# - MATHJAX2_PATH - Path to the MathJax root directory
|
||||
|
||||
|
||||
if(DEFINED MATHJAX2_USE_ROOT)
|
||||
set(MATHJAX2_FOUND TRUE)
|
||||
set(MATHJAX2_PATH "${MATHJAX2_USE_ROOT}/")
|
||||
set(MATHJAX2_JS_PATH "${MATHJAX2_USE_ROOT}/MathJax.js")
|
||||
else()
|
||||
find_file(MATHJAX2_JS_PATH
|
||||
NAMES
|
||||
MathJax.js
|
||||
PATHS
|
||||
"${MATHJAX2_ROOT}"
|
||||
/usr/share/mathjax2/
|
||||
/usr/share/javascript/mathjax/
|
||||
/usr/local/share/javascript/mathjax/
|
||||
)
|
||||
|
||||
get_filename_component(MATHJAX2_PATH ${MATHJAX2_JS_PATH} DIRECTORY)
|
||||
endif()
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(MATHJAX2 DEFAULT_MSG MATHJAX2_JS_PATH)
|
||||
|
||||
mark_as_advanced(MATHJAX2_JS_PATH)
|
@ -10,6 +10,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_ORC "orc-0.4 > 0.4.22")
|
||||
|
||||
if(NOT ORC_ROOT)
|
||||
|
@ -27,6 +27,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_PCAP libpcap QUIET)
|
||||
|
||||
if(NOT PCAP_ROOT)
|
||||
|
@ -22,6 +22,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_PUGIXML pugixml QUIET)
|
||||
|
||||
if(NOT PUGIXML_ROOT)
|
||||
|
@ -15,6 +15,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_TELEORBIT teleorbit QUIET)
|
||||
|
||||
if(NOT TELEORBIT_ROOT)
|
||||
|
@ -18,6 +18,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_UHD uhd)
|
||||
|
||||
if(NOT UHD_ROOT)
|
||||
|
@ -18,6 +18,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_VOLK volk QUIET)
|
||||
|
||||
if(NOT VOLK_ROOT)
|
||||
|
@ -19,6 +19,10 @@ if(NOT COMMAND feature_summary)
|
||||
include(FeatureSummary)
|
||||
endif()
|
||||
|
||||
if(NOT PKG_CONFIG_FOUND)
|
||||
include(FindPkgConfig)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(PC_VOLK_GNSSSDR QUIET volk_gnsssdr)
|
||||
|
||||
if(NOT VOLKGNSSSDR_ROOT)
|
||||
|
@ -7,7 +7,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR ARM)
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
|
||||
if(MINGW OR CYGWIN OR WIN32)
|
||||
set(UTIL_SEARCH_CMD where)
|
||||
|
@ -7,7 +7,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR ARM)
|
||||
set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
|
||||
if(MINGW OR CYGWIN OR WIN32)
|
||||
set(UTIL_SEARCH_CMD where)
|
||||
|
89
conf/gnss-sdr_GPS_L1_monitor.conf
Normal file
89
conf/gnss-sdr_GPS_L1_monitor.conf
Normal file
@ -0,0 +1,89 @@
|
||||
; This is a GNSS-SDR configuration file
|
||||
; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/
|
||||
; SPDX-License-Identifier: GPL-3.0-or-later
|
||||
; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors)
|
||||
|
||||
[GNSS-SDR]
|
||||
|
||||
;######### GLOBAL OPTIONS ##################
|
||||
GNSS-SDR.internal_fs_sps=2000000
|
||||
|
||||
;######### SIGNAL_SOURCE CONFIG ############
|
||||
SignalSource.implementation=File_Signal_Source
|
||||
SignalSource.filename=/tmp/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat
|
||||
SignalSource.item_type=ishort
|
||||
SignalSource.sampling_frequency=4000000
|
||||
SignalSource.freq=1575420000
|
||||
SignalSource.samples=0
|
||||
SignalSource.enable_throttle_control=true
|
||||
|
||||
;######### SIGNAL_CONDITIONER CONFIG ############
|
||||
SignalConditioner.implementation=Signal_Conditioner
|
||||
|
||||
;######### DATA_TYPE_ADAPTER CONFIG ############
|
||||
DataTypeAdapter.implementation=Ishort_To_Complex
|
||||
|
||||
;######### INPUT_FILTER CONFIG ############
|
||||
InputFilter.implementation=Pass_Through
|
||||
InputFilter.item_type=gr_complex
|
||||
|
||||
;######### RESAMPLER CONFIG ############
|
||||
Resampler.implementation=Direct_Resampler
|
||||
Resampler.sample_freq_in=4000000
|
||||
Resampler.sample_freq_out=2000000
|
||||
Resampler.item_type=gr_complex
|
||||
|
||||
;######### CHANNELS GLOBAL CONFIG ############
|
||||
Channels_1C.count=3
|
||||
Channels.in_acquisition=1
|
||||
Channel.signal=1C
|
||||
Channel0.satellite=1
|
||||
Channel1.satellite=11
|
||||
Channel2.satellite=17
|
||||
|
||||
;######### ACQUISITION GLOBAL CONFIG ############
|
||||
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
|
||||
Acquisition_1C.item_type=gr_complex
|
||||
Acquisition_1C.threshold=0.008
|
||||
Acquisition_1C.doppler_max=10000
|
||||
Acquisition_1C.doppler_step=250
|
||||
|
||||
;######### TRACKING GLOBAL CONFIG ############
|
||||
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
|
||||
Tracking_1C.item_type=gr_complex
|
||||
Tracking_1C.pll_bw_hz=40.0;
|
||||
Tracking_1C.dll_bw_hz=4.0;
|
||||
|
||||
;######### TELEMETRY DECODER GPS CONFIG ############
|
||||
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
|
||||
|
||||
;######### OBSERVABLES CONFIG ############
|
||||
Observables.implementation=Hybrid_Observables
|
||||
|
||||
;######### PVT CONFIG ############
|
||||
PVT.implementation=RTKLIB_PVT
|
||||
PVT.averaging_depth=100
|
||||
PVT.flag_averaging=true
|
||||
PVT.output_rate_ms=10
|
||||
PVT.display_rate_ms=500
|
||||
PVT.enable_monitor=true
|
||||
PVT.monitor_client_addresses=127.0.0.1
|
||||
PVT.monitor_udp_port=1234
|
||||
|
||||
;######### MONITOR CONFIG ############
|
||||
Monitor.enable_monitor=true
|
||||
Monitor.decimation_factor=1
|
||||
Monitor.client_addresses=127.0.0.1
|
||||
Monitor.udp_port=1233
|
||||
|
||||
;######### ACQUISITION MONITOR CONFIG ############
|
||||
AcquisitionMonitor.enable_monitor=true
|
||||
AcquisitionMonitor.decimation_factor=1
|
||||
AcquisitionMonitor.client_addresses=127.0.0.1
|
||||
AcquisitionMonitor.udp_port=1231
|
||||
|
||||
;######### TRACKING MONITOR CONFIG ############
|
||||
TrackingMonitor.enable_monitor=true
|
||||
TrackingMonitor.decimation_factor=1
|
||||
TrackingMonitor.client_addresses=127.0.0.1
|
||||
TrackingMonitor.udp_port=1232
|
82
conf/gnss-sdr_GPS_L1_udp_with_monitor.conf
Normal file
82
conf/gnss-sdr_GPS_L1_udp_with_monitor.conf
Normal file
@ -0,0 +1,82 @@
|
||||
; This is a GNSS-SDR configuration file
|
||||
; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/
|
||||
; SPDX-License-Identifier: GPL-3.0-or-later
|
||||
; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors)
|
||||
|
||||
[GNSS-SDR]
|
||||
|
||||
;######### GLOBAL OPTIONS ##################
|
||||
;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [Sps]
|
||||
GNSS-SDR.internal_fs_sps=4000000
|
||||
|
||||
;######### SIGNAL_SOURCE CONFIG ############
|
||||
SignalSource.implementation=Custom_UDP_Signal_Source
|
||||
SignalSource.item_type=gr_complex
|
||||
SignalSource.origin_address=127.0.0.1
|
||||
SignalSource.capture_device=lo
|
||||
SignalSource.port=1230
|
||||
;SignalSource.payload_bytes=1472 # Not used! Size is retrieved from UDP Packet
|
||||
SignalSource.sample_type=cfloat
|
||||
SignalSource.IQ_swap=true
|
||||
SignalSource.RF_channels=1
|
||||
SignalSource.channels_in_udp=1
|
||||
SignalSource.dump=false
|
||||
SignalSource.dump_filename=./signal_source.dat
|
||||
|
||||
;######### SIGNAL_CONDITIONER CONFIG ############
|
||||
SignalConditioner.implementation=Pass_Through
|
||||
|
||||
;######### CHANNELS GLOBAL CONFIG ############
|
||||
Channels_1C.count=3
|
||||
Channels.in_acquisition=1
|
||||
Channel.signal=1C
|
||||
Channel0.satellite=1
|
||||
Channel1.satellite=11
|
||||
Channel2.satellite=17
|
||||
|
||||
;######### ACQUISITION GLOBAL CONFIG ############
|
||||
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
|
||||
Acquisition_1C.item_type=gr_complex
|
||||
Acquisition_1C.threshold=0.008
|
||||
Acquisition_1C.doppler_max=10000
|
||||
Acquisition_1C.doppler_step=250
|
||||
|
||||
;######### TRACKING GLOBAL CONFIG ############
|
||||
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
|
||||
Tracking_1C.item_type=gr_complex
|
||||
Tracking_1C.pll_bw_hz=40.0;
|
||||
Tracking_1C.dll_bw_hz=4.0;
|
||||
|
||||
;######### TELEMETRY DECODER GPS CONFIG ############
|
||||
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
|
||||
|
||||
;######### OBSERVABLES CONFIG ############
|
||||
Observables.implementation=Hybrid_Observables
|
||||
|
||||
;######### PVT CONFIG ############
|
||||
PVT.implementation=RTKLIB_PVT
|
||||
PVT.averaging_depth=100
|
||||
PVT.flag_averaging=true
|
||||
PVT.output_rate_ms=10
|
||||
PVT.display_rate_ms=500
|
||||
PVT.enable_monitor=true
|
||||
PVT.monitor_client_addresses=127.0.0.1
|
||||
PVT.monitor_udp_port=1234
|
||||
|
||||
;######### MONITOR CONFIG ############
|
||||
Monitor.enable_monitor=true
|
||||
Monitor.decimation_factor=1
|
||||
Monitor.client_addresses=127.0.0.1
|
||||
Monitor.udp_port=1233
|
||||
|
||||
;######### ACQUISITION MONITOR CONFIG ############
|
||||
AcquisitionMonitor.enable_monitor=true
|
||||
AcquisitionMonitor.decimation_factor=1
|
||||
AcquisitionMonitor.client_addresses=127.0.0.1
|
||||
AcquisitionMonitor.udp_port=1231
|
||||
|
||||
;######### TRACKING MONITOR CONFIG ############
|
||||
TrackingMonitor.enable_monitor=true
|
||||
TrackingMonitor.decimation_factor=1
|
||||
TrackingMonitor.client_addresses=127.0.0.1
|
||||
TrackingMonitor.udp_port=1232
|
@ -15,12 +15,20 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc
|
||||
- Fixed bug in acquisition detection when the configuration parameter
|
||||
`Acquisition_XX.threshold` was set but `Acquisition_XX.pfa` was not, causing
|
||||
false locks.
|
||||
- Fixed anti-jamming filters: `Pulse_Blanking_Filter`, `Notch_Filter` and
|
||||
`Notch_Filter_Lite`.
|
||||
|
||||
### Improvements in Efficiency:
|
||||
|
||||
- Faster `SignalConditioner` block when its implementation is set to
|
||||
`Pass_Through`.
|
||||
|
||||
### Improvements in Maintainability:
|
||||
|
||||
- Added a common shared pointer definition `gnss_shared_ptr`, which allows to
|
||||
handle the `boost::shared_ptr` to `std::shared_ptr` transition in GNU Radio
|
||||
3.9 API more nicely.
|
||||
|
||||
### Improvements in Portability:
|
||||
|
||||
- Fixed `-DENABLE_OWN_GLOG=ON` building option when gflags is installed and it
|
||||
@ -31,6 +39,15 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc
|
||||
- Replaced `git://` by `https://` as the used protocol when downloading Gflags,
|
||||
so it can work through firewalls requiring authentication.
|
||||
- Fixed static linking of the matio library when downloaded and built by CMake.
|
||||
- Improved CPU feature detection by switching to Google's
|
||||
[cpu_features](https://github.com/google/cpu_features) library: The
|
||||
`volk_gnsssdr` library had its own CPU feature detection methods, which were
|
||||
not totally reliable and difficult to implement across compilers and OSes.
|
||||
This is now handled by the `cpu_features` library, thus building upon that
|
||||
expertise. Since that library has higher dependency version requirements than
|
||||
GNSS-SDR, the old method is still used in old development environments. No
|
||||
extra dependency is needed. This change is transparent to the user, since
|
||||
everything is managed by the CMake scripts.
|
||||
- Fix building with `-DENABLE_CUDA=ON` for blocks implemented with CUDA.
|
||||
|
||||
### Improvements in Usability:
|
||||
@ -51,6 +68,14 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc
|
||||
- The `Custom_UDP_Signal_Source` implementation now accepts
|
||||
`SignalSource.sample_type=cfloat`, in addition to the existing 4 and 8-bit
|
||||
length sample types.
|
||||
- Fixed the `obsdiff` and `rinex2assist` utilities when installed if they were
|
||||
built with a locally downloaded version of GPSTk.
|
||||
- The generated HTML documentation now makes use of the Doxygen grouping
|
||||
feature.
|
||||
- Improved rendering of equations in HTML documentation generated by Doxygen.
|
||||
Make use of MathJax for equation rendering. Added new building option
|
||||
`ENABLE_EXTERNAL_MATHJAX`, set to `ON` by default. If set to `OFF`, it allows
|
||||
using a local installation of MathJax 2.
|
||||
|
||||
|
||||
|
||||
@ -146,6 +171,7 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc
|
||||
processed (e.g., `GNSS-SDR.Galileo_banned_prns=14,18` since Galileo E14 and
|
||||
E18 satellites are not usable for PVT). Satellites on those lists will never
|
||||
be assigned to a processing channel.
|
||||
- Added acquisition and tracking monitors, with configuration examples.
|
||||
- Added a Matlab script to quantize the input signal with a given number of bits
|
||||
per sample.
|
||||
- Fixed the building option `-DENABLE_LOG=OFF`, which strips internal logging
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -157,7 +157,7 @@ You can create the documentation by doing:
|
||||
$ make doc
|
||||
\endverbatim
|
||||
|
||||
from the <tt>gnss-sdr/build</tt> folder. In both cases, <a href="http://www.doxygen.nl/" target="_blank">Doxygen</a> will generate HTML documentation that can be
|
||||
from the <tt>gnss-sdr/build</tt> folder. In both cases, <a href="https://www.doxygen.nl/" target="_blank">Doxygen</a> will generate HTML documentation that can be
|
||||
retrieved pointing your browser of preference to <tt>gnss-sdr/docs/html/index.html</tt>.
|
||||
|
||||
There are two more extra targets available. From the <tt>gnss-sdr/build</tt> folder:
|
||||
|
@ -32,6 +32,13 @@
|
||||
#include <map> // for map
|
||||
#include <string> // for string
|
||||
|
||||
/** \addtogroup PVT
|
||||
* Computation of Position, Velocity and Time from GNSS observables.
|
||||
* \{ */
|
||||
/** \addtogroup PVT_adapters pvt_adapters
|
||||
* Wrap GNU Radio PVT solvers with a PvtInterface
|
||||
* \{ */
|
||||
|
||||
class ConfigurationInterface;
|
||||
class Galileo_Almanac;
|
||||
class Galileo_Ephemeris;
|
||||
@ -99,4 +106,6 @@ private:
|
||||
unsigned int out_streams_;
|
||||
};
|
||||
|
||||
#endif
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_RTKLIB_PVT_H
|
||||
|
@ -50,6 +50,11 @@ if(GNURADIO_USES_STD_POINTERS)
|
||||
)
|
||||
endif()
|
||||
|
||||
target_include_directories(pvt_gr_blocks
|
||||
PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||
)
|
||||
|
||||
if(USE_GENERIC_LAMBDAS)
|
||||
set(has_generic_lambdas HAS_GENERIC_LAMBDA=1)
|
||||
set(no_has_generic_lambdas HAS_GENERIC_LAMBDA=0)
|
||||
|
@ -20,6 +20,7 @@
|
||||
#ifndef GNSS_SDR_RTKLIB_PVT_GS_H
|
||||
#define GNSS_SDR_RTKLIB_PVT_GS_H
|
||||
|
||||
#include "gnss_block_interface.h"
|
||||
#include "gnss_synchro.h"
|
||||
#include "rtklib.h"
|
||||
#include <boost/date_time/gregorian/gregorian.hpp>
|
||||
@ -36,10 +37,13 @@
|
||||
#include <string> // for string
|
||||
#include <sys/types.h> // for key_t
|
||||
#include <vector> // for vector
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
#else
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#endif
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_gnuradio_blocks pvt_gr_blocks
|
||||
* GNU Radio blocks for the computation of PVT solutions.
|
||||
* \{ */
|
||||
|
||||
|
||||
class Beidou_Dnav_Almanac;
|
||||
class Beidou_Dnav_Ephemeris;
|
||||
@ -58,11 +62,7 @@ class Rtcm_Printer;
|
||||
class Rtklib_Solver;
|
||||
class rtklib_pvt_gs;
|
||||
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
using rtklib_pvt_gs_sptr = std::shared_ptr<rtklib_pvt_gs>;
|
||||
#else
|
||||
using rtklib_pvt_gs_sptr = boost::shared_ptr<rtklib_pvt_gs>;
|
||||
#endif
|
||||
using rtklib_pvt_gs_sptr = gnss_shared_ptr<rtklib_pvt_gs>;
|
||||
|
||||
rtklib_pvt_gs_sptr rtklib_make_pvt_gs(uint32_t nchannels,
|
||||
const Pvt_Conf& conf_,
|
||||
@ -270,4 +270,7 @@ private:
|
||||
bool d_rtcm_enabled;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_RTKLIB_PVT_GS_H
|
||||
|
@ -26,6 +26,12 @@
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_libs
|
||||
* \{ */
|
||||
|
||||
|
||||
class Pvt_Solution;
|
||||
|
||||
/*!
|
||||
@ -49,4 +55,7 @@ private:
|
||||
bool first_pos;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GEOJSON_PRINTER_H
|
||||
|
@ -26,6 +26,12 @@
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_libs
|
||||
* \{ */
|
||||
|
||||
|
||||
class Pvt_Solution;
|
||||
|
||||
/*!
|
||||
@ -50,4 +56,7 @@ private:
|
||||
bool positions_printed;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GPX_PRINTER_H
|
||||
|
@ -25,6 +25,12 @@
|
||||
#include <fstream> // for ofstream
|
||||
#include <string>
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_libs
|
||||
* \{ */
|
||||
|
||||
|
||||
class Pvt_Solution;
|
||||
|
||||
/*!
|
||||
@ -52,4 +58,7 @@ private:
|
||||
bool positions_printed;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_KML_PRINTER_H
|
||||
|
@ -23,6 +23,12 @@
|
||||
#include <boost/serialization/nvp.hpp>
|
||||
#include <cstdint>
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_libs
|
||||
* \{ */
|
||||
|
||||
|
||||
/*!
|
||||
* \brief This class contains parameters and outputs of the PVT block
|
||||
*/
|
||||
@ -131,4 +137,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_MONITOR_PVT_H
|
||||
|
@ -28,6 +28,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_libs
|
||||
* \{ */
|
||||
|
||||
|
||||
#if USE_BOOST_ASIO_IO_CONTEXT
|
||||
using b_io_context = boost::asio::io_context;
|
||||
#else
|
||||
@ -50,4 +56,6 @@ private:
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_MONITOR_PVT_UDP_SINK_H
|
||||
|
@ -30,6 +30,12 @@
|
||||
#include <memory> // for shared_ptr
|
||||
#include <string> // for string
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_libs
|
||||
* \{ */
|
||||
|
||||
|
||||
class Rtklib_Solver;
|
||||
|
||||
/*!
|
||||
@ -82,4 +88,7 @@ private:
|
||||
bool d_flag_nmea_output_file;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_NMEA_PRINTER_H
|
||||
|
@ -24,6 +24,12 @@
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_libs
|
||||
* \{ */
|
||||
|
||||
|
||||
class Pvt_Conf
|
||||
{
|
||||
public:
|
||||
@ -81,4 +87,7 @@ public:
|
||||
bool dump_mat;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_PVT_CONF_H
|
||||
|
@ -25,6 +25,11 @@
|
||||
#include <array>
|
||||
#include <deque>
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_libs
|
||||
* \{ */
|
||||
|
||||
|
||||
/*!
|
||||
* \brief Base class for a PVT solution
|
||||
@ -120,4 +125,7 @@ private:
|
||||
bool d_flag_averaging;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_PVT_SOLUTION_H
|
||||
|
@ -49,6 +49,13 @@
|
||||
#include <sstream> // for stringstream
|
||||
#include <string> // for string
|
||||
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_libs
|
||||
* \{ */
|
||||
|
||||
|
||||
class Beidou_Dnav_Ephemeris;
|
||||
class Beidou_Dnav_Iono;
|
||||
class Beidou_Dnav_Utc_Model;
|
||||
@ -906,4 +913,6 @@ inline std::string Rinex_Printer::asString(const X x) const
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_RINEX_PRINTER_H
|
||||
|
@ -48,6 +48,12 @@
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_libs
|
||||
* \{ */
|
||||
|
||||
|
||||
#if USE_BOOST_ASIO_IO_CONTEXT
|
||||
using b_io_context = boost::asio::io_context;
|
||||
#else
|
||||
@ -1466,4 +1472,7 @@ private:
|
||||
int32_t set_DF420(const Gnss_Synchro& gnss_synchro);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_RTCM_H
|
||||
|
@ -29,6 +29,12 @@
|
||||
#include <memory> // std::shared_ptr
|
||||
#include <string>
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_libs
|
||||
* \{ */
|
||||
|
||||
|
||||
class Galileo_Ephemeris;
|
||||
class Glonass_Gnav_Ephemeris;
|
||||
class Glonass_Gnav_Utc_Model;
|
||||
@ -161,4 +167,7 @@ private:
|
||||
bool d_rtcm_file_dump;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_RTCM_PRINTER_H
|
||||
|
@ -62,6 +62,12 @@
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_libs pvt_libs
|
||||
* Library for the computation of PVT solutions.
|
||||
* \{ */
|
||||
|
||||
|
||||
/*!
|
||||
* \brief This class implements a PVT solution based on RTKLIB
|
||||
@ -121,4 +127,7 @@ private:
|
||||
bool d_flag_dump_mat_enabled;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_RTKLIB_SOLVER_H
|
||||
|
@ -27,6 +27,12 @@
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
/** \addtogroup PVT
|
||||
* \{ */
|
||||
/** \addtogroup PVT_libs
|
||||
* \{ */
|
||||
|
||||
|
||||
/*!
|
||||
* \brief This class implements serialization and deserialization of
|
||||
* Monitor_Pvt objects using Protocol Buffers.
|
||||
@ -152,4 +158,7 @@ private:
|
||||
gnss_sdr::MonitorPvt monitor_{};
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_SERDES_MONITOR_PVT_H
|
||||
|
@ -34,6 +34,11 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
@ -172,4 +177,7 @@ private:
|
||||
unsigned int out_streams_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_BEIDOU_B1I_PCPS_ACQUISITION_H
|
||||
|
@ -33,6 +33,11 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
@ -171,4 +176,7 @@ private:
|
||||
unsigned int out_streams_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_BEIDOU_B3I_PCPS_ACQUISITION_H
|
||||
|
@ -85,12 +85,14 @@ GalileoE1Pcps8msAmbiguousAcquisition::GalileoE1Pcps8msAmbiguousAcquisition(
|
||||
|
||||
code_ = std::vector<std::complex<float>>(vector_length_);
|
||||
|
||||
bool enable_monitor_output = configuration->property("AcquisitionMonitor.enable_monitor", false);
|
||||
|
||||
if (item_type_ == "gr_complex")
|
||||
{
|
||||
item_size_ = sizeof(gr_complex);
|
||||
acquisition_cc_ = galileo_pcps_8ms_make_acquisition_cc(sampled_ms_, max_dwells_,
|
||||
doppler_max_, fs_in_, samples_per_ms, code_length_,
|
||||
dump_, dump_filename_);
|
||||
dump_, dump_filename_, enable_monitor_output);
|
||||
stream_to_vector_ = gr::blocks::stream_to_vector::make(item_size_, vector_length_);
|
||||
DLOG(INFO) << "stream_to_vector("
|
||||
<< stream_to_vector_->unique_id() << ")";
|
||||
|
@ -29,6 +29,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
@ -165,4 +171,7 @@ private:
|
||||
bool dump_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GALILEO_E1_PCPS_8MS_AMBIGUOUS_ACQUISITION_H
|
||||
|
@ -31,6 +31,11 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
@ -179,4 +184,7 @@ private:
|
||||
bool acquire_pilot_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GALILEO_E1_PCPS_AMBIGUOUS_ACQUISITION_H
|
||||
|
@ -29,6 +29,11 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
@ -201,4 +206,7 @@ private:
|
||||
bool acquire_pilot_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GALILEO_E1_PCPS_AMBIGUOUS_ACQUISITION_FPGA_H
|
||||
|
@ -78,12 +78,14 @@ GalileoE1PcpsCccwsrAmbiguousAcquisition::GalileoE1PcpsCccwsrAmbiguousAcquisition
|
||||
code_data_ = std::vector<std::complex<float>>(vector_length_);
|
||||
code_pilot_ = std::vector<std::complex<float>>(vector_length_);
|
||||
|
||||
bool enable_monitor_output = configuration_->property("AcquisitionMonitor.enable_monitor", false);
|
||||
|
||||
if (item_type_ == "gr_complex")
|
||||
{
|
||||
item_size_ = sizeof(gr_complex);
|
||||
acquisition_cc_ = pcps_cccwsr_make_acquisition_cc(sampled_ms_, max_dwells_,
|
||||
doppler_max_, fs_in_, samples_per_ms, code_length_,
|
||||
dump_, dump_filename_);
|
||||
dump_, dump_filename_, enable_monitor_output);
|
||||
stream_to_vector_ = gr::blocks::stream_to_vector::make(item_size_, vector_length_);
|
||||
DLOG(INFO) << "stream_to_vector("
|
||||
<< stream_to_vector_->unique_id() << ")";
|
||||
|
@ -29,6 +29,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
@ -166,4 +172,7 @@ private:
|
||||
bool dump_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GALILEO_E1_PCPS_CCCWSR_AMBIGUOUS_ACQUISITION_H
|
||||
|
@ -111,6 +111,8 @@ GalileoE1PcpsQuickSyncAmbiguousAcquisition::GalileoE1PcpsQuickSyncAmbiguousAcqui
|
||||
dump_filename_ = configuration_->property(role + ".dump_filename",
|
||||
default_dump_filename);
|
||||
|
||||
bool enable_monitor_output = configuration_->property("AcquisitionMonitor.enable_monitor", false);
|
||||
|
||||
code_ = std::vector<std::complex<float>>(code_length_);
|
||||
LOG(INFO) << "Vector Length: " << vector_length_
|
||||
<< ", Samples per ms: " << samples_per_ms
|
||||
@ -123,7 +125,7 @@ GalileoE1PcpsQuickSyncAmbiguousAcquisition::GalileoE1PcpsQuickSyncAmbiguousAcqui
|
||||
acquisition_cc_ = pcps_quicksync_make_acquisition_cc(folding_factor_,
|
||||
sampled_ms_, max_dwells_, doppler_max_, fs_in_,
|
||||
samples_per_ms, code_length_, bit_transition_flag_,
|
||||
dump_, dump_filename_);
|
||||
dump_, dump_filename_, enable_monitor_output);
|
||||
stream_to_vector_ = gr::blocks::stream_to_vector::make(item_size_,
|
||||
vector_length_);
|
||||
DLOG(INFO) << "stream_to_vector_quicksync("
|
||||
|
@ -29,6 +29,11 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
@ -170,4 +175,7 @@ private:
|
||||
bool dump_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GALILEO_E1_PCPS_QUICKSYNC_AMBIGUOUS_ACQUISITION_H
|
||||
|
@ -77,6 +77,8 @@ GalileoE1PcpsTongAmbiguousAcquisition::GalileoE1PcpsTongAmbiguousAcquisition(
|
||||
dump_filename_ = configuration_->property(role + ".dump_filename",
|
||||
default_dump_filename);
|
||||
|
||||
bool enable_monitor_output = configuration_->property("AcquisitionMonitor.enable_monitor", false);
|
||||
|
||||
// -- Find number of samples per spreading code (4 ms) -----------------
|
||||
|
||||
code_length_ = static_cast<unsigned int>(round(
|
||||
@ -93,7 +95,7 @@ GalileoE1PcpsTongAmbiguousAcquisition::GalileoE1PcpsTongAmbiguousAcquisition(
|
||||
item_size_ = sizeof(gr_complex);
|
||||
acquisition_cc_ = pcps_tong_make_acquisition_cc(sampled_ms_, doppler_max_,
|
||||
fs_in_, samples_per_ms, code_length_, tong_init_val_,
|
||||
tong_max_val_, tong_max_dwells_, dump_, dump_filename_);
|
||||
tong_max_val_, tong_max_dwells_, dump_, dump_filename_, enable_monitor_output);
|
||||
|
||||
stream_to_vector_ = gr::blocks::stream_to_vector::make(item_size_, vector_length_);
|
||||
DLOG(INFO) << "stream_to_vector("
|
||||
|
@ -29,6 +29,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
@ -168,4 +174,7 @@ private:
|
||||
bool dump_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GALILEO_E1_PCPS_TONG_AMBIGUOUS_ACQUISITION_H
|
||||
|
@ -94,6 +94,8 @@ GalileoE5aNoncoherentIQAcquisitionCaf::GalileoE5aNoncoherentIQAcquisitionCaf(
|
||||
codeQ_ = std::vector<std::complex<float>>(vector_length_);
|
||||
both_signal_components = false;
|
||||
|
||||
bool enable_monitor_output = configuration->property("AcquisitionMonitor.enable_monitor", false);
|
||||
|
||||
std::string sig_ = configuration_->property("Channel.signal", std::string("5X"));
|
||||
if (sig_.at(0) == '5' && sig_.at(1) == 'X')
|
||||
{
|
||||
@ -104,7 +106,7 @@ GalileoE5aNoncoherentIQAcquisitionCaf::GalileoE5aNoncoherentIQAcquisitionCaf(
|
||||
item_size_ = sizeof(gr_complex);
|
||||
acquisition_cc_ = galileo_e5a_noncoherentIQ_make_acquisition_caf_cc(sampled_ms_, max_dwells_,
|
||||
doppler_max_, fs_in_, code_length_, code_length_, bit_transition_flag_,
|
||||
dump_, dump_filename_, both_signal_components, CAF_window_hz_, Zero_padding);
|
||||
dump_, dump_filename_, both_signal_components, CAF_window_hz_, Zero_padding, enable_monitor_output);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -34,6 +34,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
class GalileoE5aNoncoherentIQAcquisitionCaf : public AcquisitionInterface
|
||||
@ -174,4 +180,7 @@ private:
|
||||
bool dump_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GALILEO_E5A_NONCOHERENT_IQ_ACQUISITION_CAF_H
|
||||
|
@ -28,6 +28,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
class GalileoE5aPcpsAcquisition : public AcquisitionInterface
|
||||
@ -168,4 +174,7 @@ private:
|
||||
bool acq_iq_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GALILEO_E5A_PCPS_ACQUISITION_H
|
||||
|
@ -29,6 +29,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
|
||||
@ -210,4 +216,7 @@ private:
|
||||
bool acq_iq_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GALILEO_E5A_PCPS_ACQUISITION_FPGA_H
|
||||
|
@ -30,6 +30,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
class GalileoE5bPcpsAcquisition : public AcquisitionInterface
|
||||
@ -206,4 +212,7 @@ private:
|
||||
bool acq_iq_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GALILEO_E5B_PCPS_ACQUISITION_H
|
||||
|
@ -30,6 +30,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
@ -211,4 +217,7 @@ private:
|
||||
bool acq_iq_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GALILEO_E5B_PCPS_ACQUISITION_FPGA_H
|
||||
|
@ -33,6 +33,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
@ -169,4 +175,7 @@ private:
|
||||
unsigned int out_streams_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GLONASS_L1_CA_PCPS_ACQUISITION_H
|
||||
|
@ -32,6 +32,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
@ -168,4 +174,7 @@ private:
|
||||
unsigned int out_streams_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GLONASS_L2_CA_PCPS_ACQUISITION_H
|
||||
|
@ -35,6 +35,13 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* Classes for GNSS signal acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters acquisition_adapters
|
||||
* Wrap GNU Radio acquisition blocks with an AcquisitionInterface
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
@ -180,4 +187,7 @@ private:
|
||||
unsigned int out_streams_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GPS_L1_CA_PCPS_ACQUISITION_H
|
||||
|
@ -163,8 +163,8 @@ void GpsL1CaPcpsAcquisitionFineDoppler::set_state(int state)
|
||||
acquisition_cc_->set_state(state);
|
||||
}
|
||||
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
void GpsL1CaPcpsAcquisitionFineDoppler::connect(std::shared_ptr<gr::top_block> top_block)
|
||||
|
||||
void GpsL1CaPcpsAcquisitionFineDoppler::connect(gnss_shared_ptr<gr::top_block> top_block)
|
||||
{
|
||||
if (top_block)
|
||||
{ /* top_block is not null */
|
||||
@ -173,26 +173,7 @@ void GpsL1CaPcpsAcquisitionFineDoppler::connect(std::shared_ptr<gr::top_block> t
|
||||
}
|
||||
|
||||
|
||||
void GpsL1CaPcpsAcquisitionFineDoppler::disconnect(std::shared_ptr<gr::top_block> top_block)
|
||||
{
|
||||
if (top_block)
|
||||
{ /* top_block is not null */
|
||||
};
|
||||
// nothing to disconnect, now the tracking uses gr_sync_decimator
|
||||
}
|
||||
|
||||
std::shared_ptr<gr::basic_block> GpsL1CaPcpsAcquisitionFineDoppler::get_left_block()
|
||||
{
|
||||
return acquisition_cc_;
|
||||
}
|
||||
|
||||
|
||||
std::shared_ptr<gr::basic_block> GpsL1CaPcpsAcquisitionFineDoppler::get_right_block()
|
||||
{
|
||||
return acquisition_cc_;
|
||||
}
|
||||
#else
|
||||
void GpsL1CaPcpsAcquisitionFineDoppler::connect(boost::shared_ptr<gr::top_block> top_block)
|
||||
void GpsL1CaPcpsAcquisitionFineDoppler::disconnect(gnss_shared_ptr<gr::top_block> top_block)
|
||||
{
|
||||
if (top_block)
|
||||
{ /* top_block is not null */
|
||||
@ -201,22 +182,13 @@ void GpsL1CaPcpsAcquisitionFineDoppler::connect(boost::shared_ptr<gr::top_block>
|
||||
}
|
||||
|
||||
|
||||
void GpsL1CaPcpsAcquisitionFineDoppler::disconnect(boost::shared_ptr<gr::top_block> top_block)
|
||||
{
|
||||
if (top_block)
|
||||
{ /* top_block is not null */
|
||||
};
|
||||
// nothing to disconnect, now the tracking uses gr_sync_decimator
|
||||
}
|
||||
|
||||
boost::shared_ptr<gr::basic_block> GpsL1CaPcpsAcquisitionFineDoppler::get_left_block()
|
||||
gnss_shared_ptr<gr::basic_block> GpsL1CaPcpsAcquisitionFineDoppler::get_left_block()
|
||||
{
|
||||
return acquisition_cc_;
|
||||
}
|
||||
|
||||
|
||||
boost::shared_ptr<gr::basic_block> GpsL1CaPcpsAcquisitionFineDoppler::get_right_block()
|
||||
gnss_shared_ptr<gr::basic_block> GpsL1CaPcpsAcquisitionFineDoppler::get_right_block()
|
||||
{
|
||||
return acquisition_cc_;
|
||||
}
|
||||
#endif
|
||||
|
@ -29,12 +29,14 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
using pcps_acquisition_fine_doppler_cc_sptr = std::shared_ptr<pcps_acquisition_fine_doppler_cc>;
|
||||
#else
|
||||
#include <boost/shared_ptr.hpp>
|
||||
using pcps_acquisition_fine_doppler_cc_sptr = boost::shared_ptr<pcps_acquisition_fine_doppler_cc>;
|
||||
#endif
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
using pcps_acquisition_fine_doppler_cc_sptr = gnss_shared_ptr<pcps_acquisition_fine_doppler_cc>;
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
@ -70,17 +72,11 @@ public:
|
||||
return item_size_;
|
||||
}
|
||||
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
void connect(std::shared_ptr<gr::top_block> top_block) override;
|
||||
void disconnect(std::shared_ptr<gr::top_block> top_block) override;
|
||||
std::shared_ptr<gr::basic_block> get_left_block() override;
|
||||
std::shared_ptr<gr::basic_block> get_right_block() override;
|
||||
#else
|
||||
void connect(boost::shared_ptr<gr::top_block> top_block) override;
|
||||
void disconnect(boost::shared_ptr<gr::top_block> top_block) override;
|
||||
boost::shared_ptr<gr::basic_block> get_left_block() override;
|
||||
boost::shared_ptr<gr::basic_block> get_right_block() override;
|
||||
#endif
|
||||
void connect(gnss_shared_ptr<gr::top_block> top_block) override;
|
||||
void disconnect(gnss_shared_ptr<gr::top_block> top_block) override;
|
||||
gnss_shared_ptr<gr::basic_block> get_left_block() override;
|
||||
gnss_shared_ptr<gr::basic_block> get_right_block() override;
|
||||
|
||||
/*!
|
||||
* \brief Set acquisition/tracking common Gnss_Synchro object pointer
|
||||
* to efficiently exchange synchronization data between acquisition and
|
||||
@ -172,4 +168,7 @@ private:
|
||||
bool dump_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GPS_L1_CA_PCPS_ACQUISITION_FINE_DOPPLER_H
|
||||
|
@ -32,6 +32,11 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
@ -203,4 +208,7 @@ private:
|
||||
unsigned int out_streams_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GPS_L1_CA_PCPS_ACQUISITION_FPGA_H
|
||||
|
@ -55,6 +55,7 @@ GpsL1CaPcpsAssistedAcquisition::GpsL1CaPcpsAssistedAcquisition(
|
||||
sampled_ms_ = configuration->property(role + ".coherent_integration_time_ms", 1);
|
||||
max_dwells_ = configuration->property(role + ".max_dwells", 1);
|
||||
dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename);
|
||||
bool enable_monitor_output = configuration->property("AcquisitionMonitor.enable_monitor", false);
|
||||
|
||||
// --- Find number of samples per spreading code -------------------------
|
||||
vector_length_ = static_cast<unsigned int>(round(fs_in_ / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)));
|
||||
@ -66,7 +67,7 @@ GpsL1CaPcpsAssistedAcquisition::GpsL1CaPcpsAssistedAcquisition(
|
||||
item_size_ = sizeof(gr_complex);
|
||||
acquisition_cc_ = pcps_make_assisted_acquisition_cc(max_dwells_, sampled_ms_,
|
||||
doppler_max_, doppler_min_, fs_in_, vector_length_,
|
||||
dump_, dump_filename_);
|
||||
dump_, dump_filename_, enable_monitor_output);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -30,6 +30,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
@ -163,4 +169,7 @@ private:
|
||||
bool dump_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GPS_L1_CA_PCPS_ASSISTED_ACQUISITION_H
|
||||
|
@ -88,7 +88,7 @@ GpsL1CaPcpsOpenClAcquisition::GpsL1CaPcpsOpenClAcquisition(
|
||||
item_size_ = sizeof(gr_complex);
|
||||
acquisition_cc_ = pcps_make_opencl_acquisition_cc(sampled_ms_, max_dwells_,
|
||||
doppler_max_, fs_in_, code_length_, code_length_,
|
||||
bit_transition_flag_, dump_, dump_filename_);
|
||||
bit_transition_flag_, dump_, dump_filename_, false);
|
||||
|
||||
stream_to_vector_ = gr::blocks::stream_to_vector::make(item_size_, vector_length_);
|
||||
|
||||
|
@ -29,6 +29,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
@ -173,4 +179,7 @@ private:
|
||||
bool dump_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GPS_L1_CA_PCPS_OPENCL_ACQUISITION_H
|
||||
|
@ -100,6 +100,8 @@ GpsL1CaPcpsQuickSyncAcquisition::GpsL1CaPcpsQuickSyncAcquisition(
|
||||
|
||||
dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename);
|
||||
|
||||
bool enable_monitor_output = configuration_->property("AcquisitionMonitor.enable_monitor", false);
|
||||
|
||||
int samples_per_ms = round(code_length_);
|
||||
code_ = std::vector<std::complex<float>>(code_length_);
|
||||
/* Object relevant information for debugging */
|
||||
@ -116,7 +118,7 @@ GpsL1CaPcpsQuickSyncAcquisition::GpsL1CaPcpsQuickSyncAcquisition(
|
||||
acquisition_cc_ = pcps_quicksync_make_acquisition_cc(folding_factor_,
|
||||
sampled_ms_, max_dwells_, doppler_max_, fs_in_,
|
||||
samples_per_ms, code_length_, bit_transition_flag_,
|
||||
dump_, dump_filename_);
|
||||
dump_, dump_filename_, enable_monitor_output);
|
||||
|
||||
stream_to_vector_ = gr::blocks::stream_to_vector::make(item_size_,
|
||||
code_length_ * folding_factor_);
|
||||
|
@ -31,6 +31,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
@ -175,4 +181,7 @@ private:
|
||||
bool dump_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GPS_L1_CA_PCPS_QUICKSYNC_ACQUISITION_H
|
||||
|
@ -67,6 +67,8 @@ GpsL1CaPcpsTongAcquisition::GpsL1CaPcpsTongAcquisition(
|
||||
|
||||
dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename);
|
||||
|
||||
bool enable_monitor_output = configuration_->property("AcquisitionMonitor.enable_monitor", false);
|
||||
|
||||
// -- Find number of samples per spreading code -------------------------
|
||||
code_length_ = static_cast<unsigned int>(round(fs_in_ / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)));
|
||||
|
||||
@ -79,7 +81,7 @@ GpsL1CaPcpsTongAcquisition::GpsL1CaPcpsTongAcquisition(
|
||||
item_size_ = sizeof(gr_complex);
|
||||
acquisition_cc_ = pcps_tong_make_acquisition_cc(sampled_ms_, doppler_max_, fs_in_,
|
||||
code_length_, code_length_, tong_init_val_, tong_max_val_, tong_max_dwells_,
|
||||
dump_, dump_filename_);
|
||||
dump_, dump_filename_, enable_monitor_output);
|
||||
|
||||
stream_to_vector_ = gr::blocks::stream_to_vector::make(item_size_, vector_length_);
|
||||
|
||||
|
@ -30,6 +30,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
@ -170,4 +176,7 @@ private:
|
||||
bool dump_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GPS_L1_CA_TONG_ACQUISITION_H
|
||||
|
@ -32,6 +32,11 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
@ -178,4 +183,7 @@ private:
|
||||
unsigned int num_codes_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GPS_L2_M_PCPS_ACQUISITION_H
|
||||
|
@ -31,6 +31,12 @@
|
||||
#include <string> // for string
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class Gnss_Synchro;
|
||||
class ConfigurationInterface;
|
||||
|
||||
@ -168,4 +174,7 @@ private:
|
||||
unsigned int out_streams_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GPS_L2_M_PCPS_ACQUISITION_FPGA_H
|
||||
|
@ -32,6 +32,11 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
@ -178,4 +183,7 @@ private:
|
||||
unsigned int num_codes_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GPS_L5I_PCPS_ACQUISITION_H
|
||||
|
@ -31,6 +31,12 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
@ -206,4 +212,7 @@ private:
|
||||
unsigned int out_streams_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GPS_L5I_PCPS_ACQUISITION_FPGA_H
|
||||
|
@ -46,11 +46,12 @@ galileo_e5a_noncoherentIQ_acquisition_caf_cc_sptr galileo_e5a_noncoherentIQ_make
|
||||
const std::string &dump_filename,
|
||||
bool both_signal_components_,
|
||||
int CAF_window_hz_,
|
||||
int Zero_padding_)
|
||||
int Zero_padding_,
|
||||
bool enable_monitor_output)
|
||||
{
|
||||
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, dump_filename, both_signal_components_, CAF_window_hz_, Zero_padding_, enable_monitor_output));
|
||||
}
|
||||
|
||||
|
||||
@ -66,9 +67,10 @@ galileo_e5a_noncoherentIQ_acquisition_caf_cc::galileo_e5a_noncoherentIQ_acquisit
|
||||
const std::string &dump_filename,
|
||||
bool both_signal_components_,
|
||||
int CAF_window_hz_,
|
||||
int Zero_padding_) : gr::block("galileo_e5a_noncoherentIQ_acquisition_caf_cc",
|
||||
gr::io_signature::make(1, 1, sizeof(gr_complex)),
|
||||
gr::io_signature::make(0, 0, sizeof(gr_complex)))
|
||||
int Zero_padding_,
|
||||
bool enable_monitor_output) : gr::block("galileo_e5a_noncoherentIQ_acquisition_caf_cc",
|
||||
gr::io_signature::make(1, 1, sizeof(gr_complex)),
|
||||
gr::io_signature::make(0, 1, sizeof(Gnss_Synchro)))
|
||||
{
|
||||
this->message_port_register_out(pmt::mp("events"));
|
||||
d_sample_counter = 0ULL; // SAMPLE COUNTER
|
||||
@ -96,6 +98,7 @@ galileo_e5a_noncoherentIQ_acquisition_caf_cc::galileo_e5a_noncoherentIQ_acquisit
|
||||
d_buffer_count = 0;
|
||||
d_both_signal_components = both_signal_components_;
|
||||
d_CAF_window_hz = CAF_window_hz_;
|
||||
d_enable_monitor_output = enable_monitor_output;
|
||||
|
||||
d_inbuffer.reserve(d_fft_size);
|
||||
d_fft_code_I_A.reserve(d_fft_size);
|
||||
@ -285,7 +288,7 @@ void galileo_e5a_noncoherentIQ_acquisition_caf_cc::set_state(int state)
|
||||
|
||||
int galileo_e5a_noncoherentIQ_acquisition_caf_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 __attribute__((unused)))
|
||||
gr_vector_void_star &output_items)
|
||||
{
|
||||
/*
|
||||
* By J.Arribas, L.Esteve, M.Molina and M.Sales
|
||||
@ -300,6 +303,7 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items
|
||||
*/
|
||||
|
||||
int acquisition_message = -1; // 0=STOP_CHANNEL 1=ACQ_SUCCEES 2=ACQ_FAIL
|
||||
int return_value = 0; // 0=Produces no Gnss_Synchro objects
|
||||
/* States: 0 Stop Channel
|
||||
* 1 Load the buffer until it reaches fft_size
|
||||
* 2 Acquisition algorithm
|
||||
@ -726,6 +730,17 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items
|
||||
this->message_port_pub(pmt::mp("events"), pmt::from_long(acquisition_message));
|
||||
d_sample_counter += static_cast<uint64_t>(ninput_items[0]); // sample counter
|
||||
consume_each(ninput_items[0]);
|
||||
|
||||
// Copy and push current Gnss_Synchro to monitor queue
|
||||
if (d_enable_monitor_output)
|
||||
{
|
||||
auto **out = reinterpret_cast<Gnss_Synchro **>(&output_items[0]);
|
||||
Gnss_Synchro current_synchro_data = Gnss_Synchro();
|
||||
current_synchro_data = *d_gnss_synchro;
|
||||
*out[0] = current_synchro_data;
|
||||
return_value = 1; // Number of Gnss_Synchro objects produced
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
@ -752,5 +767,5 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return return_value;
|
||||
}
|
||||
|
@ -37,18 +37,16 @@
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
#else
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#endif
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_gnuradio_blocks
|
||||
* \{ */
|
||||
|
||||
|
||||
class galileo_e5a_noncoherentIQ_acquisition_caf_cc;
|
||||
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
using galileo_e5a_noncoherentIQ_acquisition_caf_cc_sptr = std::shared_ptr<galileo_e5a_noncoherentIQ_acquisition_caf_cc>;
|
||||
#else
|
||||
using galileo_e5a_noncoherentIQ_acquisition_caf_cc_sptr = boost::shared_ptr<galileo_e5a_noncoherentIQ_acquisition_caf_cc>;
|
||||
#endif
|
||||
using galileo_e5a_noncoherentIQ_acquisition_caf_cc_sptr = gnss_shared_ptr<galileo_e5a_noncoherentIQ_acquisition_caf_cc>;
|
||||
|
||||
galileo_e5a_noncoherentIQ_acquisition_caf_cc_sptr galileo_e5a_noncoherentIQ_make_acquisition_caf_cc(
|
||||
unsigned int sampled_ms,
|
||||
@ -60,7 +58,8 @@ galileo_e5a_noncoherentIQ_acquisition_caf_cc_sptr galileo_e5a_noncoherentIQ_make
|
||||
const std::string& dump_filename,
|
||||
bool both_signal_components_,
|
||||
int CAF_window_hz_,
|
||||
int Zero_padding_);
|
||||
int Zero_padding_,
|
||||
bool enable_monitor_output);
|
||||
|
||||
/*!
|
||||
* \brief This class implements a Parallel Code Phase Search Acquisition.
|
||||
@ -186,7 +185,8 @@ private:
|
||||
const std::string& dump_filename,
|
||||
bool both_signal_components_,
|
||||
int CAF_window_hz_,
|
||||
int Zero_padding_);
|
||||
int Zero_padding_,
|
||||
bool enable_monitor_output);
|
||||
|
||||
galileo_e5a_noncoherentIQ_acquisition_caf_cc(
|
||||
unsigned int sampled_ms,
|
||||
@ -198,7 +198,8 @@ private:
|
||||
const std::string& dump_filename,
|
||||
bool both_signal_components_,
|
||||
int CAF_window_hz_,
|
||||
int Zero_padding_);
|
||||
int Zero_padding_,
|
||||
bool enable_monitor_output);
|
||||
|
||||
void calculate_magnitudes(gr_complex* fft_begin, int doppler_shift,
|
||||
int doppler_offset);
|
||||
@ -260,6 +261,10 @@ private:
|
||||
bool d_active;
|
||||
bool d_dump;
|
||||
bool d_both_signal_components;
|
||||
bool d_enable_monitor_output;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GALILEO_E5A_NONCOHERENT_IQ_ACQUISITION_CAF_CC_H
|
||||
|
@ -37,11 +37,13 @@ galileo_pcps_8ms_acquisition_cc_sptr galileo_pcps_8ms_make_acquisition_cc(
|
||||
int64_t fs_in,
|
||||
int32_t samples_per_ms,
|
||||
int32_t samples_per_code,
|
||||
bool dump, const std::string &dump_filename)
|
||||
bool dump,
|
||||
const std::string &dump_filename,
|
||||
bool enable_monitor_output)
|
||||
{
|
||||
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, dump_filename, enable_monitor_output));
|
||||
}
|
||||
|
||||
|
||||
@ -53,9 +55,10 @@ galileo_pcps_8ms_acquisition_cc::galileo_pcps_8ms_acquisition_cc(
|
||||
int32_t samples_per_ms,
|
||||
int32_t samples_per_code,
|
||||
bool dump,
|
||||
const std::string &dump_filename) : gr::block("galileo_pcps_8ms_acquisition_cc",
|
||||
gr::io_signature::make(1, 1, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)),
|
||||
gr::io_signature::make(0, 0, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)))
|
||||
const std::string &dump_filename,
|
||||
bool enable_monitor_output) : gr::block("galileo_pcps_8ms_acquisition_cc",
|
||||
gr::io_signature::make(1, 1, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)),
|
||||
gr::io_signature::make(0, 1, sizeof(Gnss_Synchro)))
|
||||
{
|
||||
this->message_port_register_out(pmt::mp("events"));
|
||||
d_sample_counter = 0ULL; // SAMPLE COUNTER
|
||||
@ -87,6 +90,8 @@ galileo_pcps_8ms_acquisition_cc::galileo_pcps_8ms_acquisition_cc(
|
||||
d_dump = dump;
|
||||
d_dump_filename = dump_filename;
|
||||
|
||||
d_enable_monitor_output = enable_monitor_output;
|
||||
|
||||
d_doppler_resolution = 0;
|
||||
d_threshold = 0;
|
||||
d_doppler_step = 0;
|
||||
@ -199,7 +204,7 @@ void galileo_pcps_8ms_acquisition_cc::set_state(int32_t state)
|
||||
|
||||
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)))
|
||||
gr_vector_void_star &output_items)
|
||||
{
|
||||
int32_t acquisition_message = -1; // 0=STOP_CHANNEL 1=ACQ_SUCCEES 2=ACQ_FAIL
|
||||
|
||||
@ -380,6 +385,16 @@ int galileo_pcps_8ms_acquisition_cc::general_work(int noutput_items,
|
||||
acquisition_message = 1;
|
||||
this->message_port_pub(pmt::mp("events"), pmt::from_long(acquisition_message));
|
||||
|
||||
// Copy and push current Gnss_Synchro to monitor queue
|
||||
if (d_enable_monitor_output)
|
||||
{
|
||||
auto **out = reinterpret_cast<Gnss_Synchro **>(&output_items[0]);
|
||||
Gnss_Synchro current_synchro_data = Gnss_Synchro();
|
||||
current_synchro_data = *d_gnss_synchro;
|
||||
*out[0] = current_synchro_data;
|
||||
noutput_items = 1; // Number of Gnss_Synchro objects produced
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -31,18 +31,16 @@
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
#else
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#endif
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_gnuradio_blocks
|
||||
* \{ */
|
||||
|
||||
|
||||
class galileo_pcps_8ms_acquisition_cc;
|
||||
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
using galileo_pcps_8ms_acquisition_cc_sptr = std::shared_ptr<galileo_pcps_8ms_acquisition_cc>;
|
||||
#else
|
||||
using galileo_pcps_8ms_acquisition_cc_sptr = boost::shared_ptr<galileo_pcps_8ms_acquisition_cc>;
|
||||
#endif
|
||||
using galileo_pcps_8ms_acquisition_cc_sptr = gnss_shared_ptr<galileo_pcps_8ms_acquisition_cc>;
|
||||
|
||||
galileo_pcps_8ms_acquisition_cc_sptr
|
||||
galileo_pcps_8ms_make_acquisition_cc(uint32_t sampled_ms,
|
||||
@ -52,7 +50,8 @@ galileo_pcps_8ms_make_acquisition_cc(uint32_t sampled_ms,
|
||||
int32_t samples_per_ms,
|
||||
int32_t samples_per_code,
|
||||
bool dump,
|
||||
const std::string& dump_filename);
|
||||
const std::string& dump_filename,
|
||||
bool enable_monitor_output);
|
||||
|
||||
/*!
|
||||
* \brief This class implements a Parallel Code Phase Search Acquisition for
|
||||
@ -174,7 +173,8 @@ private:
|
||||
int32_t samples_per_ms,
|
||||
int32_t samples_per_code,
|
||||
bool dump,
|
||||
const std::string& dump_filename);
|
||||
const std::string& dump_filename,
|
||||
bool enable_monitor_output);
|
||||
|
||||
galileo_pcps_8ms_acquisition_cc(
|
||||
uint32_t sampled_ms,
|
||||
@ -184,7 +184,8 @@ private:
|
||||
int32_t samples_per_ms,
|
||||
int32_t samples_per_code,
|
||||
bool dump,
|
||||
const std::string& dump_filename);
|
||||
const std::string& dump_filename,
|
||||
bool enable_monitor_output);
|
||||
|
||||
void calculate_magnitudes(
|
||||
gr_complex* fft_begin,
|
||||
@ -230,6 +231,10 @@ private:
|
||||
|
||||
bool d_active;
|
||||
bool d_dump;
|
||||
bool d_enable_monitor_output;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_PCPS_8MS_ACQUISITION_CC_H
|
||||
|
@ -71,7 +71,7 @@ pcps_acquisition_sptr pcps_make_acquisition(const Acq_Conf& conf_)
|
||||
|
||||
pcps_acquisition::pcps_acquisition(const Acq_Conf& conf_) : gr::block("pcps_acquisition",
|
||||
gr::io_signature::make(1, 1, conf_.it_size),
|
||||
gr::io_signature::make(0, 0, conf_.it_size))
|
||||
gr::io_signature::make(0, 1, sizeof(Gnss_Synchro)))
|
||||
{
|
||||
this->message_port_register_out(pmt::mp("events"));
|
||||
|
||||
@ -385,6 +385,14 @@ void pcps_acquisition::send_positive_acquisition()
|
||||
{
|
||||
this->message_port_pub(pmt::mp("events"), pmt::from_long(1));
|
||||
}
|
||||
|
||||
// Copy and push current Gnss_Synchro to monitor queue
|
||||
if (d_acq_parameters.enable_monitor_output)
|
||||
{
|
||||
Gnss_Synchro current_synchro_data = Gnss_Synchro();
|
||||
current_synchro_data = *d_gnss_synchro;
|
||||
d_monitor_queue.push(current_synchro_data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -903,7 +911,7 @@ void pcps_acquisition::calculate_threshold()
|
||||
int pcps_acquisition::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 __attribute__((unused)))
|
||||
gr_vector_void_star& output_items)
|
||||
{
|
||||
/*
|
||||
* By J.Arribas, L.Esteve and M.Molina
|
||||
@ -1010,5 +1018,22 @@ int pcps_acquisition::general_work(int noutput_items __attribute__((unused)),
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Send outputs to the monitor
|
||||
if (d_acq_parameters.enable_monitor_output)
|
||||
{
|
||||
auto **out = reinterpret_cast<Gnss_Synchro **>(&output_items[0]);
|
||||
if (!d_monitor_queue.empty())
|
||||
{
|
||||
int num_gnss_synchro_objects = d_monitor_queue.size();
|
||||
for (int i = 0; i < num_gnss_synchro_objects; ++i) {
|
||||
Gnss_Synchro current_synchro_data = d_monitor_queue.front();
|
||||
d_monitor_queue.pop();
|
||||
*out[i] = current_synchro_data;
|
||||
}
|
||||
return num_gnss_synchro_objects;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -59,6 +59,7 @@
|
||||
#include <complex>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <queue>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
@ -70,19 +71,18 @@ namespace own = std;
|
||||
namespace own = gsl;
|
||||
#endif
|
||||
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
#else
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#endif
|
||||
/** \addtogroup Acquisition
|
||||
* Classes for GNSS signal acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_gnuradio_blocks acquisition_gr_blocks
|
||||
* GNU Radio processing blocks for GNSS signal acquisition
|
||||
* \{ */
|
||||
|
||||
|
||||
class Gnss_Synchro;
|
||||
class pcps_acquisition;
|
||||
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
using pcps_acquisition_sptr = std::shared_ptr<pcps_acquisition>;
|
||||
#else
|
||||
using pcps_acquisition_sptr = boost::shared_ptr<pcps_acquisition>;
|
||||
#endif
|
||||
using pcps_acquisition_sptr = gnss_shared_ptr<pcps_acquisition>;
|
||||
|
||||
pcps_acquisition_sptr pcps_make_acquisition(const Acq_Conf& conf_);
|
||||
|
||||
@ -284,6 +284,11 @@ private:
|
||||
bool d_step_two;
|
||||
bool d_use_CFAR_algorithm_flag;
|
||||
bool d_dump;
|
||||
|
||||
std::queue<Gnss_Synchro> d_monitor_queue;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_PCPS_ACQUISITION_H
|
||||
|
@ -63,7 +63,7 @@ pcps_acquisition_fine_doppler_cc_sptr pcps_make_acquisition_fine_doppler_cc(cons
|
||||
pcps_acquisition_fine_doppler_cc::pcps_acquisition_fine_doppler_cc(const Acq_Conf &conf_)
|
||||
: gr::block("pcps_acquisition_fine_doppler_cc",
|
||||
gr::io_signature::make(1, 1, sizeof(gr_complex)),
|
||||
gr::io_signature::make(0, 0, sizeof(gr_complex)))
|
||||
gr::io_signature::make(0, 1, sizeof(Gnss_Synchro)))
|
||||
{
|
||||
this->message_port_register_out(pmt::mp("events"));
|
||||
acq_parameters = conf_;
|
||||
@ -482,7 +482,7 @@ void pcps_acquisition_fine_doppler_cc::set_state(int state)
|
||||
|
||||
int pcps_acquisition_fine_doppler_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 __attribute__((unused)))
|
||||
gr_vector_void_star &output_items)
|
||||
{
|
||||
/*!
|
||||
* TODO: High sensitivity acquisition algorithm:
|
||||
@ -498,6 +498,7 @@ int pcps_acquisition_fine_doppler_cc::general_work(int noutput_items,
|
||||
* S5. Negative_Acq: Send message and stop acq -> S0
|
||||
*/
|
||||
|
||||
int return_value = 0; // Number of Gnss_Syncro objects produced
|
||||
int samples_remaining;
|
||||
switch (d_state)
|
||||
{
|
||||
@ -585,6 +586,15 @@ int pcps_acquisition_fine_doppler_cc::general_work(int noutput_items,
|
||||
d_sample_counter += static_cast<uint64_t>(noutput_items); // sample counter
|
||||
consume_each(noutput_items);
|
||||
}
|
||||
// Copy and push current Gnss_Synchro to monitor queue
|
||||
if (acq_parameters.enable_monitor_output)
|
||||
{
|
||||
auto **out = reinterpret_cast<Gnss_Synchro **>(&output_items[0]);
|
||||
Gnss_Synchro current_synchro_data = Gnss_Synchro();
|
||||
current_synchro_data = *d_gnss_synchro;
|
||||
*out[0] = current_synchro_data;
|
||||
return_value = 1; // Number of Gnss_Synchro objects produced
|
||||
}
|
||||
break;
|
||||
case 5: // Negative_Acq
|
||||
DLOG(INFO) << "negative acquisition";
|
||||
@ -619,7 +629,7 @@ int pcps_acquisition_fine_doppler_cc::general_work(int noutput_items,
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
return return_value;
|
||||
}
|
||||
|
||||
void pcps_acquisition_fine_doppler_cc::dump_results(int effective_fft_size)
|
||||
|
@ -55,18 +55,17 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
#else
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#endif
|
||||
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_gnuradio_blocks
|
||||
* \{ */
|
||||
|
||||
|
||||
class pcps_acquisition_fine_doppler_cc;
|
||||
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
using pcps_acquisition_fine_doppler_cc_sptr = std::shared_ptr<pcps_acquisition_fine_doppler_cc>;
|
||||
#else
|
||||
using pcps_acquisition_fine_doppler_cc_sptr = boost::shared_ptr<pcps_acquisition_fine_doppler_cc>;
|
||||
#endif
|
||||
using pcps_acquisition_fine_doppler_cc_sptr = gnss_shared_ptr<pcps_acquisition_fine_doppler_cc>;
|
||||
|
||||
pcps_acquisition_fine_doppler_cc_sptr pcps_make_acquisition_fine_doppler_cc(const Acq_Conf& conf_);
|
||||
|
||||
@ -246,4 +245,7 @@ private:
|
||||
bool d_dump;
|
||||
};
|
||||
|
||||
#endif /* pcps_acquisition_fine_doppler_cc*/
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_PCPS_ACQUISITION_FINE_DOPPLER_CC_H
|
||||
|
@ -37,6 +37,12 @@
|
||||
#include <memory> // for shared_ptr
|
||||
#include <string> // for string
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_gnuradio_blocks
|
||||
* \{ */
|
||||
|
||||
|
||||
class Gnss_Synchro;
|
||||
|
||||
typedef struct
|
||||
@ -230,4 +236,7 @@ private:
|
||||
bool d_make_2_steps;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_PCPS_ACQUISITION_FPGA_H
|
||||
|
@ -40,20 +40,20 @@ extern Concurrent_Map<Gps_Acq_Assist> global_gps_acq_assist_map;
|
||||
pcps_assisted_acquisition_cc_sptr 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,
|
||||
const std::string &dump_filename)
|
||||
const std::string &dump_filename, bool enable_monitor_output)
|
||||
{
|
||||
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, dump_filename, enable_monitor_output));
|
||||
}
|
||||
|
||||
|
||||
pcps_assisted_acquisition_cc::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,
|
||||
const 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)))
|
||||
int64_t fs_in, int32_t samples_per_ms, bool dump, const std::string &dump_filename,
|
||||
bool enable_monitor_output) : gr::block("pcps_assisted_acquisition_cc",
|
||||
gr::io_signature::make(1, 1, sizeof(gr_complex)),
|
||||
gr::io_signature::make(0, 1, sizeof(Gnss_Synchro)))
|
||||
{
|
||||
this->message_port_register_out(pmt::mp("events"));
|
||||
d_sample_counter = 0ULL; // SAMPLE COUNTER
|
||||
@ -82,6 +82,8 @@ pcps_assisted_acquisition_cc::pcps_assisted_acquisition_cc(
|
||||
d_dump = dump;
|
||||
d_dump_filename = dump_filename;
|
||||
|
||||
d_enable_monitor_output = enable_monitor_output;
|
||||
|
||||
d_doppler_resolution = 0;
|
||||
d_threshold = 0;
|
||||
d_doppler_max = 0;
|
||||
@ -334,7 +336,7 @@ int32_t pcps_assisted_acquisition_cc::compute_and_accumulate_grid(gr_vector_cons
|
||||
|
||||
int pcps_assisted_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)))
|
||||
gr_vector_void_star &output_items)
|
||||
{
|
||||
/*!
|
||||
* TODO: High sensitivity acquisition algorithm:
|
||||
@ -428,6 +430,15 @@ int pcps_assisted_acquisition_cc::general_work(int noutput_items,
|
||||
d_sample_counter += static_cast<uint64_t>(ninput_items[0]); // sample counter
|
||||
consume_each(ninput_items[0]);
|
||||
d_state = 0;
|
||||
// Copy and push current Gnss_Synchro to monitor queue
|
||||
if (d_enable_monitor_output)
|
||||
{
|
||||
auto **out = reinterpret_cast<Gnss_Synchro **>(&output_items[0]);
|
||||
Gnss_Synchro current_synchro_data = Gnss_Synchro();
|
||||
current_synchro_data = *d_gnss_synchro;
|
||||
*out[0] = current_synchro_data;
|
||||
noutput_items = 1; // Number of Gnss_Synchro objects produced
|
||||
}
|
||||
break;
|
||||
case 6: // Negative_Acq
|
||||
DLOG(INFO) << "negative acquisition";
|
||||
|
@ -47,18 +47,16 @@
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
#else
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#endif
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_gnuradio_blocks
|
||||
* \{ */
|
||||
|
||||
|
||||
class pcps_assisted_acquisition_cc;
|
||||
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
using pcps_assisted_acquisition_cc_sptr = std::shared_ptr<pcps_assisted_acquisition_cc>;
|
||||
#else
|
||||
using pcps_assisted_acquisition_cc_sptr = boost::shared_ptr<pcps_assisted_acquisition_cc>;
|
||||
#endif
|
||||
using pcps_assisted_acquisition_cc_sptr = gnss_shared_ptr<pcps_assisted_acquisition_cc>;
|
||||
|
||||
pcps_assisted_acquisition_cc_sptr pcps_make_assisted_acquisition_cc(
|
||||
int32_t max_dwells,
|
||||
@ -67,7 +65,9 @@ pcps_assisted_acquisition_cc_sptr pcps_make_assisted_acquisition_cc(
|
||||
int32_t doppler_min,
|
||||
int64_t fs_in,
|
||||
int32_t samples_per_ms,
|
||||
bool dump, const std::string& dump_filename);
|
||||
bool dump,
|
||||
const std::string& dump_filename,
|
||||
bool enable_monitor_output);
|
||||
|
||||
/*!
|
||||
* \brief This class implements a Parallel Code Phase Search Acquisition.
|
||||
@ -183,12 +183,12 @@ private:
|
||||
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,
|
||||
const std::string& dump_filename);
|
||||
const std::string& dump_filename, bool enable_monitor_output);
|
||||
|
||||
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,
|
||||
const std::string& dump_filename);
|
||||
const std::string& dump_filename, bool enable_monitor_output);
|
||||
|
||||
void calculate_magnitudes(gr_complex* fft_begin, int32_t doppler_shift,
|
||||
int32_t doppler_offset);
|
||||
@ -242,6 +242,10 @@ private:
|
||||
bool d_active;
|
||||
bool d_disable_assist;
|
||||
bool d_dump;
|
||||
bool d_enable_monitor_output;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_PCPS_ASSISTED_ACQUISITION_CC_H
|
||||
|
@ -42,11 +42,13 @@ pcps_cccwsr_acquisition_cc_sptr pcps_cccwsr_make_acquisition_cc(
|
||||
int64_t fs_in,
|
||||
int32_t samples_per_ms,
|
||||
int32_t samples_per_code,
|
||||
bool dump, const std::string &dump_filename)
|
||||
bool dump,
|
||||
const std::string &dump_filename,
|
||||
bool enable_monitor_output)
|
||||
{
|
||||
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, dump_filename, enable_monitor_output));
|
||||
}
|
||||
|
||||
|
||||
@ -58,9 +60,10 @@ pcps_cccwsr_acquisition_cc::pcps_cccwsr_acquisition_cc(
|
||||
int32_t samples_per_ms,
|
||||
int32_t samples_per_code,
|
||||
bool dump,
|
||||
const std::string &dump_filename) : gr::block("pcps_cccwsr_acquisition_cc",
|
||||
gr::io_signature::make(1, 1, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)),
|
||||
gr::io_signature::make(0, 0, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)))
|
||||
const std::string &dump_filename,
|
||||
bool enable_monitor_output) : gr::block("pcps_cccwsr_acquisition_cc",
|
||||
gr::io_signature::make(1, 1, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)),
|
||||
gr::io_signature::make(0, 1, sizeof(Gnss_Synchro)))
|
||||
{
|
||||
this->message_port_register_out(pmt::mp("events"));
|
||||
d_sample_counter = 0ULL; // SAMPLE COUNTER
|
||||
@ -96,6 +99,8 @@ pcps_cccwsr_acquisition_cc::pcps_cccwsr_acquisition_cc(
|
||||
d_dump = dump;
|
||||
d_dump_filename = dump_filename;
|
||||
|
||||
d_enable_monitor_output = enable_monitor_output;
|
||||
|
||||
d_doppler_resolution = 0;
|
||||
d_threshold = 0;
|
||||
d_doppler_step = 0;
|
||||
@ -208,7 +213,7 @@ void pcps_cccwsr_acquisition_cc::set_state(int32_t state)
|
||||
|
||||
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)))
|
||||
gr_vector_void_star &output_items)
|
||||
{
|
||||
int32_t acquisition_message = -1; // 0=STOP_CHANNEL 1=ACQ_SUCCEES 2=ACQ_FAIL
|
||||
|
||||
@ -400,6 +405,16 @@ int pcps_cccwsr_acquisition_cc::general_work(int noutput_items,
|
||||
acquisition_message = 1;
|
||||
this->message_port_pub(pmt::mp("events"), pmt::from_long(acquisition_message));
|
||||
|
||||
// Copy and push current Gnss_Synchro to monitor queue
|
||||
if (d_enable_monitor_output)
|
||||
{
|
||||
auto **out = reinterpret_cast<Gnss_Synchro **>(&output_items[0]);
|
||||
Gnss_Synchro current_synchro_data = Gnss_Synchro();
|
||||
current_synchro_data = *d_gnss_synchro;
|
||||
*out[0] = current_synchro_data;
|
||||
noutput_items = 1; // Number of Gnss_Synchro objects produced
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -36,19 +36,16 @@
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
#else
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#endif
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_gnuradio_blocks
|
||||
* \{ */
|
||||
|
||||
|
||||
class pcps_cccwsr_acquisition_cc;
|
||||
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
using pcps_cccwsr_acquisition_cc_sptr = std::shared_ptr<pcps_cccwsr_acquisition_cc>;
|
||||
#else
|
||||
using pcps_cccwsr_acquisition_cc_sptr = boost::shared_ptr<pcps_cccwsr_acquisition_cc>;
|
||||
#endif
|
||||
using pcps_cccwsr_acquisition_cc_sptr = gnss_shared_ptr<pcps_cccwsr_acquisition_cc>;
|
||||
|
||||
pcps_cccwsr_acquisition_cc_sptr pcps_cccwsr_make_acquisition_cc(
|
||||
uint32_t sampled_ms,
|
||||
@ -58,7 +55,8 @@ pcps_cccwsr_acquisition_cc_sptr pcps_cccwsr_make_acquisition_cc(
|
||||
int32_t samples_per_ms,
|
||||
int32_t samples_per_code,
|
||||
bool dump,
|
||||
const std::string& dump_filename);
|
||||
const std::string& dump_filename,
|
||||
bool enable_monitor_output);
|
||||
|
||||
/*!
|
||||
* \brief This class implements a Parallel Code Phase Search Acquisition with
|
||||
@ -176,12 +174,12 @@ private:
|
||||
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, const std::string& dump_filename);
|
||||
bool dump, const std::string& dump_filename, bool enable_monitor_output);
|
||||
|
||||
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, const std::string& dump_filename);
|
||||
bool dump, const std::string& dump_filename, bool enable_monitor_output);
|
||||
|
||||
void calculate_magnitudes(gr_complex* fft_begin, int32_t doppler_shift,
|
||||
int32_t doppler_offset);
|
||||
@ -231,6 +229,10 @@ private:
|
||||
|
||||
bool d_active;
|
||||
bool d_dump;
|
||||
bool d_enable_monitor_output;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_PCPS_CCCWSR_ACQUISITION_CC_H
|
||||
|
@ -61,11 +61,12 @@ pcps_opencl_acquisition_cc_sptr pcps_make_opencl_acquisition_cc(
|
||||
int samples_per_ms, int samples_per_code,
|
||||
bool bit_transition_flag,
|
||||
bool dump,
|
||||
const std::string &dump_filename)
|
||||
const std::string &dump_filename,
|
||||
bool enable_monitor_output)
|
||||
{
|
||||
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, dump_filename, enable_monitor_output));
|
||||
}
|
||||
|
||||
|
||||
@ -78,9 +79,10 @@ pcps_opencl_acquisition_cc::pcps_opencl_acquisition_cc(
|
||||
int samples_per_code,
|
||||
bool bit_transition_flag,
|
||||
bool dump,
|
||||
const std::string &dump_filename) : gr::block("pcps_opencl_acquisition_cc",
|
||||
gr::io_signature::make(1, 1, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)),
|
||||
gr::io_signature::make(0, 0, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)))
|
||||
const std::string &dump_filename,
|
||||
bool enable_monitor_output) : gr::block("pcps_opencl_acquisition_cc",
|
||||
gr::io_signature::make(1, 1, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)),
|
||||
gr::io_signature::make(0, 1, sizeof(Gnss_Synchro)))
|
||||
{
|
||||
this->message_port_register_out(pmt::mp("events"));
|
||||
d_sample_counter = 0ULL; // SAMPLE COUNTER
|
||||
@ -122,6 +124,8 @@ pcps_opencl_acquisition_cc::pcps_opencl_acquisition_cc(
|
||||
// For dumping samples into a file
|
||||
d_dump = dump;
|
||||
d_dump_filename = dump_filename;
|
||||
|
||||
d_enable_monitor_output = enable_monitor_output;
|
||||
}
|
||||
|
||||
|
||||
@ -658,7 +662,7 @@ void pcps_opencl_acquisition_cc::set_state(int state)
|
||||
|
||||
int pcps_opencl_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)))
|
||||
gr_vector_void_star &output_items)
|
||||
{
|
||||
int acquisition_message = -1; // 0=STOP_CHANNEL 1=ACQ_SUCCEES 2=ACQ_FAIL
|
||||
switch (d_state)
|
||||
@ -761,6 +765,16 @@ int pcps_opencl_acquisition_cc::general_work(int noutput_items,
|
||||
acquisition_message = 1;
|
||||
this->message_port_pub(pmt::mp("events"), pmt::from_long(acquisition_message));
|
||||
|
||||
// Copy and push current Gnss_Synchro to monitor queue
|
||||
if (d_enable_monitor_output)
|
||||
{
|
||||
auto **out = reinterpret_cast<Gnss_Synchro **>(&output_items[0]);
|
||||
Gnss_Synchro current_synchro_data = Gnss_Synchro();
|
||||
current_synchro_data = *d_gnss_synchro;
|
||||
*out[0] = current_synchro_data;
|
||||
noutput_items = 1; // Number of Gnss_Synchro objects produced
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -43,6 +43,7 @@
|
||||
#define CL_SILENCE_DEPRECATION
|
||||
#include "channel_fsm.h"
|
||||
#include "gnss_synchro.h"
|
||||
#include "gnss_block_interface.h"
|
||||
#include "opencl/fft_internal.h"
|
||||
#include <gnuradio/block.h>
|
||||
#include <gnuradio/fft/fft.h>
|
||||
@ -53,18 +54,16 @@
|
||||
#include <memory> // for weak_ptr
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
#else
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#endif
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_gnuradio_blocks
|
||||
* \{ */
|
||||
|
||||
|
||||
class pcps_opencl_acquisition_cc;
|
||||
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
typedef std::shared_ptr<pcps_opencl_acquisition_cc> pcps_opencl_acquisition_cc_sptr;
|
||||
#else
|
||||
typedef boost::shared_ptr<pcps_opencl_acquisition_cc> pcps_opencl_acquisition_cc_sptr;
|
||||
#endif
|
||||
using pcps_opencl_acquisition_cc_sptr = gnss_shared_ptr<pcps_opencl_acquisition_cc>;
|
||||
|
||||
pcps_opencl_acquisition_cc_sptr pcps_make_opencl_acquisition_cc(
|
||||
uint32_t sampled_ms,
|
||||
@ -75,7 +74,8 @@ pcps_opencl_acquisition_cc_sptr pcps_make_opencl_acquisition_cc(
|
||||
int samples_per_code,
|
||||
bool bit_transition_flag,
|
||||
bool dump,
|
||||
const std::string& dump_filename);
|
||||
const std::string& dump_filename,
|
||||
bool enable_monitor_output);
|
||||
|
||||
/*!
|
||||
* \brief This class implements a Parallel Code Phase Search Acquisition.
|
||||
@ -210,14 +210,16 @@ private:
|
||||
int samples_per_ms, int samples_per_code,
|
||||
bool bit_transition_flag,
|
||||
bool dump,
|
||||
const std::string& dump_filename);
|
||||
const std::string& dump_filename,
|
||||
bool enable_monitor_output);
|
||||
|
||||
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,
|
||||
const std::string& dump_filename);
|
||||
const std::string& dump_filename,
|
||||
bool enable_monitor_output);
|
||||
|
||||
void calculate_magnitudes(gr_complex* fft_begin, int doppler_shift,
|
||||
int doppler_offset);
|
||||
@ -290,6 +292,10 @@ private:
|
||||
bool d_active;
|
||||
bool d_core_working;
|
||||
bool d_dump;
|
||||
bool d_enable_monitor_output;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_PCPS_OPENCL_ACQUISITION_CC_H
|
||||
|
@ -40,7 +40,8 @@ pcps_quicksync_acquisition_cc_sptr pcps_quicksync_make_acquisition_cc(
|
||||
int32_t samples_per_code,
|
||||
bool bit_transition_flag,
|
||||
bool dump,
|
||||
const std::string& dump_filename)
|
||||
const std::string& dump_filename,
|
||||
bool enable_monitor_output)
|
||||
{
|
||||
return pcps_quicksync_acquisition_cc_sptr(
|
||||
new pcps_quicksync_acquisition_cc(
|
||||
@ -49,7 +50,8 @@ 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, dump_filename,
|
||||
enable_monitor_output));
|
||||
}
|
||||
|
||||
|
||||
@ -60,9 +62,10 @@ pcps_quicksync_acquisition_cc::pcps_quicksync_acquisition_cc(
|
||||
int32_t samples_per_ms, int32_t samples_per_code,
|
||||
bool bit_transition_flag,
|
||||
bool dump,
|
||||
const std::string& dump_filename) : gr::block("pcps_quicksync_acquisition_cc",
|
||||
gr::io_signature::make(1, 1, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)),
|
||||
gr::io_signature::make(0, 0, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)))
|
||||
const std::string& dump_filename,
|
||||
bool enable_monitor_output) : gr::block("pcps_quicksync_acquisition_cc",
|
||||
gr::io_signature::make(1, 1, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)),
|
||||
gr::io_signature::make(0, 1, sizeof(Gnss_Synchro)))
|
||||
{
|
||||
this->message_port_register_out(pmt::mp("events"));
|
||||
d_sample_counter = 0ULL; // SAMPLE COUNTER
|
||||
@ -104,6 +107,8 @@ pcps_quicksync_acquisition_cc::pcps_quicksync_acquisition_cc(
|
||||
d_dump = dump;
|
||||
d_dump_filename = dump_filename;
|
||||
|
||||
d_enable_monitor_output = enable_monitor_output;
|
||||
|
||||
d_code_folded = std::vector<gr_complex>(d_fft_size, lv_cmake(0.0F, 0.0F));
|
||||
d_signal_folded.reserve(d_fft_size);
|
||||
d_noise_floor_power = 0;
|
||||
@ -228,7 +233,7 @@ void pcps_quicksync_acquisition_cc::set_state(int32_t state)
|
||||
|
||||
int pcps_quicksync_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)))
|
||||
gr_vector_void_star& output_items)
|
||||
{
|
||||
/*
|
||||
* By J.Arribas, L.Esteve and M.Molina
|
||||
@ -507,6 +512,17 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items,
|
||||
acquisition_message = 1;
|
||||
this->message_port_pub(pmt::mp("events"), pmt::from_long(acquisition_message));
|
||||
// DLOG(INFO) << "END CASE 2";
|
||||
|
||||
// Copy and push current Gnss_Synchro to monitor queue
|
||||
if (d_enable_monitor_output)
|
||||
{
|
||||
auto **out = reinterpret_cast<Gnss_Synchro **>(&output_items[0]);
|
||||
Gnss_Synchro current_synchro_data = Gnss_Synchro();
|
||||
current_synchro_data = *d_gnss_synchro;
|
||||
*out[0] = current_synchro_data;
|
||||
noutput_items = 1; // Number of Gnss_Synchro objects produced
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -53,18 +53,16 @@
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
#else
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#endif
|
||||
|
||||
/** \addtogroup Acquisition
|
||||
* \{ */
|
||||
/** \addtogroup Acq_gnuradio_blocks
|
||||
* \{ */
|
||||
|
||||
|
||||
class pcps_quicksync_acquisition_cc;
|
||||
|
||||
#if GNURADIO_USES_STD_POINTERS
|
||||
using pcps_quicksync_acquisition_cc_sptr = std::shared_ptr<pcps_quicksync_acquisition_cc>;
|
||||
#else
|
||||
using pcps_quicksync_acquisition_cc_sptr = boost::shared_ptr<pcps_quicksync_acquisition_cc>;
|
||||
#endif
|
||||
using pcps_quicksync_acquisition_cc_sptr = gnss_shared_ptr<pcps_quicksync_acquisition_cc>;
|
||||
|
||||
pcps_quicksync_acquisition_cc_sptr pcps_quicksync_make_acquisition_cc(
|
||||
uint32_t folding_factor,
|
||||
@ -76,7 +74,8 @@ pcps_quicksync_acquisition_cc_sptr pcps_quicksync_make_acquisition_cc(
|
||||
int32_t samples_per_code,
|
||||
bool bit_transition_flag,
|
||||
bool dump,
|
||||
const std::string& dump_filename);
|
||||
const std::string& dump_filename,
|
||||
bool enable_monitor_output);
|
||||
|
||||
/*!
|
||||
* \brief This class implements a Parallel Code Phase Search Acquisition with
|
||||
@ -199,7 +198,8 @@ private:
|
||||
int32_t samples_per_ms, int32_t samples_per_code,
|
||||
bool bit_transition_flag,
|
||||
bool dump,
|
||||
const std::string& dump_filename);
|
||||
const std::string& dump_filename,
|
||||
bool enable_monitor_output);
|
||||
|
||||
pcps_quicksync_acquisition_cc(uint32_t folding_factor,
|
||||
uint32_t sampled_ms, uint32_t max_dwells,
|
||||
@ -207,7 +207,8 @@ private:
|
||||
int32_t samples_per_ms, int32_t samples_per_code,
|
||||
bool bit_transition_flag,
|
||||
bool dump,
|
||||
const std::string& dump_filename);
|
||||
const std::string& dump_filename,
|
||||
bool enable_monitor_output);
|
||||
|
||||
void calculate_magnitudes(gr_complex* fft_begin, int32_t doppler_shift,
|
||||
int32_t doppler_offset);
|
||||
@ -261,6 +262,10 @@ private:
|
||||
bool d_bit_transition_flag;
|
||||
bool d_active;
|
||||
bool d_dump;
|
||||
bool d_enable_monitor_output;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_PCPS_QUICKSYNC_ACQUISITION_CC_H
|
||||
|
@ -58,11 +58,13 @@ pcps_tong_acquisition_cc_sptr pcps_tong_make_acquisition_cc(
|
||||
uint32_t tong_init_val,
|
||||
uint32_t tong_max_val,
|
||||
uint32_t tong_max_dwells,
|
||||
bool dump, const std::string &dump_filename)
|
||||
bool dump,
|
||||
const std::string &dump_filename,
|
||||
bool enable_monitor_output)
|
||||
{
|
||||
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, dump_filename, enable_monitor_output));
|
||||
}
|
||||
|
||||
|
||||
@ -76,9 +78,10 @@ pcps_tong_acquisition_cc::pcps_tong_acquisition_cc(
|
||||
uint32_t tong_max_val,
|
||||
uint32_t tong_max_dwells,
|
||||
bool dump,
|
||||
const std::string &dump_filename) : gr::block("pcps_tong_acquisition_cc",
|
||||
gr::io_signature::make(1, 1, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)),
|
||||
gr::io_signature::make(0, 0, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)))
|
||||
const std::string &dump_filename,
|
||||
bool enable_monitor_output) : gr::block("pcps_tong_acquisition_cc",
|
||||
gr::io_signature::make(1, 1, static_cast<int>(sizeof(gr_complex) * sampled_ms * samples_per_ms)),
|
||||
gr::io_signature::make(0, 1, sizeof(Gnss_Synchro)))
|
||||
{
|
||||
this->message_port_register_out(pmt::mp("events"));
|
||||
d_sample_counter = 0ULL; // SAMPLE COUNTER
|
||||
@ -112,6 +115,8 @@ pcps_tong_acquisition_cc::pcps_tong_acquisition_cc(
|
||||
d_dump = dump;
|
||||
d_dump_filename = dump_filename;
|
||||
|
||||
d_enable_monitor_output = enable_monitor_output;
|
||||
|
||||
d_doppler_resolution = 0;
|
||||
d_threshold = 0;
|
||||
d_doppler_step = 0;
|
||||
@ -224,7 +229,7 @@ void pcps_tong_acquisition_cc::set_state(int32_t state)
|
||||
|
||||
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)))
|
||||
gr_vector_void_star &output_items)
|
||||
{
|
||||
int32_t acquisition_message = -1; // 0=STOP_CHANNEL 1=ACQ_SUCCEES 2=ACQ_FAIL
|
||||
|
||||
@ -401,6 +406,16 @@ int pcps_tong_acquisition_cc::general_work(int noutput_items,
|
||||
acquisition_message = 1;
|
||||
this->message_port_pub(pmt::mp("events"), pmt::from_long(acquisition_message));
|
||||
|
||||
// Copy and push current Gnss_Synchro to monitor queue
|
||||
if (d_enable_monitor_output)
|
||||
{
|
||||
auto **out = reinterpret_cast<Gnss_Synchro **>(&output_items[0]);
|
||||
Gnss_Synchro current_synchro_data = Gnss_Synchro();
|
||||
current_synchro_data = *d_gnss_synchro;
|
||||
*out[0] = current_synchro_data;
|
||||
noutput_items = 1; // Number of Gnss_Synchro objects produced
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user