mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-15 12:40:35 +00:00
Merge branch 'next' into Acquisition
This commit is contained in:
commit
eea1afea18
484
CMakeLists.txt
484
CMakeLists.txt
File diff suppressed because it is too large
Load Diff
29
README.md
29
README.md
@ -394,9 +394,9 @@ $ sudo apt-get install autoconf automake libtool curl make g++ unzip
|
|||||||
and then:
|
and then:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ wget https://github.com/protocolbuffers/protobuf/releases/download/v3.12.2/protobuf-cpp-3.12.2.tar.gz
|
$ wget https://github.com/protocolbuffers/protobuf/releases/download/v3.12.3/protobuf-cpp-3.12.3.tar.gz
|
||||||
$ tar xvfz protobuf-cpp-3.12.2.tar.gz
|
$ tar xvfz protobuf-cpp-3.12.3.tar.gz
|
||||||
$ cd protobuf-3.12.2
|
$ cd protobuf-3.12.3
|
||||||
$ ./autogen.sh
|
$ ./autogen.sh
|
||||||
$ ./configure
|
$ ./configure
|
||||||
$ make
|
$ make
|
||||||
@ -519,20 +519,29 @@ the function to execute. It mimics GNU Radio's [VOLK](https://www.libvolk.org/)
|
|||||||
library, so if you still have not run `volk_profile`, this is a good moment to
|
library, so if you still have not run `volk_profile`, this is a good moment to
|
||||||
do so.
|
do so.
|
||||||
|
|
||||||
If you are using Eclipse as your development environment, CMake can create the
|
If you are using [Eclipse](https://www.eclipse.org/ide/) as your development
|
||||||
project for you. Type:
|
environment, CMake can create the project for you. However, if the build
|
||||||
|
directory is a subdirectory of the source directory (as is the case of the
|
||||||
|
`gnss-sdr/build` folder), this is not supported well by Eclipse. It is strongly
|
||||||
|
recommended to use a build directory which is a sibling of the source directory.
|
||||||
|
Hence, type from the `gnss-sdr` root folder:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DECLIPSE_GENERATE_SOURCE_PROJECT=TRUE -DCMAKE_ECLIPSE_VERSION=4.5 .
|
$ cd ..
|
||||||
|
$ mkdir eclipse && cd eclipse
|
||||||
|
$ cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT=TRUE -DCMAKE_ECLIPSE_VERSION=4.5 ../gnss-sdr
|
||||||
```
|
```
|
||||||
|
|
||||||
and then import the created project file into Eclipse:
|
and then import the created project into Eclipse:
|
||||||
|
|
||||||
1. Import project using Menu File -> Import.
|
1. Import project using Menu File -> Import.
|
||||||
2. Select General -> Existing projects into workspace.
|
2. Select General -> Existing projects into workspace.
|
||||||
3. Browse where your build tree is and select the root build tree directory.
|
3. Select your root directory: Browse and select your newly created `eclipse/`
|
||||||
Keep "Copy projects into workspace" unchecked.
|
directory. Keep "Copy projects into workspace" unchecked.
|
||||||
4. You get a fully functional Eclipse project.
|
4. Click on "Finish" and you will get a fully functional Eclipse project.
|
||||||
|
|
||||||
|
After building the project, you will find the generated binaries at
|
||||||
|
`eclipse/install`.
|
||||||
|
|
||||||
###### Build GN3S V2 Custom firmware and driver (OPTIONAL):
|
###### Build GN3S V2 Custom firmware and driver (OPTIONAL):
|
||||||
|
|
||||||
|
@ -17,136 +17,61 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
if(DEFINED ENV{GFORTRAN_ROOT})
|
if(DEFINED ENV{GFORTRAN_ROOT})
|
||||||
set(GFORTRAN_ROOT_USER_DEFINED
|
set(GFORTRAN_ROOT_USER_DEFINED
|
||||||
${GFORTRAN_ROOT_USER_DEFINED}
|
|
||||||
$ENV{GFORTRAN_ROOT}
|
$ENV{GFORTRAN_ROOT}
|
||||||
|
${GFORTRAN_ROOT_USER_DEFINED}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(GCC_MAJOR_SERIES 11 10 9 8 7 6 5)
|
||||||
|
set(GCC4_SERIES 4.9.1 4.9 4.8.3 4.8.1 4.7.2 4.7 4.8.2 4.8 4.7 4.6 4.5 4.4.4 4.4)
|
||||||
|
set(GCC_SERIES ${GCC_MAJOR_SERIES} ${GCC4_SERIES})
|
||||||
|
|
||||||
find_library(GFORTRAN NAMES gfortran
|
find_library(GFORTRAN NAMES gfortran
|
||||||
PATHS ${GFORTRAN_ROOT_USER_DEFINED}
|
PATHS ${GFORTRAN_ROOT_USER_DEFINED}
|
||||||
/usr/lib64
|
/usr/lib64
|
||||||
/usr/lib/gcc/x86_64-linux-gnu
|
/usr/lib/gcc/x86_64-linux-gnu # Debian
|
||||||
/usr/lib/gcc/i686-linux-gnu
|
|
||||||
/usr/lib/gcc/i386-linux-gnu
|
/usr/lib/gcc/i386-linux-gnu
|
||||||
/usr/lib/gcc/x86_64-linux-gnu/4.6 # Ubuntu 12.04
|
/usr/lib/gcc/i486-linux-gnu
|
||||||
/usr/lib/gcc/i686-linux-gnu/4.6
|
/usr/lib/gcc/i586-linux-gnu
|
||||||
/usr/lib/gcc/x86_64-linux-gnu/4.7
|
/usr/lib/gcc/i686-linux-gnu
|
||||||
/usr/lib/gcc/i686-linux-gnu/4.7
|
/usr/lib/gcc/arm-linux-gnueabihf
|
||||||
/usr/lib/gcc/x86_64-linux-gnu/4.8
|
/usr/lib/gcc/aarch64-linux-gnu
|
||||||
/usr/lib/gcc/i686-linux-gnu/4.8
|
/usr/lib/gcc/arm-linux-gnueabi
|
||||||
/usr/lib/gcc/x86_64-linux-gnu/4.9
|
/usr/lib/gcc/alpha-linux-gnu
|
||||||
/usr/lib/gcc/i686-linux-gnu/4.9
|
/usr/lib/gcc/riscv64-linux-gnu
|
||||||
/usr/lib/gcc/x86_64-redhat-linux/4.7.2 # Fedora 18
|
/usr/lib/gcc/hppa-linux-gnu
|
||||||
/usr/lib/gcc/i686-redhat-linux/4.7.2
|
/usr/lib/gcc/m68k-linux-gnu
|
||||||
/usr/lib/gcc/x86_64-redhat-linux/4.8.1 # Fedora 19
|
/usr/lib/gcc/i686-gnu
|
||||||
/usr/lib/gcc/x86_64-redhat-linux/4.8.3 # Fedora 20
|
/usr/lib/gcc/x86_64-kfreebsd-gnu
|
||||||
/usr/lib/gcc/x86_64-redhat-linux/4.9.1 # Fedora 21
|
/usr/lib/gcc/i686-kfreebsd-gnu
|
||||||
/usr/lib/gcc/i686-redhat-linux/4.8.1
|
/usr/lib/gcc/mips-linux-gnu
|
||||||
/usr/lib/gcc/i686-redhat-linux/4.8.3
|
/usr/lib/gcc/mips64el-linux-gnuabi64
|
||||||
/usr/lib/gcc/i686-redhat-linux/4.9.1
|
/usr/lib/gcc/mipsel-linux-gnu
|
||||||
/usr/lib/gcc/x86_64-redhat-linux/4.4.4 # CentOS 6
|
/usr/lib/gcc/powerpc-linux-gnu
|
||||||
/usr/lib/gcc/i686-redhat-linux/4.4.4
|
/usr/lib/gcc/powerpc-linux-gnuspe
|
||||||
/usr/lib/gcc/x86_64-redhat-linux/4.8.2
|
/usr/lib/gcc/powerpc64-linux-gnu
|
||||||
/usr/lib/gcc/i686-redhat-linux/4.8.2
|
/usr/lib/gcc/powerpc64le-linux-gnu
|
||||||
/usr/lib/gcc/x86_64-redhat-linux/7
|
/usr/lib/gcc/s390x-linux-gnu
|
||||||
/usr/lib/gcc/i686-redhat-linux/7
|
/usr/lib/gcc/sparc64-linux-gnu
|
||||||
/usr/lib/gcc/x86_64-redhat-linux/8
|
/usr/lib/gcc/x86_64-linux-gnux32
|
||||||
/usr/lib/gcc/i686-redhat-linux/8
|
/usr/lib/gcc/sh4-linux-gnu
|
||||||
/usr/lib/gcc/x86_64-redhat-linux/9
|
/usr/lib/gcc/i686-redhat-linux # Fedora
|
||||||
/usr/lib/gcc/i686-redhat-linux/9
|
/usr/lib64/gcc/x86_64-redhat-linux
|
||||||
/usr/lib64/gcc/x86_64-redhat-linux/7
|
/usr/lib/gcc/armv7hl-redhat-linux-gnueabi
|
||||||
/usr/lib64/gcc/x86_64-redhat-linux/8
|
/usr/lib/gcc/aarch64-redhat-linux
|
||||||
/usr/lib64/gcc/x86_64-redhat-linux/9
|
/usr/lib/gcc/ppc64le-redhat-linux
|
||||||
/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/7
|
/usr/lib/gcc/s390x-redhat-linux
|
||||||
/usr/lib/gcc/aarch64-redhat-linux/7
|
/usr/lib64/gcc/x86_64-suse-linux # openSUSE
|
||||||
/usr/lib/gcc/i586-suse-linux/4.8 # OpenSUSE 13.1
|
/usr/lib/gcc/i586-suse-linux
|
||||||
/usr/lib/gcc/i586-suse-linux/4.9
|
/usr/lib/gcc/x86_64-suse-linux
|
||||||
/usr/lib/gcc/i586-suse-linux/7
|
/usr/lib/gcc/armv6hl-suse-linux-gnueabi
|
||||||
/usr/lib/gcc/i586-suse-linux/8
|
/usr/lib/gcc/armv7hl-suse-linux-gnueabi
|
||||||
/usr/lib/gcc/i586-suse-linux/9
|
/usr/lib64/gcc/aarch64-suse-linux
|
||||||
/usr/lib/gcc/x86_64-suse-linux/4.8
|
/usr/lib64/gcc/powerpc64-suse-linux
|
||||||
/usr/lib/gcc/x86_64-suse-linux/4.9
|
/usr/lib64/gcc/powerpc64le-suse-linux
|
||||||
/usr/lib64/gcc/x86_64-suse-linux/7
|
/usr/lib64/gcc/riscv64-suse-linux
|
||||||
/usr/lib64/gcc/x86_64-suse-linux/8
|
/usr/lib64/gcc/s390x-suse-linux
|
||||||
/usr/lib64/gcc/x86_64-suse-linux/9
|
/usr/lib/x86_64-linux-gnu
|
||||||
/usr/lib/gcc/armv7hl-suse-linux-gnueabi/7
|
|
||||||
/usr/lib/gcc/armv7hl-suse-linux-gnueabi/8
|
|
||||||
/usr/lib/gcc/armv7hl-suse-linux-gnueabi/9
|
|
||||||
/usr/lib64/gcc/aarch64-suse-linux/7
|
|
||||||
/usr/lib64/gcc/aarch64-suse-linux/8
|
|
||||||
/usr/lib64/gcc/aarch64-suse-linux/9
|
|
||||||
/usr/lib64/gcc/powerpc64-suse-linux/7
|
|
||||||
/usr/lib64/gcc/powerpc64-suse-linux/8
|
|
||||||
/usr/lib64/gcc/powerpc64-suse-linux/9
|
|
||||||
/usr/lib64/gcc/powerpc64le-suse-linux/7
|
|
||||||
/usr/lib64/gcc/powerpc64le-suse-linux/8
|
|
||||||
/usr/lib64/gcc/powerpc64le-suse-linux/9
|
|
||||||
/usr/lib/gcc/i486-linux-gnu # Debian 7
|
|
||||||
/usr/lib/gcc/i486-linux-gnu/4.4
|
|
||||||
/usr/lib/gcc/i486-linux-gnu/4.6
|
|
||||||
/usr/lib/gcc/i486-linux-gnu/4.7
|
|
||||||
/usr/lib/gcc/i486-linux-gnu/4.8
|
|
||||||
/usr/lib/gcc/i486-linux-gnu/4.9
|
|
||||||
/usr/lib/gcc/i586-linux-gnu/4.9
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabihf/4.4 # Debian armhf
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabihf/4.5
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabihf/4.6
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabihf/4.7
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabihf/4.8
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabihf/4.9
|
|
||||||
/usr/lib/gcc/aarch64-linux-gnu/4.9 # Debian arm64
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabi/4.7 # Debian armel
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabi/4.9
|
|
||||||
/usr/lib/gcc/x86_64-linux-gnu/5
|
|
||||||
/usr/lib/gcc/i686-linux-gnu/5
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabi/5
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabihf/5
|
|
||||||
/usr/lib/gcc/aarch64-linux-gnu/5
|
|
||||||
/usr/lib/gcc/x86_64-linux-gnu/6 # Ubuntu 16.10
|
|
||||||
/usr/lib/gcc/alpha-linux-gnu/6
|
|
||||||
/usr/lib/gcc/aarch64-linux-gnu/6
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabi/6
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabihf/6
|
|
||||||
/usr/lib/gcc/hppa-linux-gnu/6
|
|
||||||
/usr/lib/gcc/i686-gnu/6
|
|
||||||
/usr/lib/gcc/i686-linux-gnu/6
|
|
||||||
/usr/lib/gcc/x86_64-kfreebsd-gnu/6
|
|
||||||
/usr/lib/gcc/i686-kfreebsd-gnu/6
|
|
||||||
/usr/lib/gcc/m68k-linux-gnu/6
|
|
||||||
/usr/lib/gcc/mips-linux-gnu/6
|
|
||||||
/usr/lib/gcc/mips64el-linux-gnuabi64/6
|
|
||||||
/usr/lib/gcc/mipsel-linux-gnu/6
|
|
||||||
/usr/lib/gcc/powerpc-linux-gnu/6
|
|
||||||
/usr/lib/gcc/powerpc-linux-gnuspe/6
|
|
||||||
/usr/lib/gcc/powerpc64-linux-gnu/6
|
|
||||||
/usr/lib/gcc/powerpc64le-linux-gnu/6
|
|
||||||
/usr/lib/gcc/s390x-linux-gnu/6
|
|
||||||
/usr/lib/gcc/sparc64-linux-gnu/6
|
|
||||||
/usr/lib/gcc/x86_64-linux-gnux32/6
|
|
||||||
/usr/lib/gcc/sh4-linux-gnu/6
|
|
||||||
/usr/lib/gcc/x86_64-linux-gnu/7 # Debian 9 Buster
|
|
||||||
/usr/lib/gcc/alpha-linux-gnu/7
|
|
||||||
/usr/lib/gcc/aarch64-linux-gnu/7
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabi/7
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabihf/7
|
|
||||||
/usr/lib/gcc/hppa-linux-gnu/7
|
|
||||||
/usr/lib/gcc/i686-gnu/7
|
|
||||||
/usr/lib/gcc/i686-linux-gnu/7
|
|
||||||
/usr/lib/gcc/x86_64-kfreebsd-gnu/7
|
|
||||||
/usr/lib/gcc/i686-kfreebsd-gnu/7
|
|
||||||
/usr/lib/gcc/m68k-linux-gnu/7
|
|
||||||
/usr/lib/gcc/mips-linux-gnu/7
|
|
||||||
/usr/lib/gcc/mips64el-linux-gnuabi64/7
|
|
||||||
/usr/lib/gcc/mipsel-linux-gnu/7
|
|
||||||
/usr/lib/gcc/powerpc-linux-gnu/7
|
|
||||||
/usr/lib/gcc/powerpc-linux-gnuspe/7
|
|
||||||
/usr/lib/gcc/powerpc64-linux-gnu/7
|
|
||||||
/usr/lib/gcc/powerpc64le-linux-gnu/7
|
|
||||||
/usr/lib/gcc/s390x-linux-gnu/7
|
|
||||||
/usr/lib/gcc/sparc64-linux-gnu/7
|
|
||||||
/usr/lib/gcc/x86_64-linux-gnux32/7
|
|
||||||
/usr/lib/gcc/sh4-linux-gnu/7
|
|
||||||
/usr/lib/x86_64-linux-gnu # libgfortran4
|
|
||||||
/usr/lib/i386-linux-gnu
|
/usr/lib/i386-linux-gnu
|
||||||
/usr/lib/arm-linux-gnueabi
|
/usr/lib/arm-linux-gnueabi
|
||||||
/usr/lib/arm-linux-gnueabihf
|
/usr/lib/arm-linux-gnueabihf
|
||||||
@ -165,70 +90,12 @@ find_library(GFORTRAN NAMES gfortran
|
|||||||
/usr/lib/sparc64-linux-gnu
|
/usr/lib/sparc64-linux-gnu
|
||||||
/usr/lib/x86_64-linux-gnux32
|
/usr/lib/x86_64-linux-gnux32
|
||||||
/usr/lib/alpha-linux-gnu
|
/usr/lib/alpha-linux-gnu
|
||||||
/usr/lib/gcc/x86_64-linux-gnu/8 # libgfortran-8
|
/usr/lib/riscv64-linux-gnu
|
||||||
/usr/lib/gcc/aarch64-linux-gnu/8
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabi/8
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabihf/8
|
|
||||||
/usr/lib/gcc/hppa-linux-gnu/8
|
|
||||||
/usr/lib/gcc/m68k-linux-gnu/8
|
|
||||||
/usr/lib/gcc/mips-linux-gnu/8
|
|
||||||
/usr/lib/gcc/mips64el-linux-gnuabi64/8
|
|
||||||
/usr/lib/gcc/mipsel-linux-gnu/8
|
|
||||||
/usr/lib/gcc/i686-linux-gnu/8
|
|
||||||
/usr/lib/gcc/powerpc-linux-gnuspe/8
|
|
||||||
/usr/lib/gcc/powerpc64-linux-gnu/8
|
|
||||||
/usr/lib/gcc/powerpc64le-linux-gnu/8
|
|
||||||
/usr/lib/gcc/s390x-linux-gnu/8
|
|
||||||
/usr/lib/gcc/alpha-linux-gnu/8
|
|
||||||
/usr/lib/gcc/riscv64-linux-gnu/8
|
|
||||||
/usr/lib/gcc/sh4-linux-gnu/8
|
|
||||||
/usr/lib/gcc/sparc64-linux-gnu/8
|
|
||||||
/usr/lib/gcc/x86_64-linux-gnux32/8
|
|
||||||
/usr/lib/gcc/x86_64-kfreebsd-gnu/8
|
|
||||||
/usr/lib/gcc/i686-kfreebsd-gnu/8
|
|
||||||
/usr/lib/gcc/alpha-linux-gnu/9 # libgfortran-9
|
|
||||||
/usr/lib/gcc/x86_64-linux-gnu/9
|
|
||||||
/usr/lib/gcc/aarch64-linux-gnu/9
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabi/9
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabihf/9
|
|
||||||
/usr/lib/gcc/i686-linux-gnu/9
|
|
||||||
/usr/lib/gcc/powerpc64le-linux-gnu/9
|
|
||||||
/usr/lib/gcc/powerpc64-linux-gnu/9
|
|
||||||
/usr/lib/gcc/s390x-linux-gnu/9
|
|
||||||
/usr/lib/gcc/hppa-linux-gnu/9
|
|
||||||
/usr/lib/gcc/m68k-linux-gnu/9
|
|
||||||
/usr/lib/gcc/mips-linux-gnu/9
|
|
||||||
/usr/lib/gcc/mips64el-linux-gnuabi64/9
|
|
||||||
/usr/lib/gcc/mipsel-linux-gnu/9
|
|
||||||
/usr/lib/gcc/riscv64-linux-gnu/9
|
|
||||||
/usr/lib/gcc/sh4-linux-gnu/9
|
|
||||||
/usr/lib/gcc/sparc64-linux-gnu/9
|
|
||||||
/usr/lib/gcc/x86_64-linux-gnux32/9
|
|
||||||
/usr/lib/gcc/x86_64-kfreebsd-gnu/9
|
|
||||||
/usr/lib/gcc/i686-kfreebsd-gnu/9
|
|
||||||
/usr/lib/gcc/alpha-linux-gnu/10 # libgfortran-10
|
|
||||||
/usr/lib/gcc/x86_64-linux-gnu/10
|
|
||||||
/usr/lib/gcc/aarch64-linux-gnu/10
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabi/10
|
|
||||||
/usr/lib/gcc/arm-linux-gnueabihf/10
|
|
||||||
/usr/lib/gcc/i686-linux-gnu/10
|
|
||||||
/usr/lib/gcc/powerpc64le-linux-gnu/10
|
|
||||||
/usr/lib/gcc/powerpc64-linux-gnu/10
|
|
||||||
/usr/lib/gcc/s390x-linux-gnu/10
|
|
||||||
/usr/lib/gcc/hppa-linux-gnu/10
|
|
||||||
/usr/lib/gcc/m68k-linux-gnu/10
|
|
||||||
/usr/lib/gcc/mips-linux-gnu/10
|
|
||||||
/usr/lib/gcc/mips64el-linux-gnuabi64/10
|
|
||||||
/usr/lib/gcc/mipsel-linux-gnu/10
|
|
||||||
/usr/lib/gcc/riscv64-linux-gnu/10
|
|
||||||
/usr/lib/gcc/sh4-linux-gnu/10
|
|
||||||
/usr/lib/gcc/sparc64-linux-gnu/10
|
|
||||||
/usr/lib/gcc/x86_64-linux-gnux32/10
|
|
||||||
/usr/lib/gcc/x86_64-kfreebsd-gnu/10
|
|
||||||
/usr/lib/gcc/i686-kfreebsd-gnu/10
|
|
||||||
/usr/local/lib
|
/usr/local/lib
|
||||||
/usr/local/lib64
|
/usr/local/lib64
|
||||||
/usr/local/lib/i386
|
/usr/local/lib/i386
|
||||||
|
PATH_SUFFIXES
|
||||||
|
${GCC_SERIES}
|
||||||
)
|
)
|
||||||
|
|
||||||
set_package_properties(GFORTRAN PROPERTIES
|
set_package_properties(GFORTRAN PROPERTIES
|
||||||
|
@ -15,28 +15,41 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc
|
|||||||
- Faster internal handling of `Gnss_Synchro` objects by reducing the amount of
|
- Faster internal handling of `Gnss_Synchro` objects by reducing the amount of
|
||||||
copying via adding `noexcept` move constructor and move assignment operators,
|
copying via adding `noexcept` move constructor and move assignment operators,
|
||||||
so the move semantics are also used in STL containers.
|
so the move semantics are also used in STL containers.
|
||||||
|
- Add building option `ENABLE_STRIP` to generate stripped binaries (that is,
|
||||||
|
without debugging symbols), smaller in size and potentially providing better
|
||||||
|
performance than non-stripped counterparts. Only for GCC in Release build
|
||||||
|
mode. Set to `OFF` by default.
|
||||||
|
|
||||||
### Improvements in Maintainability:
|
### Improvements in Maintainability:
|
||||||
|
|
||||||
- The software can now be built against the GNU Radio 3.9 API that uses C++11
|
- The software can now be built against the GNU Radio 3.9 API that uses C++11
|
||||||
smart pointers instead of Boost smart pointers.
|
smart pointers instead of Boost smart pointers.
|
||||||
- Remove python six module as a dependency if using Python 3.x.
|
- The software can now be built against Boost <= 1.73 (minimum version: 1.53).
|
||||||
- Fixes warnings risen by GCC 10 and Clang 10.
|
- Removed python six module as a dependency if using Python 3.x.
|
||||||
|
- Improved usage of smart pointers to better express ownership.
|
||||||
|
- Add definition of std::make_unique for buidings with C++11, and make use of it
|
||||||
|
along the source code.
|
||||||
|
- Fixed building with GCC 10 (gcc-10 and above flipped a default from `-fcommon`
|
||||||
|
to `-fno-common`, causing an error due to multiple defined lambda functions).
|
||||||
|
- Fixed warnings risen by GCC 10 and Clang 10.
|
||||||
|
- Various improvements in the CMake scripts: better decision on the C++ standard
|
||||||
|
to use; simplifications for various API dependency and environment versions
|
||||||
|
requirements, with more intuitive naming for variables; fixed the
|
||||||
|
`ENABLE_CLANG_TIDY` option; better GFORTRAN module; and broader adoption of
|
||||||
|
the modern per-target approach.
|
||||||
|
|
||||||
### Improvements in Portability:
|
### Improvements in Portability:
|
||||||
|
|
||||||
- The software can now be cross-compiled on Petalinux environments.
|
- The software can now be cross-compiled on Petalinux environments.
|
||||||
- Fixes building with GCC 10 (gcc-10 and above flipped a default from `-fcommon`
|
|
||||||
to `-fno-common`, causing an error due to multiple defined lambda functions).
|
|
||||||
- Make use of `std::span` if the compiler supports it, and use gsl-lite as a
|
- Make use of `std::span` if the compiler supports it, and use gsl-lite as a
|
||||||
fallback. The latter has been updated to version
|
fallback. The latter has been updated to version
|
||||||
[0.37.0](https://github.com/gsl-lite/gsl-lite/releases/tag/0.37.0).
|
[0.37.0](https://github.com/gsl-lite/gsl-lite/releases/tag/0.37.0).
|
||||||
- Fixes building against Boost 1.73 in old compilers (_e.g._, GCC 4.x).
|
- Improved finding of libgfortran in openSUSE and Fedora distributions.
|
||||||
|
|
||||||
### Improvements in Reliability:
|
### Improvements in Reliability:
|
||||||
|
|
||||||
- Fixed a bug in GLONASS GNAV CRC computation.
|
- Fixed a bug in GLONASS GNAV CRC computation.
|
||||||
- Fix possible buffer overflow in the generation of RTCM messages.
|
- Fixed a possible buffer overflow in the generation of RTCM messages.
|
||||||
|
|
||||||
### Improvements in Reproducibility:
|
### Improvements in Reproducibility:
|
||||||
|
|
||||||
@ -45,6 +58,14 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc
|
|||||||
|
|
||||||
### Improvements in Usability:
|
### Improvements in Usability:
|
||||||
|
|
||||||
|
- Do not pollute the source directory if the software is built from an
|
||||||
|
out-of-source-tree directory. Downloaded external sources and test raw files
|
||||||
|
are now stored in a `./thirdparty` folder under the building directory. In
|
||||||
|
case of an out-of-source-tree build, the generated binaries are stored in an
|
||||||
|
`./install` folder, also under the building directory. The old behavior for
|
||||||
|
generated binaries is maintained if the building is done from any source tree
|
||||||
|
subfolder (for instance, `gnss-sdr/build`): in that case, binaries are stored
|
||||||
|
in the source tree (under `gnss-sdr/install`).
|
||||||
- Updated version of the Contributor Covenant to version 2.0.
|
- Updated version of the Contributor Covenant to version 2.0.
|
||||||
- Added a Matlab script to quantize the input signal with a given number of bits
|
- Added a Matlab script to quantize the input signal with a given number of bits
|
||||||
per sample.
|
per sample.
|
||||||
|
@ -8,22 +8,22 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
set(PVT_ADAPTER_SOURCES
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(pvt_adapters STATIC)
|
||||||
|
target_sources(pvt_adapters
|
||||||
|
PRIVATE
|
||||||
rtklib_pvt.cc
|
rtklib_pvt.cc
|
||||||
)
|
PUBLIC
|
||||||
|
|
||||||
set(PVT_ADAPTER_HEADERS
|
|
||||||
rtklib_pvt.h
|
rtklib_pvt.h
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${PVT_ADAPTER_HEADERS})
|
source_group(Headers FILES rtklib_pvt.h)
|
||||||
|
add_library(pvt_adapters rtklib_pvt.cc rtklib_pvt.h)
|
||||||
add_library(pvt_adapters ${PVT_ADAPTER_SOURCES} ${PVT_ADAPTER_HEADERS})
|
endif()
|
||||||
|
|
||||||
target_link_libraries(pvt_adapters
|
target_link_libraries(pvt_adapters
|
||||||
PUBLIC
|
PUBLIC
|
||||||
pvt_gr_blocks
|
pvt_gr_blocks
|
||||||
algorithms_libs_rtklib
|
|
||||||
PRIVATE
|
PRIVATE
|
||||||
gnss_sdr_flags
|
gnss_sdr_flags
|
||||||
Glog::glog
|
Glog::glog
|
||||||
@ -35,8 +35,11 @@ target_include_directories(pvt_adapters
|
|||||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||||
)
|
)
|
||||||
|
|
||||||
if(Boost_VERSION_STRING VERSION_LESS 1.58.0)
|
if(USE_OLD_BOOST_MATH_COMMON_FACTOR)
|
||||||
target_compile_definitions(pvt_adapters PRIVATE -DOLD_BOOST=1)
|
target_compile_definitions(pvt_adapters
|
||||||
|
PRIVATE
|
||||||
|
-DUSE_OLD_BOOST_MATH_COMMON_FACTOR=1
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ENABLE_CLANG_TIDY)
|
if(ENABLE_CLANG_TIDY)
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#include "rtklib_rtkpos.h" // for rtkfree, rtkinit
|
#include "rtklib_rtkpos.h" // for rtkfree, rtkinit
|
||||||
#include <glog/logging.h> // for LOG
|
#include <glog/logging.h> // for LOG
|
||||||
#include <iostream> // for operator<<
|
#include <iostream> // for operator<<
|
||||||
#if OLD_BOOST
|
#if USE_OLD_BOOST_MATH_COMMON_FACTOR
|
||||||
#include <boost/math/common_factor_rt.hpp>
|
#include <boost/math/common_factor_rt.hpp>
|
||||||
namespace bc = boost::math;
|
namespace bc = boost::math;
|
||||||
#else
|
#else
|
||||||
|
@ -7,17 +7,18 @@
|
|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
#
|
#
|
||||||
|
|
||||||
set(PVT_GR_BLOCKS_SOURCES
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(pvt_gr_blocks STATIC)
|
||||||
|
target_sources(pvt_gr_blocks
|
||||||
|
PRIVATE
|
||||||
rtklib_pvt_gs.cc
|
rtklib_pvt_gs.cc
|
||||||
)
|
PUBLIC
|
||||||
|
|
||||||
set(PVT_GR_BLOCKS_HEADERS
|
|
||||||
rtklib_pvt_gs.h
|
rtklib_pvt_gs.h
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${PVT_GR_BLOCKS_HEADERS})
|
source_group(Headers FILES rtklib_pvt_gs.h)
|
||||||
|
add_library(pvt_gr_blocks rtklib_pvt_gs.cc rtklib_pvt_gs.h)
|
||||||
add_library(pvt_gr_blocks ${PVT_GR_BLOCKS_SOURCES} ${PVT_GR_BLOCKS_HEADERS})
|
endif()
|
||||||
|
|
||||||
if(${FILESYSTEM_FOUND})
|
if(${FILESYSTEM_FOUND})
|
||||||
target_compile_definitions(pvt_gr_blocks PRIVATE -DHAS_STD_FILESYSTEM=1)
|
target_compile_definitions(pvt_gr_blocks PRIVATE -DHAS_STD_FILESYSTEM=1)
|
||||||
@ -32,11 +33,11 @@ endif()
|
|||||||
target_link_libraries(pvt_gr_blocks
|
target_link_libraries(pvt_gr_blocks
|
||||||
PUBLIC
|
PUBLIC
|
||||||
algorithms_libs_rtklib
|
algorithms_libs_rtklib
|
||||||
core_system_parameters
|
|
||||||
Boost::date_time
|
Boost::date_time
|
||||||
Gnuradio::pmt
|
Gnuradio::pmt
|
||||||
Gnuradio::runtime
|
Gnuradio::runtime
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
algorithms_libs
|
||||||
pvt_libs
|
pvt_libs
|
||||||
Gflags::gflags
|
Gflags::gflags
|
||||||
Glog::glog
|
Glog::glog
|
||||||
@ -49,7 +50,7 @@ if(GNURADIO_USES_STD_POINTERS)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_VERSION VERSION_GREATER 3.1)
|
if(USE_GENERIC_LAMBDAS)
|
||||||
set(has_generic_lambdas HAS_GENERIC_LAMBDA=1)
|
set(has_generic_lambdas HAS_GENERIC_LAMBDA=1)
|
||||||
set(no_has_generic_lambdas HAS_GENERIC_LAMBDA=0)
|
set(no_has_generic_lambdas HAS_GENERIC_LAMBDA=0)
|
||||||
target_compile_definitions(pvt_gr_blocks
|
target_compile_definitions(pvt_gr_blocks
|
||||||
@ -73,25 +74,20 @@ if(ENABLE_CLANG_TIDY)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(Boost_VERSION_STRING VERSION_LESS 1.58.0)
|
if(USE_OLD_BOOST_MATH_COMMON_FACTOR)
|
||||||
target_compile_definitions(pvt_gr_blocks PRIVATE -DOLD_BOOST=1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(Boost_VERSION_STRING VERSION_GREATER 1.72.99)
|
|
||||||
target_compile_definitions(pvt_gr_blocks
|
target_compile_definitions(pvt_gr_blocks
|
||||||
PRIVATE
|
PRIVATE
|
||||||
-DBOOST_173_OR_GREATER=1
|
-DUSE_OLD_BOOST_MATH_COMMON_FACTOR=1
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Check if we have std::put_time (Workaround for gcc < 5.0)
|
if(USE_BOOST_BIND_PLACEHOLDERS)
|
||||||
include(CheckCXXSourceCompiles)
|
target_compile_definitions(pvt_gr_blocks
|
||||||
check_cxx_source_compiles("
|
PRIVATE
|
||||||
#include <iomanip>
|
-DUSE_BOOST_BIND_PLACEHOLDERS=1
|
||||||
int main()
|
|
||||||
{ std::put_time(nullptr, \"\"); }"
|
|
||||||
has_put_time
|
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(${has_put_time})
|
if(${has_put_time})
|
||||||
target_compile_definitions(pvt_gr_blocks PRIVATE -DHAS_PUT_TIME=1)
|
target_compile_definitions(pvt_gr_blocks PRIVATE -DHAS_PUT_TIME=1)
|
||||||
endif()
|
endif()
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "glonass_gnav_utc_model.h"
|
#include "glonass_gnav_utc_model.h"
|
||||||
#include "gnss_frequencies.h"
|
#include "gnss_frequencies.h"
|
||||||
#include "gnss_sdr_create_directory.h"
|
#include "gnss_sdr_create_directory.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "gps_almanac.h"
|
#include "gps_almanac.h"
|
||||||
#include "gps_cnav_ephemeris.h"
|
#include "gps_cnav_ephemeris.h"
|
||||||
#include "gps_cnav_iono.h"
|
#include "gps_cnav_iono.h"
|
||||||
@ -76,7 +77,7 @@
|
|||||||
|
|
||||||
#if HAS_GENERIC_LAMBDA
|
#if HAS_GENERIC_LAMBDA
|
||||||
#else
|
#else
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind/bind.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_STD_FILESYSTEM
|
#if HAS_STD_FILESYSTEM
|
||||||
@ -96,7 +97,7 @@ namespace fs = boost::filesystem;
|
|||||||
namespace errorlib = boost::system;
|
namespace errorlib = boost::system;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OLD_BOOST
|
#if USE_OLD_BOOST_MATH_COMMON_FACTOR
|
||||||
#include <boost/math/common_factor_rt.hpp>
|
#include <boost/math/common_factor_rt.hpp>
|
||||||
namespace bc = boost::math;
|
namespace bc = boost::math;
|
||||||
#else
|
#else
|
||||||
@ -137,13 +138,11 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
mapStringValues_["B2"] = evBDS_B2;
|
mapStringValues_["B2"] = evBDS_B2;
|
||||||
mapStringValues_["B3"] = evBDS_B3;
|
mapStringValues_["B3"] = evBDS_B3;
|
||||||
|
|
||||||
|
|
||||||
initial_carrier_phase_offset_estimation_rads = std::vector<double>(nchannels, 0.0);
|
initial_carrier_phase_offset_estimation_rads = std::vector<double>(nchannels, 0.0);
|
||||||
channel_initialized = std::vector<bool>(nchannels, false);
|
channel_initialized = std::vector<bool>(nchannels, false);
|
||||||
|
|
||||||
max_obs_block_rx_clock_offset_ms = conf_.max_obs_block_rx_clock_offset_ms;
|
max_obs_block_rx_clock_offset_ms = conf_.max_obs_block_rx_clock_offset_ms;
|
||||||
|
|
||||||
|
|
||||||
d_output_rate_ms = conf_.output_rate_ms;
|
d_output_rate_ms = conf_.output_rate_ms;
|
||||||
d_display_rate_ms = conf_.display_rate_ms;
|
d_display_rate_ms = conf_.display_rate_ms;
|
||||||
d_report_rate_ms = 1000; // report every second PVT to gnss_synchro
|
d_report_rate_ms = 1000; // report every second PVT to gnss_synchro
|
||||||
@ -192,9 +191,9 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
this->message_port_register_in(pmt::mp("telemetry"));
|
this->message_port_register_in(pmt::mp("telemetry"));
|
||||||
this->set_msg_handler(pmt::mp("telemetry"),
|
this->set_msg_handler(pmt::mp("telemetry"),
|
||||||
#if HAS_GENERIC_LAMBDA
|
#if HAS_GENERIC_LAMBDA
|
||||||
[this](pmt::pmt_t&& PH1) { msg_handler_telemetry(PH1); });
|
[this](auto&& PH1) { msg_handler_telemetry(PH1); });
|
||||||
#else
|
#else
|
||||||
#if BOOST_173_OR_GREATER
|
#if USE_BOOST_BIND_PLACEHOLDERS
|
||||||
boost::bind(&rtklib_pvt_gs::msg_handler_telemetry, this, boost::placeholders::_1));
|
boost::bind(&rtklib_pvt_gs::msg_handler_telemetry, this, boost::placeholders::_1));
|
||||||
#else
|
#else
|
||||||
boost::bind(&rtklib_pvt_gs::msg_handler_telemetry, this, _1));
|
boost::bind(&rtklib_pvt_gs::msg_handler_telemetry, this, _1));
|
||||||
@ -211,7 +210,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
}
|
}
|
||||||
if (d_kml_output_enabled)
|
if (d_kml_output_enabled)
|
||||||
{
|
{
|
||||||
d_kml_dump = std::make_shared<Kml_Printer>(conf_.kml_output_path);
|
d_kml_dump = std::make_unique<Kml_Printer>(conf_.kml_output_path);
|
||||||
d_kml_dump->set_headers(kml_dump_filename);
|
d_kml_dump->set_headers(kml_dump_filename);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -230,7 +229,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
}
|
}
|
||||||
if (d_gpx_output_enabled)
|
if (d_gpx_output_enabled)
|
||||||
{
|
{
|
||||||
d_gpx_dump = std::make_shared<Gpx_Printer>(conf_.gpx_output_path);
|
d_gpx_dump = std::make_unique<Gpx_Printer>(conf_.gpx_output_path);
|
||||||
d_gpx_dump->set_headers(gpx_dump_filename);
|
d_gpx_dump->set_headers(gpx_dump_filename);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -249,7 +248,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
}
|
}
|
||||||
if (d_geojson_output_enabled)
|
if (d_geojson_output_enabled)
|
||||||
{
|
{
|
||||||
d_geojson_printer = std::make_shared<GeoJSON_Printer>(conf_.geojson_output_path);
|
d_geojson_printer = std::make_unique<GeoJSON_Printer>(conf_.geojson_output_path);
|
||||||
d_geojson_printer->set_headers(geojson_dump_filename);
|
d_geojson_printer->set_headers(geojson_dump_filename);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -267,7 +266,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
|
|
||||||
if (d_nmea_output_file_enabled)
|
if (d_nmea_output_file_enabled)
|
||||||
{
|
{
|
||||||
d_nmea_printer = std::make_shared<Nmea_Printer>(conf_.nmea_dump_filename, conf_.nmea_output_file_enabled, conf_.flag_nmea_tty_port, conf_.nmea_dump_devname, conf_.nmea_output_file_path);
|
d_nmea_printer = std::make_unique<Nmea_Printer>(conf_.nmea_dump_filename, conf_.nmea_output_file_enabled, conf_.flag_nmea_tty_port, conf_.nmea_dump_devname, conf_.nmea_output_file_path);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -279,7 +278,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
rtcm_dump_filename = d_dump_filename;
|
rtcm_dump_filename = d_dump_filename;
|
||||||
if (conf_.flag_rtcm_server or conf_.flag_rtcm_tty_port or conf_.rtcm_output_file_enabled)
|
if (conf_.flag_rtcm_server or conf_.flag_rtcm_tty_port or conf_.rtcm_output_file_enabled)
|
||||||
{
|
{
|
||||||
d_rtcm_printer = std::make_shared<Rtcm_Printer>(rtcm_dump_filename, conf_.rtcm_output_file_enabled, conf_.flag_rtcm_server, conf_.flag_rtcm_tty_port, conf_.rtcm_tcp_port, conf_.rtcm_station_id, conf_.rtcm_dump_devname, true, conf_.rtcm_output_file_path);
|
d_rtcm_printer = std::make_unique<Rtcm_Printer>(rtcm_dump_filename, conf_.rtcm_output_file_enabled, conf_.flag_rtcm_server, conf_.flag_rtcm_tty_port, conf_.rtcm_tcp_port, conf_.rtcm_station_id, conf_.rtcm_dump_devname, true, conf_.rtcm_output_file_path);
|
||||||
std::map<int, int> rtcm_msg_rate_ms = conf_.rtcm_msg_rate_ms;
|
std::map<int, int> rtcm_msg_rate_ms = conf_.rtcm_msg_rate_ms;
|
||||||
if (rtcm_msg_rate_ms.find(1019) != rtcm_msg_rate_ms.end())
|
if (rtcm_msg_rate_ms.find(1019) != rtcm_msg_rate_ms.end())
|
||||||
{
|
{
|
||||||
@ -355,7 +354,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
d_rinex_version = conf_.rinex_version;
|
d_rinex_version = conf_.rinex_version;
|
||||||
if (b_rinex_output_enabled)
|
if (b_rinex_output_enabled)
|
||||||
{
|
{
|
||||||
rp = std::make_shared<Rinex_Printer>(d_rinex_version, conf_.rinex_output_path, conf_.rinex_name);
|
rp = std::make_unique<Rinex_Printer>(d_rinex_version, conf_.rinex_output_path, conf_.rinex_name);
|
||||||
rp->set_pre_2009_file(conf_.pre_2009_file);
|
rp->set_pre_2009_file(conf_.pre_2009_file);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -413,7 +412,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
std::sort(udp_addr_vec.begin(), udp_addr_vec.end());
|
std::sort(udp_addr_vec.begin(), udp_addr_vec.end());
|
||||||
udp_addr_vec.erase(std::unique(udp_addr_vec.begin(), udp_addr_vec.end()), udp_addr_vec.end());
|
udp_addr_vec.erase(std::unique(udp_addr_vec.begin(), udp_addr_vec.end()), udp_addr_vec.end());
|
||||||
|
|
||||||
udp_sink_ptr = std::unique_ptr<Monitor_Pvt_Udp_Sink>(new Monitor_Pvt_Udp_Sink(udp_addr_vec, conf_.udp_port, conf_.protobuf_enabled));
|
udp_sink_ptr = std::make_unique<Monitor_Pvt_Udp_Sink>(udp_addr_vec, conf_.udp_port, conf_.protobuf_enabled);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2283,28 +2282,28 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
|
|||||||
{
|
{
|
||||||
if (current_RX_time_ms % d_kml_rate_ms == 0)
|
if (current_RX_time_ms % d_kml_rate_ms == 0)
|
||||||
{
|
{
|
||||||
d_kml_dump->print_position(d_user_pvt_solver, false);
|
d_kml_dump->print_position(d_user_pvt_solver.get(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (d_gpx_output_enabled)
|
if (d_gpx_output_enabled)
|
||||||
{
|
{
|
||||||
if (current_RX_time_ms % d_gpx_rate_ms == 0)
|
if (current_RX_time_ms % d_gpx_rate_ms == 0)
|
||||||
{
|
{
|
||||||
d_gpx_dump->print_position(d_user_pvt_solver, false);
|
d_gpx_dump->print_position(d_user_pvt_solver.get(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (d_geojson_output_enabled)
|
if (d_geojson_output_enabled)
|
||||||
{
|
{
|
||||||
if (current_RX_time_ms % d_geojson_rate_ms == 0)
|
if (current_RX_time_ms % d_geojson_rate_ms == 0)
|
||||||
{
|
{
|
||||||
d_geojson_printer->print_position(d_user_pvt_solver, false);
|
d_geojson_printer->print_position(d_user_pvt_solver.get(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (d_nmea_output_file_enabled)
|
if (d_nmea_output_file_enabled)
|
||||||
{
|
{
|
||||||
if (current_RX_time_ms % d_nmea_rate_ms == 0)
|
if (current_RX_time_ms % d_nmea_rate_ms == 0)
|
||||||
{
|
{
|
||||||
d_nmea_printer->Print_Nmea_Line(d_user_pvt_solver, false);
|
d_nmea_printer->Print_Nmea_Line(d_user_pvt_solver.get(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,12 +191,12 @@ private:
|
|||||||
int32_t d_display_rate_ms;
|
int32_t d_display_rate_ms;
|
||||||
int32_t d_report_rate_ms;
|
int32_t d_report_rate_ms;
|
||||||
|
|
||||||
std::shared_ptr<Rinex_Printer> rp;
|
std::unique_ptr<Rinex_Printer> rp;
|
||||||
std::shared_ptr<Kml_Printer> d_kml_dump;
|
std::unique_ptr<Kml_Printer> d_kml_dump;
|
||||||
std::shared_ptr<Gpx_Printer> d_gpx_dump;
|
std::unique_ptr<Gpx_Printer> d_gpx_dump;
|
||||||
std::shared_ptr<Nmea_Printer> d_nmea_printer;
|
std::unique_ptr<Nmea_Printer> d_nmea_printer;
|
||||||
std::shared_ptr<GeoJSON_Printer> d_geojson_printer;
|
std::unique_ptr<GeoJSON_Printer> d_geojson_printer;
|
||||||
std::shared_ptr<Rtcm_Printer> d_rtcm_printer;
|
std::unique_ptr<Rtcm_Printer> d_rtcm_printer;
|
||||||
double d_rx_time;
|
double d_rx_time;
|
||||||
|
|
||||||
bool d_geojson_output_enabled;
|
bool d_geojson_output_enabled;
|
||||||
|
@ -23,7 +23,6 @@ set(PVT_LIB_SOURCES
|
|||||||
rtklib_solver.cc
|
rtklib_solver.cc
|
||||||
pvt_conf.cc
|
pvt_conf.cc
|
||||||
monitor_pvt_udp_sink.cc
|
monitor_pvt_udp_sink.cc
|
||||||
${PROTO_SRCS}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set(PVT_LIB_HEADERS
|
set(PVT_LIB_HEADERS
|
||||||
@ -42,15 +41,25 @@ set(PVT_LIB_HEADERS
|
|||||||
monitor_pvt_udp_sink.h
|
monitor_pvt_udp_sink.h
|
||||||
monitor_pvt.h
|
monitor_pvt.h
|
||||||
serdes_monitor_pvt.h
|
serdes_monitor_pvt.h
|
||||||
${PROTO_HDRS}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
list(SORT PVT_LIB_HEADERS)
|
list(SORT PVT_LIB_HEADERS)
|
||||||
list(SORT PVT_LIB_SOURCES)
|
list(SORT PVT_LIB_SOURCES)
|
||||||
|
|
||||||
source_group(Headers FILES ${PVT_LIB_HEADERS})
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(pvt_libs STATIC)
|
||||||
add_library(pvt_libs ${PVT_LIB_SOURCES} ${PVT_LIB_HEADERS})
|
target_sources(pvt_libs
|
||||||
|
PRIVATE
|
||||||
|
${PROTO_SRCS}
|
||||||
|
${PROTO_HDRS}
|
||||||
|
${PVT_LIB_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${PVT_LIB_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
source_group(Headers FILES ${PVT_LIB_HEADERS} ${PROTO_HDRS})
|
||||||
|
add_library(pvt_libs ${PVT_LIB_SOURCES} ${PROTO_SRCS} ${PVT_LIB_HEADERS} ${PROTO_HDRS})
|
||||||
|
endif()
|
||||||
|
|
||||||
if(${FILESYSTEM_FOUND})
|
if(${FILESYSTEM_FOUND})
|
||||||
target_compile_definitions(pvt_libs PRIVATE -DHAS_STD_FILESYSTEM=1)
|
target_compile_definitions(pvt_libs PRIVATE -DHAS_STD_FILESYSTEM=1)
|
||||||
@ -68,9 +77,9 @@ target_link_libraries(pvt_libs
|
|||||||
Boost::date_time
|
Boost::date_time
|
||||||
protobuf::libprotobuf
|
protobuf::libprotobuf
|
||||||
core_system_parameters
|
core_system_parameters
|
||||||
|
algorithms_libs_rtklib
|
||||||
PRIVATE
|
PRIVATE
|
||||||
algorithms_libs
|
algorithms_libs
|
||||||
algorithms_libs_rtklib
|
|
||||||
Gflags::gflags
|
Gflags::gflags
|
||||||
Glog::glog
|
Glog::glog
|
||||||
Matio::matio
|
Matio::matio
|
||||||
@ -81,7 +90,7 @@ get_filename_component(PROTO_INCLUDE_HEADERS ${PROTO_HDRS} DIRECTORY)
|
|||||||
target_include_directories(pvt_libs
|
target_include_directories(pvt_libs
|
||||||
PUBLIC
|
PUBLIC
|
||||||
${CMAKE_SOURCE_DIR}/src/core/receiver
|
${CMAKE_SOURCE_DIR}/src/core/receiver
|
||||||
${PROTO_INCLUDE_HEADERS}
|
SYSTEM ${PROTO_INCLUDE_HEADERS}
|
||||||
)
|
)
|
||||||
|
|
||||||
target_compile_definitions(pvt_libs PRIVATE -DGNSS_SDR_VERSION="${VERSION}")
|
target_compile_definitions(pvt_libs PRIVATE -DGNSS_SDR_VERSION="${VERSION}")
|
||||||
@ -92,10 +101,10 @@ if(ENABLE_ARMA_NO_DEBUG)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(Boost_VERSION_STRING VERSION_GREATER 1.65.99)
|
if(USE_BOOST_ASIO_IO_CONTEXT)
|
||||||
target_compile_definitions(pvt_libs
|
target_compile_definitions(pvt_libs
|
||||||
PUBLIC
|
PUBLIC
|
||||||
-DBOOST_GREATER_1_65
|
-DUSE_BOOST_ASIO_IO_CONTEXT=1
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -116,18 +125,6 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ENABLE_CLANG_TIDY)
|
|
||||||
if(CLANG_TIDY_EXE)
|
|
||||||
set_target_properties(pvt_libs
|
|
||||||
PROPERTIES
|
|
||||||
CXX_CLANG_TIDY "${DO_CLANG_TIDY}"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set_property(TARGET pvt_libs APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
set_property(TARGET pvt_libs APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/algorithms/libs>
|
|
||||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/algorithms/libs/rtklib>
|
|
||||||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/src/core/system_parameters>
|
|
||||||
)
|
)
|
||||||
|
@ -176,25 +176,23 @@ bool GeoJSON_Printer::set_headers(const std::string& filename, bool time_tag_nam
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool GeoJSON_Printer::print_position(const std::shared_ptr<Pvt_Solution>& position, bool print_average_values)
|
bool GeoJSON_Printer::print_position(const Pvt_Solution* position, bool print_average_values)
|
||||||
{
|
{
|
||||||
double latitude;
|
double latitude;
|
||||||
double longitude;
|
double longitude;
|
||||||
double height;
|
double height;
|
||||||
|
|
||||||
const std::shared_ptr<Pvt_Solution>& position_ = position;
|
|
||||||
|
|
||||||
if (print_average_values == false)
|
if (print_average_values == false)
|
||||||
{
|
{
|
||||||
latitude = position_->get_latitude();
|
latitude = position->get_latitude();
|
||||||
longitude = position_->get_longitude();
|
longitude = position->get_longitude();
|
||||||
height = position_->get_height();
|
height = position->get_height();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
latitude = position_->get_avg_latitude();
|
latitude = position->get_avg_latitude();
|
||||||
longitude = position_->get_avg_longitude();
|
longitude = position->get_avg_longitude();
|
||||||
height = position_->get_avg_height();
|
height = position->get_avg_height();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (geojson_file.is_open())
|
if (geojson_file.is_open())
|
||||||
|
@ -40,7 +40,7 @@ public:
|
|||||||
explicit GeoJSON_Printer(const std::string& base_path = ".");
|
explicit GeoJSON_Printer(const std::string& base_path = ".");
|
||||||
~GeoJSON_Printer();
|
~GeoJSON_Printer();
|
||||||
bool set_headers(const std::string& filename, bool time_tag_name = true);
|
bool set_headers(const std::string& filename, bool time_tag_name = true);
|
||||||
bool print_position(const std::shared_ptr<Pvt_Solution>& position, bool print_average_values);
|
bool print_position(const Pvt_Solution* position, bool print_average_values);
|
||||||
bool close_file();
|
bool close_file();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "gpx_printer.h"
|
#include "gpx_printer.h"
|
||||||
#include "rtklib_solver.h"
|
#include "pvt_solution.h"
|
||||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <ctime> // for tm
|
#include <ctime> // for tm
|
||||||
@ -162,22 +162,21 @@ bool Gpx_Printer::set_headers(const std::string& filename, bool time_tag_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Gpx_Printer::print_position(const std::shared_ptr<Rtklib_Solver>& position, bool print_average_values)
|
bool Gpx_Printer::print_position(const Pvt_Solution* position, bool print_average_values)
|
||||||
{
|
{
|
||||||
double latitude;
|
double latitude;
|
||||||
double longitude;
|
double longitude;
|
||||||
double height;
|
double height;
|
||||||
|
|
||||||
positions_printed = true;
|
positions_printed = true;
|
||||||
const std::shared_ptr<Rtklib_Solver>& position_ = position;
|
|
||||||
|
|
||||||
double speed_over_ground = position_->get_speed_over_ground(); // expressed in m/s
|
double speed_over_ground = position->get_speed_over_ground(); // expressed in m/s
|
||||||
double course_over_ground = position_->get_course_over_ground(); // expressed in deg
|
double course_over_ground = position->get_course_over_ground(); // expressed in deg
|
||||||
|
|
||||||
double hdop = position_->get_hdop();
|
double hdop = position->get_hdop();
|
||||||
double vdop = position_->get_vdop();
|
double vdop = position->get_vdop();
|
||||||
double pdop = position_->get_pdop();
|
double pdop = position->get_pdop();
|
||||||
std::string utc_time = to_iso_extended_string(position_->get_position_UTC_time());
|
std::string utc_time = to_iso_extended_string(position->get_position_UTC_time());
|
||||||
if (utc_time.length() < 23)
|
if (utc_time.length() < 23)
|
||||||
{
|
{
|
||||||
utc_time += ".";
|
utc_time += ".";
|
||||||
@ -187,15 +186,15 @@ bool Gpx_Printer::print_position(const std::shared_ptr<Rtklib_Solver>& position,
|
|||||||
|
|
||||||
if (print_average_values == false)
|
if (print_average_values == false)
|
||||||
{
|
{
|
||||||
latitude = position_->get_latitude();
|
latitude = position->get_latitude();
|
||||||
longitude = position_->get_longitude();
|
longitude = position->get_longitude();
|
||||||
height = position_->get_height();
|
height = position->get_height();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
latitude = position_->get_avg_latitude();
|
latitude = position->get_avg_latitude();
|
||||||
longitude = position_->get_avg_longitude();
|
longitude = position->get_avg_longitude();
|
||||||
height = position_->get_avg_height();
|
height = position->get_avg_height();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gpx_file.is_open())
|
if (gpx_file.is_open())
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class Rtklib_Solver;
|
class Pvt_Solution;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Prints PVT information to GPX format file
|
* \brief Prints PVT information to GPX format file
|
||||||
@ -40,7 +40,7 @@ public:
|
|||||||
explicit Gpx_Printer(const std::string& base_path = ".");
|
explicit Gpx_Printer(const std::string& base_path = ".");
|
||||||
~Gpx_Printer();
|
~Gpx_Printer();
|
||||||
bool set_headers(const std::string& filename, bool time_tag_name = true);
|
bool set_headers(const std::string& filename, bool time_tag_name = true);
|
||||||
bool print_position(const std::shared_ptr<Rtklib_Solver>& position, bool print_average_values);
|
bool print_position(const Pvt_Solution* position, bool print_average_values);
|
||||||
bool close_file();
|
bool close_file();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "kml_printer.h"
|
#include "kml_printer.h"
|
||||||
#include "rtklib_solver.h"
|
#include "pvt_solution.h"
|
||||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <cstdlib> // for mkstemp
|
#include <cstdlib> // for mkstemp
|
||||||
@ -231,7 +231,7 @@ bool Kml_Printer::set_headers(const std::string& filename, bool time_tag_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Kml_Printer::print_position(const std::shared_ptr<Rtklib_Solver>& position, bool print_average_values)
|
bool Kml_Printer::print_position(const Pvt_Solution* position, bool print_average_values)
|
||||||
{
|
{
|
||||||
double latitude;
|
double latitude;
|
||||||
double longitude;
|
double longitude;
|
||||||
@ -239,15 +239,13 @@ bool Kml_Printer::print_position(const std::shared_ptr<Rtklib_Solver>& position,
|
|||||||
|
|
||||||
positions_printed = true;
|
positions_printed = true;
|
||||||
|
|
||||||
const std::shared_ptr<Rtklib_Solver>& position_ = position;
|
double speed_over_ground = position->get_speed_over_ground(); // expressed in m/s
|
||||||
|
double course_over_ground = position->get_course_over_ground(); // expressed in deg
|
||||||
|
|
||||||
double speed_over_ground = position_->get_speed_over_ground(); // expressed in m/s
|
double hdop = position->get_hdop();
|
||||||
double course_over_ground = position_->get_course_over_ground(); // expressed in deg
|
double vdop = position->get_vdop();
|
||||||
|
double pdop = position->get_pdop();
|
||||||
double hdop = position_->get_hdop();
|
std::string utc_time = to_iso_extended_string(position->get_position_UTC_time());
|
||||||
double vdop = position_->get_vdop();
|
|
||||||
double pdop = position_->get_pdop();
|
|
||||||
std::string utc_time = to_iso_extended_string(position_->get_position_UTC_time());
|
|
||||||
if (utc_time.length() < 23)
|
if (utc_time.length() < 23)
|
||||||
{
|
{
|
||||||
utc_time += ".";
|
utc_time += ".";
|
||||||
@ -257,15 +255,15 @@ bool Kml_Printer::print_position(const std::shared_ptr<Rtklib_Solver>& position,
|
|||||||
|
|
||||||
if (print_average_values == false)
|
if (print_average_values == false)
|
||||||
{
|
{
|
||||||
latitude = position_->get_latitude();
|
latitude = position->get_latitude();
|
||||||
longitude = position_->get_longitude();
|
longitude = position->get_longitude();
|
||||||
height = position_->get_height();
|
height = position->get_height();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
latitude = position_->get_avg_latitude();
|
latitude = position->get_avg_latitude();
|
||||||
longitude = position_->get_avg_longitude();
|
longitude = position->get_avg_longitude();
|
||||||
height = position_->get_avg_height();
|
height = position->get_avg_height();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kml_file.is_open() && tmp_file.is_open())
|
if (kml_file.is_open() && tmp_file.is_open())
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
#include <memory> // for shared_ptr
|
#include <memory> // for shared_ptr
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class Rtklib_Solver;
|
class Pvt_Solution;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Prints PVT information to OGC KML format file (can be viewed with Google Earth)
|
* \brief Prints PVT information to OGC KML format file (can be viewed with Google Earth)
|
||||||
@ -39,7 +39,7 @@ public:
|
|||||||
explicit Kml_Printer(const std::string& base_path = std::string("."));
|
explicit Kml_Printer(const std::string& base_path = std::string("."));
|
||||||
~Kml_Printer();
|
~Kml_Printer();
|
||||||
bool set_headers(const std::string& filename, bool time_tag_name = true);
|
bool set_headers(const std::string& filename, bool time_tag_name = true);
|
||||||
bool print_position(const std::shared_ptr<Rtklib_Solver>& position, bool print_average_values);
|
bool print_position(const Pvt_Solution* position, bool print_average_values);
|
||||||
bool close_file();
|
bool close_file();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include <boost/archive/binary_oarchive.hpp>
|
#include <boost/archive/binary_oarchive.hpp>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
|
||||||
Monitor_Pvt_Udp_Sink::Monitor_Pvt_Udp_Sink(const std::vector<std::string>& addresses, const uint16_t& port, bool protobuf_enabled) : socket{io_context}
|
Monitor_Pvt_Udp_Sink::Monitor_Pvt_Udp_Sink(const std::vector<std::string>& addresses, const uint16_t& port, bool protobuf_enabled) : socket{io_context}
|
||||||
@ -40,19 +41,20 @@ Monitor_Pvt_Udp_Sink::Monitor_Pvt_Udp_Sink(const std::vector<std::string>& addre
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Monitor_Pvt_Udp_Sink::write_monitor_pvt(const std::shared_ptr<Monitor_Pvt>& monitor_pvt)
|
bool Monitor_Pvt_Udp_Sink::write_monitor_pvt(std::shared_ptr<Monitor_Pvt> monitor_pvt)
|
||||||
{
|
{
|
||||||
|
monitor_pvt_ = std::move(monitor_pvt);
|
||||||
std::string outbound_data;
|
std::string outbound_data;
|
||||||
if (use_protobuf == false)
|
if (use_protobuf == false)
|
||||||
{
|
{
|
||||||
std::ostringstream archive_stream;
|
std::ostringstream archive_stream;
|
||||||
boost::archive::binary_oarchive oa{archive_stream};
|
boost::archive::binary_oarchive oa{archive_stream};
|
||||||
oa << *monitor_pvt.get();
|
oa << *monitor_pvt_.get();
|
||||||
outbound_data = archive_stream.str();
|
outbound_data = archive_stream.str();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
outbound_data = serdes.createProtobuffer(monitor_pvt);
|
outbound_data = serdes.createProtobuffer(monitor_pvt_);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto& endpoint : endpoints)
|
for (const auto& endpoint : endpoints)
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#if BOOST_GREATER_1_65
|
#if USE_BOOST_ASIO_IO_CONTEXT
|
||||||
using b_io_context = boost::asio::io_context;
|
using b_io_context = boost::asio::io_context;
|
||||||
#else
|
#else
|
||||||
using b_io_context = boost::asio::io_service;
|
using b_io_context = boost::asio::io_service;
|
||||||
@ -38,7 +38,7 @@ class Monitor_Pvt_Udp_Sink
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Monitor_Pvt_Udp_Sink(const std::vector<std::string>& addresses, const uint16_t& port, bool protobuf_enabled);
|
Monitor_Pvt_Udp_Sink(const std::vector<std::string>& addresses, const uint16_t& port, bool protobuf_enabled);
|
||||||
bool write_monitor_pvt(const std::shared_ptr<Monitor_Pvt>& monitor_pvt);
|
bool write_monitor_pvt(std::shared_ptr<Monitor_Pvt> monitor_pvt);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
b_io_context io_context;
|
b_io_context io_context;
|
||||||
@ -46,6 +46,7 @@ private:
|
|||||||
boost::system::error_code error;
|
boost::system::error_code error;
|
||||||
std::vector<boost::asio::ip::udp::endpoint> endpoints;
|
std::vector<boost::asio::ip::udp::endpoint> endpoints;
|
||||||
Serdes_Monitor_Pvt serdes;
|
Serdes_Monitor_Pvt serdes;
|
||||||
|
std::shared_ptr<Monitor_Pvt> monitor_pvt_;
|
||||||
bool use_protobuf;
|
bool use_protobuf;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -119,6 +119,7 @@ Nmea_Printer::Nmea_Printer(const std::string& filename, bool flag_nmea_output_fi
|
|||||||
nmea_dev_descriptor = -1;
|
nmea_dev_descriptor = -1;
|
||||||
}
|
}
|
||||||
print_avg_pos = false;
|
print_avg_pos = false;
|
||||||
|
d_PVT_data = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -213,7 +214,7 @@ void Nmea_Printer::close_serial()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Nmea_Printer::Print_Nmea_Line(const std::shared_ptr<Rtklib_Solver>& pvt_data, bool print_average_values)
|
bool Nmea_Printer::Print_Nmea_Line(const Rtklib_Solver* pvt_data, bool print_average_values)
|
||||||
{
|
{
|
||||||
std::string GPRMC;
|
std::string GPRMC;
|
||||||
std::string GPGGA;
|
std::string GPGGA;
|
||||||
|
@ -49,7 +49,7 @@ public:
|
|||||||
/*!
|
/*!
|
||||||
* \brief Print NMEA PVT and satellite info to the initialized device
|
* \brief Print NMEA PVT and satellite info to the initialized device
|
||||||
*/
|
*/
|
||||||
bool Print_Nmea_Line(const std::shared_ptr<Rtklib_Solver>& pvt_data, bool print_average_values);
|
bool Print_Nmea_Line(const Rtklib_Solver* pvt_data, bool print_average_values);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Default destructor.
|
* \brief Default destructor.
|
||||||
@ -62,7 +62,7 @@ private:
|
|||||||
std::ofstream nmea_file_descriptor; // Output file stream for NMEA log file
|
std::ofstream nmea_file_descriptor; // Output file stream for NMEA log file
|
||||||
std::string nmea_devname;
|
std::string nmea_devname;
|
||||||
int nmea_dev_descriptor; // NMEA serial device descriptor (i.e. COM port)
|
int nmea_dev_descriptor; // NMEA serial device descriptor (i.e. COM port)
|
||||||
std::shared_ptr<Rtklib_Solver> d_PVT_data;
|
const Rtklib_Solver* d_PVT_data;
|
||||||
int init_serial(const std::string& serial_device); // serial port control
|
int init_serial(const std::string& serial_device); // serial port control
|
||||||
void close_serial();
|
void close_serial();
|
||||||
std::string get_GPGGA(); // fix data
|
std::string get_GPGGA(); // fix data
|
||||||
|
@ -38,6 +38,7 @@ class Pvt_Solution
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Pvt_Solution();
|
Pvt_Solution();
|
||||||
|
virtual ~Pvt_Solution() = default;
|
||||||
void set_pre_2009_file(bool pre_2009_file); //!< Flag for the week rollover computation in post processing mode for signals older than 2009
|
void set_pre_2009_file(bool pre_2009_file); //!< Flag for the week rollover computation in post processing mode for signals older than 2009
|
||||||
double get_time_offset_s() const; //!< Get RX time offset [s]
|
double get_time_offset_s() const; //!< Get RX time offset [s]
|
||||||
void set_time_offset_s(double offset); //!< Set RX time offset [s]
|
void set_time_offset_s(double offset); //!< Set RX time offset [s]
|
||||||
@ -123,6 +124,11 @@ public:
|
|||||||
*/
|
*/
|
||||||
int tropo(double *ddr_m, double sinel, double hsta_km, double p_mb, double t_kel, double hum, double hp_km, double htkel_km, double hhum_km);
|
int tropo(double *ddr_m, double sinel, double hsta_km, double p_mb, double t_kel, double hum, double hp_km, double htkel_km, double hhum_km);
|
||||||
|
|
||||||
|
virtual double get_hdop() const = 0;
|
||||||
|
virtual double get_vdop() const = 0;
|
||||||
|
virtual double get_pdop() const = 0;
|
||||||
|
virtual double get_gdop() const = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool d_pre_2009_file; // Flag to correct week rollover in post processing mode for signals older than 2009
|
bool d_pre_2009_file; // Flag to correct week rollover in post processing mode for signals older than 2009
|
||||||
private:
|
private:
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#if BOOST_GREATER_1_65
|
#if USE_BOOST_ASIO_IO_CONTEXT
|
||||||
using b_io_context = boost::asio::io_context;
|
using b_io_context = boost::asio::io_context;
|
||||||
#else
|
#else
|
||||||
using b_io_context = boost::asio::io_service;
|
using b_io_context = boost::asio::io_service;
|
||||||
|
@ -75,10 +75,10 @@ public:
|
|||||||
|
|
||||||
sol_t pvt_sol{};
|
sol_t pvt_sol{};
|
||||||
std::array<ssat_t, MAXSAT> pvt_ssat{};
|
std::array<ssat_t, MAXSAT> pvt_ssat{};
|
||||||
double get_hdop() const;
|
double get_hdop() const override;
|
||||||
double get_vdop() const;
|
double get_vdop() const override;
|
||||||
double get_pdop() const;
|
double get_pdop() const override;
|
||||||
double get_gdop() const;
|
double get_gdop() const override;
|
||||||
Monitor_Pvt get_monitor_pvt() const;
|
Monitor_Pvt get_monitor_pvt() const;
|
||||||
|
|
||||||
std::map<int, Galileo_Ephemeris> galileo_ephemeris_map; //!< Map storing new Galileo_Ephemeris
|
std::map<int, Galileo_Ephemeris> galileo_ephemeris_map; //!< Map storing new Galileo_Ephemeris
|
||||||
|
@ -84,24 +84,27 @@ endif()
|
|||||||
list(SORT ACQ_ADAPTER_HEADERS)
|
list(SORT ACQ_ADAPTER_HEADERS)
|
||||||
list(SORT ACQ_ADAPTER_SOURCES)
|
list(SORT ACQ_ADAPTER_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(acquisition_adapters STATIC)
|
||||||
|
target_sources(acquisition_adapters
|
||||||
|
PRIVATE
|
||||||
|
${ACQ_ADAPTER_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${ACQ_ADAPTER_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${ACQ_ADAPTER_HEADERS})
|
source_group(Headers FILES ${ACQ_ADAPTER_HEADERS})
|
||||||
|
|
||||||
add_library(acquisition_adapters ${ACQ_ADAPTER_SOURCES} ${ACQ_ADAPTER_HEADERS})
|
add_library(acquisition_adapters ${ACQ_ADAPTER_SOURCES} ${ACQ_ADAPTER_HEADERS})
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(acquisition_adapters
|
target_link_libraries(acquisition_adapters
|
||||||
PUBLIC
|
PUBLIC
|
||||||
algorithms_libs
|
|
||||||
acquisition_gr_blocks
|
acquisition_gr_blocks
|
||||||
acquisition_libs
|
|
||||||
channel_libs
|
|
||||||
core_system_parameters
|
|
||||||
Gnuradio::blocks
|
Gnuradio::blocks
|
||||||
PRIVATE
|
PRIVATE
|
||||||
gnss_sdr_flags
|
gnss_sdr_flags
|
||||||
Boost::headers
|
Boost::headers
|
||||||
Gflags::gflags
|
|
||||||
Glog::glog
|
Glog::glog
|
||||||
Gnuradio::fft
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if(GNURADIO_USES_STD_POINTERS)
|
if(GNURADIO_USES_STD_POINTERS)
|
||||||
@ -119,6 +122,8 @@ endif()
|
|||||||
if(ENABLE_FPGA)
|
if(ENABLE_FPGA)
|
||||||
target_link_libraries(acquisition_adapters
|
target_link_libraries(acquisition_adapters
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
algorithms_libs
|
||||||
|
Gnuradio::fft
|
||||||
Volk::volk
|
Volk::volk
|
||||||
Volkgnsssdr::volkgnsssdr
|
Volkgnsssdr::volkgnsssdr
|
||||||
)
|
)
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "galileo_e1_signal_processing.h"
|
#include "galileo_e1_signal_processing.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <gnuradio/fft/fft.h> // for fft_complex
|
#include <gnuradio/fft/fft.h> // for fft_complex
|
||||||
#include <gnuradio/gr_complex.h> // for gr_complex
|
#include <gnuradio/gr_complex.h> // for gr_complex
|
||||||
@ -87,7 +88,7 @@ GalileoE1PcpsAmbiguousAcquisitionFpga::GalileoE1PcpsAmbiguousAcquisitionFpga(
|
|||||||
|
|
||||||
// compute all the GALILEO E1 PRN Codes (this is done only once in the class constructor in order to avoid re-computing the PRN codes every time
|
// compute all the GALILEO E1 PRN Codes (this is done only once in the class constructor in order to avoid re-computing the PRN codes every time
|
||||||
// a channel is assigned)
|
// a channel is assigned)
|
||||||
auto fft_if = std::unique_ptr<gr::fft::fft_complex>(new gr::fft::fft_complex(nsamples_total, true)); // Direct FFT
|
auto fft_if = std::make_unique<gr::fft::fft_complex>(nsamples_total, true); // Direct FFT
|
||||||
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total); // buffer for the local code
|
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total); // buffer for the local code
|
||||||
volk_gnsssdr::vector<gr_complex> fft_codes_padded(nsamples_total);
|
volk_gnsssdr::vector<gr_complex> fft_codes_padded(nsamples_total);
|
||||||
d_all_fft_codes_ = std::vector<uint32_t>(nsamples_total * GALILEO_E1_NUMBER_OF_CODES); // memory containing all the possible fft codes for PRN 0 to 32
|
d_all_fft_codes_ = std::vector<uint32_t>(nsamples_total * GALILEO_E1_NUMBER_OF_CODES); // memory containing all the possible fft codes for PRN 0 to 32
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "galileo_e5_signal_processing.h"
|
#include "galileo_e5_signal_processing.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <gnuradio/fft/fft.h> // for fft_complex
|
#include <gnuradio/fft/fft.h> // for fft_complex
|
||||||
#include <gnuradio/gr_complex.h> // for gr_complex
|
#include <gnuradio/gr_complex.h> // for gr_complex
|
||||||
@ -88,7 +89,7 @@ GalileoE5aPcpsAcquisitionFpga::GalileoE5aPcpsAcquisitionFpga(ConfigurationInterf
|
|||||||
|
|
||||||
// compute all the GALILEO E5 PRN Codes (this is done only once in the class constructor in order to avoid re-computing the PRN codes every time
|
// compute all the GALILEO E5 PRN Codes (this is done only once in the class constructor in order to avoid re-computing the PRN codes every time
|
||||||
// a channel is assigned)
|
// a channel is assigned)
|
||||||
auto fft_if = std::unique_ptr<gr::fft::fft_complex>(new gr::fft::fft_complex(nsamples_total, true)); // Direct FFT
|
auto fft_if = std::make_unique<gr::fft::fft_complex>(nsamples_total, true); // Direct FFT
|
||||||
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
||||||
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
||||||
d_all_fft_codes_ = std::vector<uint32_t>(nsamples_total * GALILEO_E5A_NUMBER_OF_CODES); // memory containing all the possible fft codes for PRN 0 to 32
|
d_all_fft_codes_ = std::vector<uint32_t>(nsamples_total * GALILEO_E5A_NUMBER_OF_CODES); // memory containing all the possible fft codes for PRN 0 to 32
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include "GPS_L1_CA.h"
|
#include "GPS_L1_CA.h"
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "gps_sdr_signal_processing.h"
|
#include "gps_sdr_signal_processing.h"
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <gnuradio/fft/fft.h>
|
#include <gnuradio/fft/fft.h>
|
||||||
@ -80,7 +81,7 @@ GpsL1CaPcpsAcquisitionFpga::GpsL1CaPcpsAcquisitionFpga(
|
|||||||
|
|
||||||
// compute all the GPS L1 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
// compute all the GPS L1 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
||||||
// a channel is assigned)
|
// a channel is assigned)
|
||||||
auto fft_if = std::unique_ptr<gr::fft::fft_complex>(new gr::fft::fft_complex(nsamples_total, true));
|
auto fft_if = std::make_unique<gr::fft::fft_complex>(nsamples_total, true);
|
||||||
// allocate memory to compute all the PRNs and compute all the possible codes
|
// allocate memory to compute all the PRNs and compute all the possible codes
|
||||||
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
||||||
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "GPS_L2C.h"
|
#include "GPS_L2C.h"
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "gnss_synchro.h"
|
#include "gnss_synchro.h"
|
||||||
#include "gps_l2c_signal.h"
|
#include "gps_l2c_signal.h"
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
@ -81,7 +82,7 @@ GpsL2MPcpsAcquisitionFpga::GpsL2MPcpsAcquisitionFpga(
|
|||||||
|
|
||||||
// compute all the GPS L2C PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
// compute all the GPS L2C PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
||||||
// a channel is assigned)
|
// a channel is assigned)
|
||||||
auto fft_if = std::unique_ptr<gr::fft::fft_complex>(new gr::fft::fft_complex(nsamples_total, true)); // Direct FFT
|
auto fft_if = std::make_unique<gr::fft::fft_complex>(nsamples_total, true); // Direct FFT
|
||||||
// allocate memory to compute all the PRNs and compute all the possible codes
|
// allocate memory to compute all the PRNs and compute all the possible codes
|
||||||
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
||||||
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include "GPS_L5.h"
|
#include "GPS_L5.h"
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "gps_l5_signal.h"
|
#include "gps_l5_signal.h"
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <gnuradio/fft/fft.h> // for fft_complex
|
#include <gnuradio/fft/fft.h> // for fft_complex
|
||||||
@ -85,7 +86,7 @@ GpsL5iPcpsAcquisitionFpga::GpsL5iPcpsAcquisitionFpga(
|
|||||||
|
|
||||||
// compute all the GPS L5 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
// compute all the GPS L5 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
||||||
// a channel is assigned)
|
// a channel is assigned)
|
||||||
auto fft_if = std::unique_ptr<gr::fft::fft_complex>(new gr::fft::fft_complex(nsamples_total, true)); // Direct FFT
|
auto fft_if = std::make_unique<gr::fft::fft_complex>(nsamples_total, true); // Direct FFT
|
||||||
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
||||||
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
||||||
d_all_fft_codes_ = std::vector<uint32_t>(nsamples_total * NUM_PRNs); // memory containing all the possible fft codes for PRN 0 to 32
|
d_all_fft_codes_ = std::vector<uint32_t>(nsamples_total * NUM_PRNs); // memory containing all the possible fft codes for PRN 0 to 32
|
||||||
|
@ -43,9 +43,18 @@ endif()
|
|||||||
list(SORT ACQ_GR_BLOCKS_HEADERS)
|
list(SORT ACQ_GR_BLOCKS_HEADERS)
|
||||||
list(SORT ACQ_GR_BLOCKS_SOURCES)
|
list(SORT ACQ_GR_BLOCKS_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(acquisition_gr_blocks STATIC)
|
||||||
|
target_sources(acquisition_gr_blocks
|
||||||
|
PRIVATE
|
||||||
|
${ACQ_GR_BLOCKS_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${ACQ_ADAPTER_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${ACQ_GR_BLOCKS_HEADERS})
|
source_group(Headers FILES ${ACQ_GR_BLOCKS_HEADERS})
|
||||||
|
|
||||||
add_library(acquisition_gr_blocks ${ACQ_GR_BLOCKS_SOURCES} ${ACQ_GR_BLOCKS_HEADERS})
|
add_library(acquisition_gr_blocks ${ACQ_GR_BLOCKS_SOURCES} ${ACQ_GR_BLOCKS_HEADERS})
|
||||||
|
endif()
|
||||||
|
|
||||||
if(${FILESYSTEM_FOUND})
|
if(${FILESYSTEM_FOUND})
|
||||||
target_compile_definitions(acquisition_gr_blocks PRIVATE -DHAS_STD_FILESYSTEM=1)
|
target_compile_definitions(acquisition_gr_blocks PRIVATE -DHAS_STD_FILESYSTEM=1)
|
||||||
|
@ -868,14 +868,6 @@ void pcps_acquisition::acquisition_core(uint64_t samp_count)
|
|||||||
}
|
}
|
||||||
d_num_noncoherent_integrations_counter = 0U;
|
d_num_noncoherent_integrations_counter = 0U;
|
||||||
d_positive_acq = 0;
|
d_positive_acq = 0;
|
||||||
// Reset grid
|
|
||||||
for (uint32_t i = 0; i < d_num_doppler_bins; i++)
|
|
||||||
{
|
|
||||||
for (uint32_t k = 0; k < d_fft_size; k++)
|
|
||||||
{
|
|
||||||
d_magnitude_grid[i][k] = 0.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,12 +18,21 @@ endif()
|
|||||||
list(SORT ACQUISITION_LIB_HEADERS)
|
list(SORT ACQUISITION_LIB_HEADERS)
|
||||||
list(SORT ACQUISITION_LIB_SOURCES)
|
list(SORT ACQUISITION_LIB_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(acquisition_libs STATIC)
|
||||||
|
target_sources(acquisition_libs
|
||||||
|
PRIVATE
|
||||||
|
${ACQUISITION_LIB_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${ACQUISITION_LIB_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${ACQUISITION_LIB_HEADERS})
|
source_group(Headers FILES ${ACQUISITION_LIB_HEADERS})
|
||||||
|
|
||||||
add_library(acquisition_libs
|
add_library(acquisition_libs
|
||||||
${ACQUISITION_LIB_SOURCES}
|
${ACQUISITION_LIB_SOURCES}
|
||||||
${ACQUISITION_LIB_HEADERS}
|
${ACQUISITION_LIB_HEADERS}
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(acquisition_libs
|
target_link_libraries(acquisition_libs
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
@ -7,25 +7,28 @@
|
|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
#
|
#
|
||||||
|
|
||||||
set(CHANNEL_ADAPTER_SOURCES channel.cc)
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
set(CHANNEL_ADAPTER_HEADERS channel.h)
|
add_library(channel_adapters STATIC)
|
||||||
|
target_sources(channel_adapters
|
||||||
add_library(channel_adapters
|
PRIVATE
|
||||||
${CHANNEL_ADAPTER_SOURCES}
|
channel.cc
|
||||||
${CHANNEL_ADAPTER_HEADERS}
|
PUBLIC
|
||||||
|
channel.h
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${CHANNEL_ADAPTER_HEADERS})
|
source_group(Headers FILES channel.h)
|
||||||
|
add_library(channel_adapters
|
||||||
|
channel.cc
|
||||||
|
channel.h
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(channel_adapters
|
target_link_libraries(channel_adapters
|
||||||
PUBLIC
|
PUBLIC
|
||||||
Gnuradio::runtime
|
|
||||||
channel_libs
|
channel_libs
|
||||||
core_system_parameters
|
|
||||||
PRIVATE
|
PRIVATE
|
||||||
Gflags::gflags
|
|
||||||
Glog::glog
|
|
||||||
gnss_sdr_flags
|
gnss_sdr_flags
|
||||||
|
Glog::glog
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(channel_adapters
|
target_include_directories(channel_adapters
|
||||||
|
@ -29,17 +29,17 @@
|
|||||||
#include <utility> // for std::move
|
#include <utility> // for std::move
|
||||||
|
|
||||||
|
|
||||||
Channel::Channel(ConfigurationInterface* configuration, uint32_t channel, const std::shared_ptr<AcquisitionInterface>& acq,
|
Channel::Channel(ConfigurationInterface* configuration, uint32_t channel, std::shared_ptr<AcquisitionInterface> acq,
|
||||||
const std::shared_ptr<TrackingInterface>& trk, const std::shared_ptr<TelemetryDecoderInterface>& nav,
|
std::shared_ptr<TrackingInterface> trk, std::shared_ptr<TelemetryDecoderInterface> nav,
|
||||||
const std::string& role, const std::string& implementation, const std::shared_ptr<Concurrent_Queue<pmt::pmt_t> >& queue)
|
const std::string& role, const std::string& implementation, Concurrent_Queue<pmt::pmt_t>* queue)
|
||||||
{
|
{
|
||||||
acq_ = acq;
|
acq_ = std::move(acq);
|
||||||
trk_ = trk;
|
trk_ = std::move(trk);
|
||||||
nav_ = nav;
|
nav_ = std::move(nav);
|
||||||
|
queue_ = queue;
|
||||||
role_ = role;
|
role_ = role;
|
||||||
implementation_ = implementation;
|
implementation_ = implementation;
|
||||||
channel_ = channel;
|
channel_ = channel;
|
||||||
queue_ = queue;
|
|
||||||
channel_fsm_ = std::make_shared<ChannelFsm>();
|
channel_fsm_ = std::make_shared<ChannelFsm>();
|
||||||
|
|
||||||
flag_enable_fpga = configuration->property("GNSS-SDR.enable_FPGA", false);
|
flag_enable_fpga = configuration->property("GNSS-SDR.enable_FPGA", false);
|
||||||
|
@ -54,9 +54,9 @@ class Channel : public ChannelInterface
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//! Constructor
|
//! Constructor
|
||||||
Channel(ConfigurationInterface* configuration, uint32_t channel, const std::shared_ptr<AcquisitionInterface>& acq,
|
Channel(ConfigurationInterface* configuration, uint32_t channel, std::shared_ptr<AcquisitionInterface> acq,
|
||||||
const std::shared_ptr<TrackingInterface>& trk, const std::shared_ptr<TelemetryDecoderInterface>& nav,
|
std::shared_ptr<TrackingInterface> trk, std::shared_ptr<TelemetryDecoderInterface> nav,
|
||||||
const std::string& role, const std::string& implementation, const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
const std::string& role, const std::string& implementation, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~Channel() = default; //!< Destructor
|
~Channel() = default; //!< Destructor
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ private:
|
|||||||
bool connected_;
|
bool connected_;
|
||||||
bool repeat_;
|
bool repeat_;
|
||||||
std::shared_ptr<ChannelFsm> channel_fsm_;
|
std::shared_ptr<ChannelFsm> channel_fsm_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
Concurrent_Queue<pmt::pmt_t>* queue_;
|
||||||
std::mutex mx;
|
std::mutex mx;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -20,9 +20,18 @@ set(CHANNEL_FSM_HEADERS
|
|||||||
list(SORT CHANNEL_FSM_HEADERS)
|
list(SORT CHANNEL_FSM_HEADERS)
|
||||||
list(SORT CHANNEL_FSM_SOURCES)
|
list(SORT CHANNEL_FSM_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(channel_libs STATIC)
|
||||||
|
target_sources(channel_libs
|
||||||
|
PRIVATE
|
||||||
|
${CHANNEL_FSM_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${CHANNEL_FSM_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${CHANNEL_FSM_HEADERS})
|
source_group(Headers FILES ${CHANNEL_FSM_HEADERS})
|
||||||
|
|
||||||
add_library(channel_libs ${CHANNEL_FSM_SOURCES} ${CHANNEL_FSM_HEADERS})
|
add_library(channel_libs ${CHANNEL_FSM_SOURCES} ${CHANNEL_FSM_HEADERS})
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(channel_libs
|
target_link_libraries(channel_libs
|
||||||
PUBLIC
|
PUBLIC
|
||||||
@ -47,7 +56,7 @@ if(GNURADIO_USES_STD_POINTERS)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_VERSION VERSION_GREATER 3.1)
|
if(USE_GENERIC_LAMBDAS)
|
||||||
set(has_generic_lambdas HAS_GENERIC_LAMBDA=1)
|
set(has_generic_lambdas HAS_GENERIC_LAMBDA=1)
|
||||||
set(no_has_generic_lambdas HAS_GENERIC_LAMBDA=0)
|
set(no_has_generic_lambdas HAS_GENERIC_LAMBDA=0)
|
||||||
target_compile_definitions(channel_libs
|
target_compile_definitions(channel_libs
|
||||||
@ -62,10 +71,10 @@ else()
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(Boost_VERSION_STRING VERSION_GREATER 1.72.99)
|
if(USE_BOOST_BIND_PLACEHOLDERS)
|
||||||
target_compile_definitions(channel_libs
|
target_compile_definitions(channel_libs
|
||||||
PRIVATE
|
PRIVATE
|
||||||
-DBOOST_173_OR_GREATER=1
|
-DUSE_BOOST_BIND_PLACEHOLDERS=1
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ ChannelFsm::ChannelFsm()
|
|||||||
trk_ = nullptr;
|
trk_ = nullptr;
|
||||||
channel_ = 0U;
|
channel_ = 0U;
|
||||||
d_state = 0U;
|
d_state = 0U;
|
||||||
|
queue_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -38,6 +39,7 @@ ChannelFsm::ChannelFsm(std::shared_ptr<AcquisitionInterface> acquisition) : acq_
|
|||||||
trk_ = nullptr;
|
trk_ = nullptr;
|
||||||
channel_ = 0U;
|
channel_ = 0U;
|
||||||
d_state = 0U;
|
d_state = 0U;
|
||||||
|
queue_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -168,10 +170,10 @@ void ChannelFsm::set_telemetry(std::shared_ptr<TelemetryDecoderInterface> teleme
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ChannelFsm::set_queue(std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue)
|
void ChannelFsm::set_queue(Concurrent_Queue<pmt::pmt_t>* queue)
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lk(mx);
|
std::lock_guard<std::mutex> lk(mx);
|
||||||
queue_ = std::move(queue);
|
queue_ = queue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ public:
|
|||||||
void set_acquisition(std::shared_ptr<AcquisitionInterface> acquisition);
|
void set_acquisition(std::shared_ptr<AcquisitionInterface> acquisition);
|
||||||
void set_tracking(std::shared_ptr<TrackingInterface> tracking);
|
void set_tracking(std::shared_ptr<TrackingInterface> tracking);
|
||||||
void set_telemetry(std::shared_ptr<TelemetryDecoderInterface> telemetry);
|
void set_telemetry(std::shared_ptr<TelemetryDecoderInterface> telemetry);
|
||||||
void set_queue(std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
void set_queue(Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
void set_channel(uint32_t channel);
|
void set_channel(uint32_t channel);
|
||||||
void start_acquisition();
|
void start_acquisition();
|
||||||
// FSM EVENTS
|
// FSM EVENTS
|
||||||
@ -67,7 +67,7 @@ private:
|
|||||||
std::shared_ptr<AcquisitionInterface> acq_;
|
std::shared_ptr<AcquisitionInterface> acq_;
|
||||||
std::shared_ptr<TrackingInterface> trk_;
|
std::shared_ptr<TrackingInterface> trk_;
|
||||||
std::shared_ptr<TelemetryDecoderInterface> nav_;
|
std::shared_ptr<TelemetryDecoderInterface> nav_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
Concurrent_Queue<pmt::pmt_t>* queue_;
|
||||||
uint32_t channel_;
|
uint32_t channel_;
|
||||||
uint32_t d_state;
|
uint32_t d_state;
|
||||||
std::mutex mx;
|
std::mutex mx;
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
#if HAS_GENERIC_LAMBDA
|
#if HAS_GENERIC_LAMBDA
|
||||||
#else
|
#else
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind/bind.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
channel_msg_receiver_cc_sptr channel_msg_receiver_make_cc(std::shared_ptr<ChannelFsm> channel_fsm, bool repeat)
|
channel_msg_receiver_cc_sptr channel_msg_receiver_make_cc(std::shared_ptr<ChannelFsm> channel_fsm, bool repeat)
|
||||||
@ -42,9 +42,9 @@ channel_msg_receiver_cc::channel_msg_receiver_cc(std::shared_ptr<ChannelFsm> cha
|
|||||||
this->message_port_register_in(pmt::mp("events"));
|
this->message_port_register_in(pmt::mp("events"));
|
||||||
this->set_msg_handler(pmt::mp("events"),
|
this->set_msg_handler(pmt::mp("events"),
|
||||||
#if HAS_GENERIC_LAMBDA
|
#if HAS_GENERIC_LAMBDA
|
||||||
[this](pmt::pmt_t&& PH1) { msg_handler_events(PH1); });
|
[this](auto&& PH1) { msg_handler_events(PH1); });
|
||||||
#else
|
#else
|
||||||
#if BOOST_173_OR_GREATER
|
#if USE_BOOST_BIND_PLACEHOLDERS
|
||||||
boost::bind(&channel_msg_receiver_cc::msg_handler_events, this, boost::placeholders::_1));
|
boost::bind(&channel_msg_receiver_cc::msg_handler_events, this, boost::placeholders::_1));
|
||||||
#else
|
#else
|
||||||
boost::bind(&channel_msg_receiver_cc::msg_handler_events, this, _1));
|
boost::bind(&channel_msg_receiver_cc::msg_handler_events, this, _1));
|
||||||
|
@ -21,9 +21,21 @@ set(COND_ADAPTER_HEADERS
|
|||||||
list(SORT COND_ADAPTER_HEADERS)
|
list(SORT COND_ADAPTER_HEADERS)
|
||||||
list(SORT COND_ADAPTER_SOURCES)
|
list(SORT COND_ADAPTER_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(conditioner_adapters STATIC)
|
||||||
|
target_sources(conditioner_adapters
|
||||||
|
PRIVATE
|
||||||
|
${COND_ADAPTER_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${COND_ADAPTER_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${COND_ADAPTER_HEADERS})
|
source_group(Headers FILES ${COND_ADAPTER_HEADERS})
|
||||||
|
add_library(conditioner_adapters
|
||||||
add_library(conditioner_adapters ${COND_ADAPTER_SOURCES} ${COND_ADAPTER_HEADERS})
|
${COND_ADAPTER_SOURCES}
|
||||||
|
${COND_ADAPTER_HEADERS}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(conditioner_adapters
|
target_link_libraries(conditioner_adapters
|
||||||
PUBLIC
|
PUBLIC
|
||||||
|
@ -29,15 +29,30 @@ set(DATATYPE_ADAPTER_HEADERS
|
|||||||
list(SORT DATATYPE_ADAPTER_HEADERS)
|
list(SORT DATATYPE_ADAPTER_HEADERS)
|
||||||
list(SORT DATATYPE_ADAPTER_SOURCES)
|
list(SORT DATATYPE_ADAPTER_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(data_type_adapters STATIC)
|
||||||
|
target_sources(data_type_adapters
|
||||||
|
PRIVATE
|
||||||
|
${DATATYPE_ADAPTER_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${DATATYPE_ADAPTER_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${DATATYPE_ADAPTER_HEADERS})
|
source_group(Headers FILES ${DATATYPE_ADAPTER_HEADERS})
|
||||||
|
|
||||||
add_library(data_type_adapters
|
add_library(data_type_adapters
|
||||||
${DATATYPE_ADAPTER_SOURCES}
|
${DATATYPE_ADAPTER_SOURCES}
|
||||||
${DATATYPE_ADAPTER_HEADERS}
|
${DATATYPE_ADAPTER_HEADERS}
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_include_directories(data_type_adapters
|
||||||
|
PUBLIC
|
||||||
|
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||||
|
)
|
||||||
|
|
||||||
target_link_libraries(data_type_adapters
|
target_link_libraries(data_type_adapters
|
||||||
PUBLIC
|
PUBLIC
|
||||||
|
algorithms_libs
|
||||||
Gnuradio::blocks
|
Gnuradio::blocks
|
||||||
data_type_gr_blocks
|
data_type_gr_blocks
|
||||||
PRIVATE
|
PRIVATE
|
||||||
@ -46,12 +61,6 @@ target_link_libraries(data_type_adapters
|
|||||||
Volk::volk
|
Volk::volk
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(data_type_adapters
|
|
||||||
PUBLIC
|
|
||||||
${CMAKE_SOURCE_DIR}/src/algorithms/libs
|
|
||||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
|
||||||
)
|
|
||||||
|
|
||||||
if(ENABLE_CLANG_TIDY)
|
if(ENABLE_CLANG_TIDY)
|
||||||
if(CLANG_TIDY_EXE)
|
if(CLANG_TIDY_EXE)
|
||||||
set_target_properties(data_type_adapters
|
set_target_properties(data_type_adapters
|
||||||
|
@ -23,12 +23,21 @@ set(DATA_TYPE_GR_BLOCKS_HEADERS
|
|||||||
list(SORT DATA_TYPE_GR_BLOCKS_HEADERS)
|
list(SORT DATA_TYPE_GR_BLOCKS_HEADERS)
|
||||||
list(SORT DATA_TYPE_GR_BLOCKS_SOURCES)
|
list(SORT DATA_TYPE_GR_BLOCKS_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(data_type_gr_blocks STATIC)
|
||||||
|
target_sources(data_type_gr_blocks
|
||||||
|
PRIVATE
|
||||||
|
${DATA_TYPE_GR_BLOCKS_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${DATA_TYPE_GR_BLOCKS_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${DATA_TYPE_GR_BLOCKS_HEADERS})
|
source_group(Headers FILES ${DATA_TYPE_GR_BLOCKS_HEADERS})
|
||||||
|
|
||||||
add_library(data_type_gr_blocks
|
add_library(data_type_gr_blocks
|
||||||
${DATA_TYPE_GR_BLOCKS_SOURCES}
|
${DATA_TYPE_GR_BLOCKS_SOURCES}
|
||||||
${DATA_TYPE_GR_BLOCKS_HEADERS}
|
${DATA_TYPE_GR_BLOCKS_HEADERS}
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(data_type_gr_blocks
|
target_link_libraries(data_type_gr_blocks
|
||||||
PUBLIC
|
PUBLIC
|
||||||
|
@ -28,17 +28,25 @@ set(INPUT_FILTER_ADAPTER_HEADERS
|
|||||||
list(SORT INPUT_FILTER_ADAPTER_HEADERS)
|
list(SORT INPUT_FILTER_ADAPTER_HEADERS)
|
||||||
list(SORT INPUT_FILTER_ADAPTER_SOURCES)
|
list(SORT INPUT_FILTER_ADAPTER_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(input_filter_adapters STATIC)
|
||||||
|
target_sources(input_filter_adapters
|
||||||
|
PRIVATE
|
||||||
|
${INPUT_FILTER_ADAPTER_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${INPUT_FILTER_ADAPTER_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${INPUT_FILTER_ADAPTER_HEADERS})
|
source_group(Headers FILES ${INPUT_FILTER_ADAPTER_HEADERS})
|
||||||
|
|
||||||
add_library(input_filter_adapters
|
add_library(input_filter_adapters
|
||||||
${INPUT_FILTER_ADAPTER_SOURCES}
|
${INPUT_FILTER_ADAPTER_SOURCES}
|
||||||
${INPUT_FILTER_ADAPTER_HEADERS}
|
${INPUT_FILTER_ADAPTER_HEADERS}
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(input_filter_adapters
|
target_link_libraries(input_filter_adapters
|
||||||
PUBLIC
|
PUBLIC
|
||||||
Gnuradio::blocks
|
algorithms_libs
|
||||||
Gnuradio::filter
|
|
||||||
input_filter_gr_blocks
|
input_filter_gr_blocks
|
||||||
PRIVATE
|
PRIVATE
|
||||||
Gflags::gflags
|
Gflags::gflags
|
||||||
@ -46,13 +54,7 @@ target_link_libraries(input_filter_adapters
|
|||||||
Volk::volk
|
Volk::volk
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(input_filter_adapters
|
if(GNURADIO_IS_38_OR_GREATER)
|
||||||
PUBLIC
|
|
||||||
${CMAKE_SOURCE_DIR}/src/algorithms/libs
|
|
||||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
|
||||||
)
|
|
||||||
|
|
||||||
if(NOT (GNURADIO_VERSION VERSION_LESS "3.8"))
|
|
||||||
target_compile_definitions(input_filter_adapters PUBLIC -DGR_GREATER_38=1)
|
target_compile_definitions(input_filter_adapters PUBLIC -DGR_GREATER_38=1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -25,11 +25,21 @@ set(INPUT_FILTER_GR_BLOCKS_HEADERS
|
|||||||
list(SORT INPUT_FILTER_GR_BLOCKS_HEADERS)
|
list(SORT INPUT_FILTER_GR_BLOCKS_HEADERS)
|
||||||
list(SORT INPUT_FILTER_GR_BLOCKS_SOURCES)
|
list(SORT INPUT_FILTER_GR_BLOCKS_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(input_filter_gr_blocks STATIC)
|
||||||
|
target_sources(input_filter_gr_blocks
|
||||||
|
PRIVATE
|
||||||
|
${INPUT_FILTER_GR_BLOCKS_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${INPUT_FILTER_GR_BLOCKS_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${INPUT_FILTER_GR_BLOCKS_HEADERS})
|
source_group(Headers FILES ${INPUT_FILTER_GR_BLOCKS_HEADERS})
|
||||||
|
|
||||||
add_library(input_filter_gr_blocks
|
add_library(input_filter_gr_blocks
|
||||||
${INPUT_FILTER_GR_BLOCKS_SOURCES}
|
${INPUT_FILTER_GR_BLOCKS_SOURCES}
|
||||||
${INPUT_FILTER_GR_BLOCKS_HEADERS})
|
${INPUT_FILTER_GR_BLOCKS_HEADERS}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(input_filter_gr_blocks
|
target_link_libraries(input_filter_gr_blocks
|
||||||
PUBLIC
|
PUBLIC
|
||||||
|
@ -55,6 +55,7 @@ set(GNSS_SPLIBS_HEADERS
|
|||||||
conjugate_sc.h
|
conjugate_sc.h
|
||||||
conjugate_ic.h
|
conjugate_ic.h
|
||||||
gnss_sdr_create_directory.h
|
gnss_sdr_create_directory.h
|
||||||
|
gnss_sdr_make_unique.h
|
||||||
gnss_circular_deque.h
|
gnss_circular_deque.h
|
||||||
geofunctions.h
|
geofunctions.h
|
||||||
item_type_helpers.h
|
item_type_helpers.h
|
||||||
@ -71,9 +72,18 @@ endif()
|
|||||||
list(SORT GNSS_SPLIBS_HEADERS)
|
list(SORT GNSS_SPLIBS_HEADERS)
|
||||||
list(SORT GNSS_SPLIBS_SOURCES)
|
list(SORT GNSS_SPLIBS_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(algorithms_libs STATIC)
|
||||||
|
target_sources(algorithms_libs
|
||||||
|
PRIVATE
|
||||||
|
${GNSS_SPLIBS_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${GNSS_SPLIBS_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${GNSS_SPLIBS_HEADERS})
|
source_group(Headers FILES ${GNSS_SPLIBS_HEADERS})
|
||||||
|
|
||||||
add_library(algorithms_libs ${GNSS_SPLIBS_SOURCES} ${GNSS_SPLIBS_HEADERS})
|
add_library(algorithms_libs ${GNSS_SPLIBS_SOURCES} ${GNSS_SPLIBS_HEADERS})
|
||||||
|
endif()
|
||||||
|
|
||||||
if(${FILESYSTEM_FOUND})
|
if(${FILESYSTEM_FOUND})
|
||||||
target_compile_definitions(algorithms_libs PRIVATE -DHAS_STD_FILESYSTEM=1)
|
target_compile_definitions(algorithms_libs PRIVATE -DHAS_STD_FILESYSTEM=1)
|
||||||
@ -140,29 +150,11 @@ target_compile_definitions(algorithms_libs
|
|||||||
PUBLIC -DGNSSSDR_INSTALL_DIR="${CMAKE_INSTALL_PREFIX}"
|
PUBLIC -DGNSSSDR_INSTALL_DIR="${CMAKE_INSTALL_PREFIX}"
|
||||||
)
|
)
|
||||||
|
|
||||||
if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32)
|
if(DO_NOT_USE_LAMBDAS)
|
||||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.1.1")
|
|
||||||
target_compile_definitions(algorithms_libs
|
target_compile_definitions(algorithms_libs
|
||||||
PRIVATE -DOLDCOMPILER=1
|
PRIVATE -DDO_NOT_USE_LAMBDAS=1
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
|
||||||
|
|
||||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
|
||||||
if(CLANG_VERSION VERSION_LESS "600")
|
|
||||||
target_compile_definitions(algorithms_libs
|
|
||||||
PRIVATE -DOLDCOMPILER=1
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.5.0")
|
|
||||||
target_compile_definitions(algorithms_libs
|
|
||||||
PRIVATE -DOLDCOMPILER=1
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set_property(TARGET algorithms_libs
|
set_property(TARGET algorithms_libs
|
||||||
APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||||
@ -180,9 +172,18 @@ endif()
|
|||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(gnss_sdr_flags STATIC)
|
||||||
|
target_sources(gnss_sdr_flags
|
||||||
|
PRIVATE
|
||||||
|
gnss_sdr_flags.cc
|
||||||
|
PUBLIC
|
||||||
|
gnss_sdr_flags.h
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES gnss_sdr_flags.h)
|
source_group(Headers FILES gnss_sdr_flags.h)
|
||||||
|
|
||||||
add_library(gnss_sdr_flags gnss_sdr_flags.cc gnss_sdr_flags.h)
|
add_library(gnss_sdr_flags gnss_sdr_flags.cc gnss_sdr_flags.h)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(${FILESYSTEM_FOUND})
|
if(${FILESYSTEM_FOUND})
|
||||||
target_compile_definitions(gnss_sdr_flags PRIVATE -DHAS_STD_FILESYSTEM=1)
|
target_compile_definitions(gnss_sdr_flags PRIVATE -DHAS_STD_FILESYSTEM=1)
|
||||||
|
76
src/algorithms/libs/gnss_sdr_make_unique.h
Normal file
76
src/algorithms/libs/gnss_sdr_make_unique.h
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
/*!
|
||||||
|
* \file gnss_sdr_make_unique.h
|
||||||
|
* \brief This file implements std::make_unique for C++11
|
||||||
|
*
|
||||||
|
* \author Carles Fernandez-Prades, 2020. cfernandez(at)cttc.es
|
||||||
|
*
|
||||||
|
* Based on https://stackoverflow.com/a/17902439
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010-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
|
||||||
|
*
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef GNSS_SDR_GNSS_SDR_MAKE_UNIQUE_H
|
||||||
|
#define GNSS_SDR_GNSS_SDR_MAKE_UNIQUE_H
|
||||||
|
|
||||||
|
#if __cplusplus == 201103L
|
||||||
|
|
||||||
|
#include <cstddef>
|
||||||
|
#include <memory>
|
||||||
|
#include <type_traits>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
template <class T>
|
||||||
|
struct _Unique_if
|
||||||
|
{
|
||||||
|
typedef unique_ptr<T> _Single_object;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct _Unique_if<T[]>
|
||||||
|
{
|
||||||
|
typedef unique_ptr<T[]> _Unknown_bound;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T, size_t N>
|
||||||
|
struct _Unique_if<T[N]>
|
||||||
|
{
|
||||||
|
typedef void _Known_bound;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T, class... Args>
|
||||||
|
typename _Unique_if<T>::_Single_object
|
||||||
|
make_unique(Args&&... args)
|
||||||
|
{
|
||||||
|
return unique_ptr<T>(new T(std::forward<Args>(args)...));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
typename _Unique_if<T>::_Unknown_bound
|
||||||
|
make_unique(size_t n)
|
||||||
|
{
|
||||||
|
typedef typename remove_extent<T>::type U;
|
||||||
|
return unique_ptr<T>(new U[n]());
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T, class... Args>
|
||||||
|
typename _Unique_if<T>::_Known_bound
|
||||||
|
make_unique(Args&&...) = delete;
|
||||||
|
} // namespace std
|
||||||
|
|
||||||
|
#endif // __cplusplus == 201103L
|
||||||
|
|
||||||
|
#endif // GNSS_SDR_GNSS_SDR_MAKE_UNIQUE_H
|
@ -177,9 +177,8 @@ item_type_converter_t make_vector_converter(const std::string &input_type,
|
|||||||
if (input_type == output_type)
|
if (input_type == output_type)
|
||||||
{
|
{
|
||||||
size_t input_size = item_type_size(input_type);
|
size_t input_size = item_type_size(input_type);
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(copy_converter, std::placeholders::_1, std::placeholders::_2,
|
return std::bind(copy_converter, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, input_size); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_3, input_size);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return copy_converter(arg1, arg2, arg3, input_size); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return copy_converter(arg1, arg2, arg3, input_size); };
|
||||||
#endif
|
#endif
|
||||||
@ -189,18 +188,16 @@ item_type_converter_t make_vector_converter(const std::string &input_type,
|
|||||||
{
|
{
|
||||||
if (output_type == "short")
|
if (output_type == "short")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_8i_16i, std::placeholders::_1,
|
return std::bind(convert_8i_16i, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_8i_16i(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_8i_16i(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (output_type == "float")
|
else if (output_type == "float")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_8i_32f, std::placeholders::_1,
|
return std::bind(convert_8i_32f, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_8i_32f(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_8i_32f(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
@ -211,27 +208,24 @@ item_type_converter_t make_vector_converter(const std::string &input_type,
|
|||||||
if (output_type == "ibyte")
|
if (output_type == "ibyte")
|
||||||
{
|
{
|
||||||
size_t input_size = item_type_size(input_type);
|
size_t input_size = item_type_size(input_type);
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(copy_converter, std::placeholders::_1, std::placeholders::_2,
|
return std::bind(copy_converter, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, input_size); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_3, input_size);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return copy_converter(arg1, arg2, arg3, input_size); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return copy_converter(arg1, arg2, arg3, input_size); };
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (output_type == "cshort" or output_type == "ishort")
|
if (output_type == "cshort" or output_type == "ishort")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_8ic_16ic, std::placeholders::_1,
|
return std::bind(convert_8ic_16ic, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_8ic_16ic(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_8ic_16ic(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (output_type == "gr_complex")
|
else if (output_type == "gr_complex")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_8ic_32fc, std::placeholders::_1,
|
return std::bind(convert_8ic_32fc, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_8ic_32fc(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_8ic_32fc(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
@ -242,27 +236,24 @@ item_type_converter_t make_vector_converter(const std::string &input_type,
|
|||||||
if (output_type == "cbyte")
|
if (output_type == "cbyte")
|
||||||
{
|
{
|
||||||
size_t input_size = item_type_size(input_type);
|
size_t input_size = item_type_size(input_type);
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(copy_converter, std::placeholders::_1, std::placeholders::_2,
|
return std::bind(copy_converter, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, input_size); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_3, input_size);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return copy_converter(arg1, arg2, arg3, input_size); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return copy_converter(arg1, arg2, arg3, input_size); };
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (output_type == "cshort" or output_type == "ishort")
|
else if (output_type == "cshort" or output_type == "ishort")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_8i_16i, std::placeholders::_1,
|
return std::bind(convert_8i_16i, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_8i_16i(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_8i_16i(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (output_type == "gr_complex")
|
else if (output_type == "gr_complex")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_8i_32f, std::placeholders::_1,
|
return std::bind(convert_8i_32f, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_8i_32f(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_8i_32f(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
@ -272,18 +263,16 @@ item_type_converter_t make_vector_converter(const std::string &input_type,
|
|||||||
{
|
{
|
||||||
if (output_type == "byte")
|
if (output_type == "byte")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_16i_8i, std::placeholders::_1,
|
return std::bind(convert_16i_8i, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_16i_8i(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_16i_8i(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (output_type == "float")
|
else if (output_type == "float")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_16i_32f, std::placeholders::_1,
|
return std::bind(convert_16i_32f, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_16i_32f(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_16i_32f(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
@ -293,9 +282,8 @@ item_type_converter_t make_vector_converter(const std::string &input_type,
|
|||||||
{
|
{
|
||||||
if (output_type == "cbyte" or output_type == "ibyte")
|
if (output_type == "cbyte" or output_type == "ibyte")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_16ic_8ic, std::placeholders::_1,
|
return std::bind(convert_16ic_8ic, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_16ic_8ic(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_16ic_8ic(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
@ -303,18 +291,16 @@ item_type_converter_t make_vector_converter(const std::string &input_type,
|
|||||||
if (output_type == "ishort")
|
if (output_type == "ishort")
|
||||||
{
|
{
|
||||||
size_t input_size = item_type_size(input_type);
|
size_t input_size = item_type_size(input_type);
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(copy_converter, std::placeholders::_1, std::placeholders::_2,
|
return std::bind(copy_converter, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, input_size); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_3, input_size);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return copy_converter(arg1, arg2, arg3, input_size); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return copy_converter(arg1, arg2, arg3, input_size); };
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (output_type == "gr_complex")
|
else if (output_type == "gr_complex")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_16ic_32fc, std::placeholders::_1,
|
return std::bind(convert_16ic_32fc, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_16ic_32fc(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_16ic_32fc(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
@ -324,9 +310,8 @@ item_type_converter_t make_vector_converter(const std::string &input_type,
|
|||||||
{
|
{
|
||||||
if (output_type == "cbyte" or output_type == "ibyte")
|
if (output_type == "cbyte" or output_type == "ibyte")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_16i_8i, std::placeholders::_1,
|
return std::bind(convert_16i_8i, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_16i_8i(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_16i_8i(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
@ -334,18 +319,16 @@ item_type_converter_t make_vector_converter(const std::string &input_type,
|
|||||||
if (output_type == "cshort")
|
if (output_type == "cshort")
|
||||||
{
|
{
|
||||||
size_t input_size = item_type_size(input_type);
|
size_t input_size = item_type_size(input_type);
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(copy_converter, std::placeholders::_1, std::placeholders::_2,
|
return std::bind(copy_converter, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, input_size); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_3, input_size);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return copy_converter(arg1, arg2, arg3, input_size); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return copy_converter(arg1, arg2, arg3, input_size); };
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (output_type == "gr_complex")
|
else if (output_type == "gr_complex")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_16i_32f, std::placeholders::_1,
|
return std::bind(convert_16i_32f, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_16i_32f(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_16i_32f(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
@ -355,18 +338,16 @@ item_type_converter_t make_vector_converter(const std::string &input_type,
|
|||||||
{
|
{
|
||||||
if (output_type == "byte")
|
if (output_type == "byte")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_32f_8i, std::placeholders::_1,
|
return std::bind(convert_32f_8i, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_32f_8i(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_32f_8i(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (output_type == "short")
|
else if (output_type == "short")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_32f_16i, std::placeholders::_1,
|
return std::bind(convert_32f_16i, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_32f_16i(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_32f_16i(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
@ -376,18 +357,16 @@ item_type_converter_t make_vector_converter(const std::string &input_type,
|
|||||||
{
|
{
|
||||||
if (output_type == "cbyte" or output_type == "ibyte")
|
if (output_type == "cbyte" or output_type == "ibyte")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_32fc_8ic, std::placeholders::_1,
|
return std::bind(convert_32fc_8ic, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_32fc_8ic(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_32fc_8ic(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (output_type == "cshort" or output_type == "ishort")
|
else if (output_type == "cshort" or output_type == "ishort")
|
||||||
{
|
{
|
||||||
#ifdef OLDCOMPILER
|
#ifdef DO_NOT_USE_LAMBDAS
|
||||||
return std::bind(convert_32fc_16ic, std::placeholders::_1,
|
return std::bind(convert_32fc_16ic, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); // NOLINT(modernize-avoid-bind)
|
||||||
std::placeholders::_2, std::placeholders::_3);
|
|
||||||
#else
|
#else
|
||||||
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_32fc_16ic(arg1, arg2, arg3); };
|
return [=](auto &&arg1, auto &&arg2, auto &&arg3) { return convert_32fc_16ic(arg1, arg2, arg3); };
|
||||||
#endif
|
#endif
|
||||||
|
@ -52,17 +52,29 @@ set(RTKLIB_LIB_HEADERS
|
|||||||
list(SORT RTKLIB_LIB_HEADERS)
|
list(SORT RTKLIB_LIB_HEADERS)
|
||||||
list(SORT RTKLIB_LIB_SOURCES)
|
list(SORT RTKLIB_LIB_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(algorithms_libs_rtklib STATIC)
|
||||||
|
target_sources(algorithms_libs_rtklib
|
||||||
|
PRIVATE
|
||||||
|
${RTKLIB_LIB_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${RTKLIB_LIB_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${RTKLIB_LIB_HEADERS})
|
source_group(Headers FILES ${RTKLIB_LIB_HEADERS})
|
||||||
|
add_library(algorithms_libs_rtklib
|
||||||
add_library(algorithms_libs_rtklib ${RTKLIB_LIB_SOURCES} ${RTKLIB_LIB_HEADERS})
|
${RTKLIB_LIB_SOURCES}
|
||||||
|
${RTKLIB_LIB_HEADERS}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(algorithms_libs_rtklib
|
target_link_libraries(algorithms_libs_rtklib
|
||||||
PRIVATE
|
PRIVATE
|
||||||
core_system_parameters
|
core_system_parameters
|
||||||
Gflags::gflags
|
Gflags::gflags
|
||||||
Glog::glog
|
Glog::glog
|
||||||
${LAPACK_LIBRARIES}
|
LAPACK::LAPACK
|
||||||
${BLAS_LIBRARIES}
|
BLAS::BLAS
|
||||||
)
|
)
|
||||||
|
|
||||||
set_property(TARGET algorithms_libs_rtklib
|
set_property(TARGET algorithms_libs_rtklib
|
||||||
|
@ -170,7 +170,7 @@ endif()
|
|||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_CXX_FLAGS} -Wall")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_CXX_FLAGS} -Wall")
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
|
||||||
|
|
||||||
option(ENABLE_STRIP "Create a stripped volk_gnsssdr_profile binary (without shared libraries)" OFF)
|
option(ENABLE_STRIP "Create a stripped volk_gnsssdr_profile binary (without debugging symbols)" OFF)
|
||||||
if(ENABLE_STRIP)
|
if(ENABLE_STRIP)
|
||||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||||
endif()
|
endif()
|
||||||
|
@ -7,17 +7,18 @@
|
|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
#
|
#
|
||||||
|
|
||||||
set(OBS_ADAPTER_SOURCES
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(obs_adapters STATIC)
|
||||||
|
target_sources(obs_adapters
|
||||||
|
PRIVATE
|
||||||
hybrid_observables.cc
|
hybrid_observables.cc
|
||||||
)
|
PUBLIC
|
||||||
|
|
||||||
set(OBS_ADAPTER_HEADERS
|
|
||||||
hybrid_observables.h
|
hybrid_observables.h
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${OBS_ADAPTER_HEADERS})
|
source_group(Headers FILES hybrid_observables.h)
|
||||||
|
add_library(obs_adapters hybrid_observables.cc hybrid_observables.h)
|
||||||
add_library(obs_adapters ${OBS_ADAPTER_SOURCES} ${OBS_ADAPTER_HEADERS})
|
endif()
|
||||||
|
|
||||||
target_include_directories(obs_adapters
|
target_include_directories(obs_adapters
|
||||||
PUBLIC
|
PUBLIC
|
||||||
@ -29,8 +30,6 @@ target_link_libraries(obs_adapters
|
|||||||
obs_gr_blocks
|
obs_gr_blocks
|
||||||
PRIVATE
|
PRIVATE
|
||||||
gnss_sdr_flags
|
gnss_sdr_flags
|
||||||
observables_libs
|
|
||||||
Gflags::gflags
|
|
||||||
Glog::glog
|
Glog::glog
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -7,17 +7,18 @@
|
|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
#
|
#
|
||||||
|
|
||||||
set(OBS_GR_BLOCKS_SOURCES
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(obs_gr_blocks STATIC)
|
||||||
|
target_sources(obs_gr_blocks
|
||||||
|
PRIVATE
|
||||||
hybrid_observables_gs.cc
|
hybrid_observables_gs.cc
|
||||||
)
|
PUBLIC
|
||||||
|
|
||||||
set(OBS_GR_BLOCKS_HEADERS
|
|
||||||
hybrid_observables_gs.h
|
hybrid_observables_gs.h
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${OBS_GR_BLOCKS_HEADERS})
|
source_group(Headers FILES hybrid_observables_gs.h)
|
||||||
|
add_library(obs_gr_blocks hybrid_observables_gs.cc hybrid_observables_gs.h)
|
||||||
add_library(obs_gr_blocks ${OBS_GR_BLOCKS_SOURCES} ${OBS_GR_BLOCKS_HEADERS})
|
endif()
|
||||||
|
|
||||||
if(${FILESYSTEM_FOUND})
|
if(${FILESYSTEM_FOUND})
|
||||||
target_compile_definitions(obs_gr_blocks PRIVATE -DHAS_STD_FILESYSTEM=1)
|
target_compile_definitions(obs_gr_blocks PRIVATE -DHAS_STD_FILESYSTEM=1)
|
||||||
@ -53,7 +54,7 @@ if(GNURADIO_USES_STD_POINTERS)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_VERSION VERSION_GREATER 3.1)
|
if(USE_GENERIC_LAMBDAS)
|
||||||
set(has_generic_lambdas HAS_GENERIC_LAMBDA=1)
|
set(has_generic_lambdas HAS_GENERIC_LAMBDA=1)
|
||||||
set(no_has_generic_lambdas HAS_GENERIC_LAMBDA=0)
|
set(no_has_generic_lambdas HAS_GENERIC_LAMBDA=0)
|
||||||
target_compile_definitions(obs_gr_blocks
|
target_compile_definitions(obs_gr_blocks
|
||||||
@ -68,10 +69,10 @@ else()
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(Boost_VERSION_STRING VERSION_GREATER 1.72.99)
|
if(USE_BOOST_BIND_PLACEHOLDERS)
|
||||||
target_compile_definitions(obs_gr_blocks
|
target_compile_definitions(obs_gr_blocks
|
||||||
PRIVATE
|
PRIVATE
|
||||||
-DBOOST_173_OR_GREATER=1
|
-DUSE_BOOST_BIND_PLACEHOLDERS=1
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
#if HAS_GENERIC_LAMBDA
|
#if HAS_GENERIC_LAMBDA
|
||||||
#else
|
#else
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind/bind.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_STD_FILESYSTEM
|
#if HAS_STD_FILESYSTEM
|
||||||
@ -74,9 +74,9 @@ hybrid_observables_gs::hybrid_observables_gs(const Obs_Conf &conf_) : gr::block(
|
|||||||
this->message_port_register_in(pmt::mp("pvt_to_observables"));
|
this->message_port_register_in(pmt::mp("pvt_to_observables"));
|
||||||
this->set_msg_handler(pmt::mp("pvt_to_observables"),
|
this->set_msg_handler(pmt::mp("pvt_to_observables"),
|
||||||
#if HAS_GENERIC_LAMBDA
|
#if HAS_GENERIC_LAMBDA
|
||||||
[this](pmt::pmt_t &&PH1) { msg_handler_pvt_to_observables(PH1); });
|
[this](auto &&PH1) { msg_handler_pvt_to_observables(PH1); });
|
||||||
#else
|
#else
|
||||||
#if BOOST_173_OR_GREATER
|
#if USE_BOOST_BIND_PLACEHOLDERS
|
||||||
boost::bind(&hybrid_observables_gs::msg_handler_pvt_to_observables, this, boost::placeholders::_1));
|
boost::bind(&hybrid_observables_gs::msg_handler_pvt_to_observables, this, boost::placeholders::_1));
|
||||||
#else
|
#else
|
||||||
boost::bind(&hybrid_observables_gs::msg_handler_pvt_to_observables, this, _1));
|
boost::bind(&hybrid_observables_gs::msg_handler_pvt_to_observables, this, _1));
|
||||||
@ -653,7 +653,7 @@ int hybrid_observables_gs::general_work(int noutput_items __attribute__((unused)
|
|||||||
|
|
||||||
if (d_Rx_clock_buffer.size() == d_Rx_clock_buffer.capacity())
|
if (d_Rx_clock_buffer.size() == d_Rx_clock_buffer.capacity())
|
||||||
{
|
{
|
||||||
std::vector<Gnss_Synchro> epoch_data;
|
std::vector<Gnss_Synchro> epoch_data(d_nchannels_out);
|
||||||
int32_t n_valid = 0;
|
int32_t n_valid = 0;
|
||||||
for (uint32_t n = 0; n < d_nchannels_out; n++)
|
for (uint32_t n = 0; n < d_nchannels_out; n++)
|
||||||
{
|
{
|
||||||
@ -672,7 +672,7 @@ int hybrid_observables_gs::general_work(int noutput_items __attribute__((unused)
|
|||||||
{
|
{
|
||||||
n_valid++;
|
n_valid++;
|
||||||
}
|
}
|
||||||
epoch_data.push_back(interpolated_gnss_synchro);
|
epoch_data[n] = interpolated_gnss_synchro;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (T_rx_TOW_set)
|
if (T_rx_TOW_set)
|
||||||
|
@ -7,12 +7,18 @@
|
|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
#
|
#
|
||||||
|
|
||||||
source_group(Headers FILES obs_conf.h)
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(observables_libs STATIC)
|
||||||
add_library(observables_libs
|
target_sources(observables_libs
|
||||||
|
PRIVATE
|
||||||
obs_conf.cc
|
obs_conf.cc
|
||||||
|
PUBLIC
|
||||||
obs_conf.h
|
obs_conf.h
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
|
source_group(Headers FILES obs_conf.h)
|
||||||
|
add_library(observables_libs obs_conf.cc obs_conf.h)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(observables_libs
|
target_link_libraries(observables_libs
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
@ -21,16 +21,24 @@ set(RESAMPLER_ADAPTER_HEADERS
|
|||||||
list(SORT RESAMPLER_ADAPTER_HEADERS)
|
list(SORT RESAMPLER_ADAPTER_HEADERS)
|
||||||
list(SORT RESAMPLER_ADAPTER_SOURCES)
|
list(SORT RESAMPLER_ADAPTER_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(resampler_adapters STATIC)
|
||||||
|
target_sources(resampler_adapters
|
||||||
|
PRIVATE
|
||||||
|
${RESAMPLER_ADAPTER_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${RESAMPLER_ADAPTER_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${RESAMPLER_ADAPTER_HEADERS})
|
source_group(Headers FILES ${RESAMPLER_ADAPTER_HEADERS})
|
||||||
|
|
||||||
add_library(resampler_adapters
|
add_library(resampler_adapters
|
||||||
${RESAMPLER_ADAPTER_SOURCES}
|
${RESAMPLER_ADAPTER_SOURCES}
|
||||||
${RESAMPLER_ADAPTER_HEADERS}
|
${RESAMPLER_ADAPTER_HEADERS}
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(resampler_adapters
|
target_link_libraries(resampler_adapters
|
||||||
PUBLIC
|
PUBLIC
|
||||||
Gnuradio::runtime
|
|
||||||
resampler_gr_blocks
|
resampler_gr_blocks
|
||||||
PRIVATE
|
PRIVATE
|
||||||
Gflags::gflags
|
Gflags::gflags
|
||||||
@ -43,7 +51,7 @@ target_include_directories(resampler_adapters
|
|||||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||||
)
|
)
|
||||||
|
|
||||||
if(NOT (GNURADIO_VERSION VERSION_LESS "3.8"))
|
if(GNURADIO_IS_38_OR_GREATER)
|
||||||
target_compile_definitions(resampler_adapters PUBLIC -DGR_GREATER_38=1)
|
target_compile_definitions(resampler_adapters PUBLIC -DGR_GREATER_38=1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -23,12 +23,21 @@ set(RESAMPLER_GR_BLOCKS_HEADERS
|
|||||||
list(SORT RESAMPLER_GR_BLOCKS_HEADERS)
|
list(SORT RESAMPLER_GR_BLOCKS_HEADERS)
|
||||||
list(SORT RESAMPLER_GR_BLOCKS_SOURCES)
|
list(SORT RESAMPLER_GR_BLOCKS_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(resampler_gr_blocks STATIC)
|
||||||
|
target_sources(resampler_gr_blocks
|
||||||
|
PRIVATE
|
||||||
|
${RESAMPLER_GR_BLOCKS_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${RESAMPLER_GR_BLOCKS_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${RESAMPLER_GR_BLOCKS_HEADERS})
|
source_group(Headers FILES ${RESAMPLER_GR_BLOCKS_HEADERS})
|
||||||
|
|
||||||
add_library(resampler_gr_blocks
|
add_library(resampler_gr_blocks
|
||||||
${RESAMPLER_GR_BLOCKS_SOURCES}
|
${RESAMPLER_GR_BLOCKS_SOURCES}
|
||||||
${RESAMPLER_GR_BLOCKS_HEADERS}
|
${RESAMPLER_GR_BLOCKS_HEADERS}
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(resampler_gr_blocks
|
target_link_libraries(resampler_gr_blocks
|
||||||
PUBLIC
|
PUBLIC
|
||||||
|
@ -7,15 +7,21 @@
|
|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
#
|
#
|
||||||
|
|
||||||
set(SIGNAL_GENERATOR_ADAPTER_SOURCES signal_generator.cc)
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
set(SIGNAL_GENERATOR_ADAPTER_HEADERS signal_generator.h)
|
add_library(signal_generator_adapters STATIC)
|
||||||
|
target_sources(signal_generator_adapters
|
||||||
source_group(Headers FILES ${SIGNAL_GENERATOR_ADAPTER_HEADERS})
|
PRIVATE
|
||||||
|
signal_generator.cc
|
||||||
add_library(signal_generator_adapters
|
PUBLIC
|
||||||
${SIGNAL_GENERATOR_ADAPTER_SOURCES}
|
signal_generator.h
|
||||||
${SIGNAL_GENERATOR_ADAPTER_HEADERS}
|
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
|
source_group(Headers FILES signal_generator.h)
|
||||||
|
add_library(signal_generator_adapters
|
||||||
|
signal_generator.cc
|
||||||
|
signal_generator.h
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(signal_generator_adapters
|
target_link_libraries(signal_generator_adapters
|
||||||
PUBLIC
|
PUBLIC
|
||||||
|
@ -34,7 +34,8 @@
|
|||||||
|
|
||||||
SignalGenerator::SignalGenerator(ConfigurationInterface* configuration,
|
SignalGenerator::SignalGenerator(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t> > queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
unsigned int out_stream,
|
||||||
|
Concurrent_Queue<pmt::pmt_t>* queue __attribute__((unused))) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_file = "./data/gen_source.dat";
|
std::string default_dump_file = "./data/gen_source.dat";
|
||||||
|
@ -44,7 +44,7 @@ class SignalGenerator : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
SignalGenerator(ConfigurationInterface* configuration,
|
SignalGenerator(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t> > queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~SignalGenerator() = default;
|
~SignalGenerator() = default;
|
||||||
|
|
||||||
@ -86,7 +86,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::vector_to_stream::sptr vector_to_stream_;
|
gr::blocks::vector_to_stream::sptr vector_to_stream_;
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t> > queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_SIGNAL_GENERATOR_H
|
#endif // GNSS_SDR_SIGNAL_GENERATOR_H
|
||||||
|
@ -7,15 +7,21 @@
|
|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
#
|
#
|
||||||
|
|
||||||
set(SIGNAL_GENERATOR_BLOCK_SOURCES signal_generator_c.cc)
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
set(SIGNAL_GENERATOR_BLOCK_HEADERS signal_generator_c.h)
|
add_library(signal_generator_gr_blocks STATIC)
|
||||||
|
target_sources(signal_generator_gr_blocks
|
||||||
source_group(Headers FILES ${SIGNAL_GENERATOR_BLOCK_HEADERS})
|
PRIVATE
|
||||||
|
signal_generator_c.cc
|
||||||
add_library(signal_generator_gr_blocks
|
PUBLIC
|
||||||
${SIGNAL_GENERATOR_BLOCK_SOURCES}
|
signal_generator_c.h
|
||||||
${SIGNAL_GENERATOR_BLOCK_HEADERS}
|
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
|
source_group(Headers FILES signal_generator_c.h)
|
||||||
|
add_library(signal_generator_gr_blocks
|
||||||
|
signal_generator_c.cc
|
||||||
|
signal_generator_c.h
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(signal_generator_gr_blocks
|
target_link_libraries(signal_generator_gr_blocks
|
||||||
PUBLIC
|
PUBLIC
|
||||||
|
@ -125,12 +125,21 @@ set(SIGNAL_SOURCE_ADAPTER_HEADERS
|
|||||||
list(SORT SIGNAL_SOURCE_ADAPTER_HEADERS)
|
list(SORT SIGNAL_SOURCE_ADAPTER_HEADERS)
|
||||||
list(SORT SIGNAL_SOURCE_ADAPTER_SOURCES)
|
list(SORT SIGNAL_SOURCE_ADAPTER_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(signal_source_adapters STATIC)
|
||||||
|
target_sources(signal_source_adapters
|
||||||
|
PRIVATE
|
||||||
|
${SIGNAL_SOURCE_ADAPTER_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${SIGNAL_SOURCE_ADAPTER_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${SIGNAL_SOURCE_ADAPTER_HEADERS})
|
source_group(Headers FILES ${SIGNAL_SOURCE_ADAPTER_HEADERS})
|
||||||
|
|
||||||
add_library(signal_source_adapters
|
add_library(signal_source_adapters
|
||||||
${SIGNAL_SOURCE_ADAPTER_SOURCES}
|
${SIGNAL_SOURCE_ADAPTER_SOURCES}
|
||||||
${SIGNAL_SOURCE_ADAPTER_HEADERS}
|
${SIGNAL_SOURCE_ADAPTER_HEADERS}
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_include_directories(signal_source_adapters
|
target_include_directories(signal_source_adapters
|
||||||
PUBLIC
|
PUBLIC
|
||||||
@ -140,14 +149,11 @@ target_include_directories(signal_source_adapters
|
|||||||
target_link_libraries(signal_source_adapters
|
target_link_libraries(signal_source_adapters
|
||||||
PUBLIC
|
PUBLIC
|
||||||
Boost::headers
|
Boost::headers
|
||||||
Gnuradio::runtime
|
|
||||||
Gnuradio::blocks
|
Gnuradio::blocks
|
||||||
signal_source_gr_blocks
|
signal_source_gr_blocks
|
||||||
signal_source_libs
|
|
||||||
PRIVATE
|
PRIVATE
|
||||||
gnss_sdr_flags
|
gnss_sdr_flags
|
||||||
core_system_parameters
|
core_system_parameters
|
||||||
Gflags::gflags
|
|
||||||
Glog::glog
|
Glog::glog
|
||||||
Volk::volk
|
Volk::volk
|
||||||
)
|
)
|
||||||
|
@ -40,238 +40,10 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
void run_DMA_process(const std::string &FreqBand, const std::string &Filename1, const std::string &Filename2, const bool &enable_DMA)
|
|
||||||
{
|
|
||||||
const int MAX_INPUT_SAMPLES_TOTAL = 16384;
|
|
||||||
int max_value = 0;
|
|
||||||
int tx_fd; // DMA descriptor
|
|
||||||
std::ifstream infile1;
|
|
||||||
infile1.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile1.open(Filename1, std::ios::binary);
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
std::cerr << "Exception opening file " << Filename1 << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::ifstream infile2;
|
|
||||||
infile2.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile2.open(Filename2, std::ios::binary);
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
// could not exist
|
|
||||||
}
|
|
||||||
|
|
||||||
// rx signal
|
|
||||||
std::vector<int8_t> input_samples(MAX_INPUT_SAMPLES_TOTAL * 2);
|
|
||||||
std::vector<int8_t> input_samples2(MAX_INPUT_SAMPLES_TOTAL * 2);
|
|
||||||
std::vector<int8_t> input_samples_dma(MAX_INPUT_SAMPLES_TOTAL * 2 * 2);
|
|
||||||
|
|
||||||
int nread_elements;
|
|
||||||
int nread_elements2;
|
|
||||||
int file_completed = 0;
|
|
||||||
int num_transferred_bytes;
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// Open DMA device
|
|
||||||
//**************************************************************************
|
|
||||||
tx_fd = open("/dev/loop_tx", O_WRONLY);
|
|
||||||
if (tx_fd < 0)
|
|
||||||
{
|
|
||||||
std::cout << "Cannot open loop device" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// Open input file
|
|
||||||
//**************************************************************************
|
|
||||||
int nsamples = 0;
|
|
||||||
|
|
||||||
while ((file_completed == 0) && (enable_DMA == true))
|
|
||||||
{
|
|
||||||
unsigned int dma_index = 0;
|
|
||||||
|
|
||||||
if (FreqBand == "L1")
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile1.read(reinterpret_cast<char *>(input_samples.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
|
||||||
}
|
|
||||||
if (infile1)
|
|
||||||
{
|
|
||||||
nread_elements = MAX_INPUT_SAMPLES_TOTAL * 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nread_elements = 0;
|
|
||||||
}
|
|
||||||
nsamples += (nread_elements / 2);
|
|
||||||
|
|
||||||
for (int index0 = 0; index0 < (nread_elements); index0 += 2)
|
|
||||||
{
|
|
||||||
// channel 1 (queue 1)
|
|
||||||
input_samples_dma[dma_index] = 0;
|
|
||||||
input_samples_dma[dma_index + 1] = 0;
|
|
||||||
// channel 0 (queue 0)
|
|
||||||
input_samples_dma[dma_index + 2] = input_samples[index0];
|
|
||||||
input_samples_dma[dma_index + 3] = input_samples[index0 + 1];
|
|
||||||
|
|
||||||
dma_index += 4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (FreqBand == "L2")
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile1.read(reinterpret_cast<char *>(input_samples.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
|
||||||
}
|
|
||||||
if (infile1)
|
|
||||||
{
|
|
||||||
nread_elements = MAX_INPUT_SAMPLES_TOTAL * 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nread_elements = 0;
|
|
||||||
}
|
|
||||||
nsamples += (nread_elements / 2);
|
|
||||||
|
|
||||||
for (int index0 = 0; index0 < (nread_elements); index0 += 2)
|
|
||||||
{
|
|
||||||
// channel 1 (queue 1)
|
|
||||||
input_samples_dma[dma_index] = input_samples[index0];
|
|
||||||
input_samples_dma[dma_index + 1] = input_samples[index0 + 1];
|
|
||||||
// channel 0 (queue 0)
|
|
||||||
input_samples_dma[dma_index + 2] = 0;
|
|
||||||
input_samples_dma[dma_index + 3] = 0;
|
|
||||||
|
|
||||||
dma_index += 4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (FreqBand == "L1L2")
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile1.read(reinterpret_cast<char *>(input_samples.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
|
||||||
}
|
|
||||||
if (infile1)
|
|
||||||
{
|
|
||||||
nread_elements = MAX_INPUT_SAMPLES_TOTAL * 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nread_elements = 0;
|
|
||||||
}
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile2.read(reinterpret_cast<char *>(input_samples2.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
|
||||||
}
|
|
||||||
if (infile2)
|
|
||||||
{
|
|
||||||
nread_elements2 = MAX_INPUT_SAMPLES_TOTAL * 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nread_elements2 = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nread_elements > nread_elements2)
|
|
||||||
{
|
|
||||||
nread_elements = nread_elements2; // take the smallest
|
|
||||||
}
|
|
||||||
|
|
||||||
nsamples += (nread_elements / 2);
|
|
||||||
|
|
||||||
for (int index0 = 0; index0 < (nread_elements); index0 += 2)
|
|
||||||
{
|
|
||||||
input_samples[index0] = input_samples[index0];
|
|
||||||
input_samples[index0 + 1] = input_samples[index0 + 1];
|
|
||||||
|
|
||||||
if (input_samples[index0] > max_value)
|
|
||||||
{
|
|
||||||
max_value = input_samples[index0];
|
|
||||||
}
|
|
||||||
else if (-input_samples[index0] > max_value)
|
|
||||||
{
|
|
||||||
max_value = -input_samples[index0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (input_samples[index0 + 1] > max_value)
|
|
||||||
{
|
|
||||||
max_value = input_samples[index0 + 1];
|
|
||||||
}
|
|
||||||
else if (-input_samples[index0 + 1] > max_value)
|
|
||||||
{
|
|
||||||
max_value = -input_samples[index0 + 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
// channel 1 (queue 1)
|
|
||||||
input_samples_dma[dma_index] = input_samples2[index0];
|
|
||||||
input_samples_dma[dma_index + 1] = input_samples2[index0 + 1];
|
|
||||||
// channel 0 (queue 0)
|
|
||||||
input_samples_dma[dma_index + 2] = input_samples[index0];
|
|
||||||
input_samples_dma[dma_index + 3] = input_samples[index0 + 1];
|
|
||||||
|
|
||||||
dma_index += 4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nread_elements > 0)
|
|
||||||
{
|
|
||||||
num_transferred_bytes = nread_elements * 2;
|
|
||||||
int num_bytes_sent = write(tx_fd, input_samples_dma.data(), nread_elements * 2);
|
|
||||||
if (num_bytes_sent != num_transferred_bytes)
|
|
||||||
{
|
|
||||||
std::cerr << "Error: DMA could not send all the required samples " << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Throttle the DMA
|
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nread_elements != MAX_INPUT_SAMPLES_TOTAL * 2)
|
|
||||||
{
|
|
||||||
file_completed = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile1.close();
|
|
||||||
infile2.close();
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
std::cerr << "Exception closing files " << Filename1 << " and " << Filename2 << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Ad9361FpgaSignalSource::Ad9361FpgaSignalSource(ConfigurationInterface *configuration,
|
Ad9361FpgaSignalSource::Ad9361FpgaSignalSource(ConfigurationInterface *configuration,
|
||||||
const std::string &role, unsigned int in_stream, unsigned int out_stream,
|
const std::string &role, unsigned int in_stream, unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
Concurrent_Queue<pmt::pmt_t> *queue __attribute__((unused))) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_gain_mode("slow_attack");
|
std::string default_gain_mode("slow_attack");
|
||||||
double default_tx_attenuation_db = -10.0;
|
double default_tx_attenuation_db = -10.0;
|
||||||
@ -564,6 +336,235 @@ Ad9361FpgaSignalSource::~Ad9361FpgaSignalSource()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Ad9361FpgaSignalSource::run_DMA_process(const std::string &FreqBand, const std::string &Filename1, const std::string &Filename2, const bool &enable_DMA)
|
||||||
|
{
|
||||||
|
const int MAX_INPUT_SAMPLES_TOTAL = 16384;
|
||||||
|
int max_value = 0;
|
||||||
|
int tx_fd; // DMA descriptor
|
||||||
|
std::ifstream infile1;
|
||||||
|
infile1.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile1.open(Filename1, std::ios::binary);
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
std::cerr << "Exception opening file " << Filename1 << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::ifstream infile2;
|
||||||
|
infile2.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile2.open(Filename2, std::ios::binary);
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
// could not exist
|
||||||
|
}
|
||||||
|
|
||||||
|
// rx signal
|
||||||
|
std::vector<int8_t> input_samples(MAX_INPUT_SAMPLES_TOTAL * 2);
|
||||||
|
std::vector<int8_t> input_samples2(MAX_INPUT_SAMPLES_TOTAL * 2);
|
||||||
|
std::vector<int8_t> input_samples_dma(MAX_INPUT_SAMPLES_TOTAL * 2 * 2);
|
||||||
|
|
||||||
|
int nread_elements;
|
||||||
|
int nread_elements2;
|
||||||
|
int file_completed = 0;
|
||||||
|
int num_transferred_bytes;
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// Open DMA device
|
||||||
|
//**************************************************************************
|
||||||
|
tx_fd = open("/dev/loop_tx", O_WRONLY);
|
||||||
|
if (tx_fd < 0)
|
||||||
|
{
|
||||||
|
std::cout << "Cannot open loop device" << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// Open input file
|
||||||
|
//**************************************************************************
|
||||||
|
int nsamples = 0;
|
||||||
|
|
||||||
|
while ((file_completed == 0) && (enable_DMA == true))
|
||||||
|
{
|
||||||
|
unsigned int dma_index = 0;
|
||||||
|
|
||||||
|
if (FreqBand == "L1")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile1.read(reinterpret_cast<char *>(input_samples.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
||||||
|
}
|
||||||
|
if (infile1)
|
||||||
|
{
|
||||||
|
nread_elements = MAX_INPUT_SAMPLES_TOTAL * 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nread_elements = 0;
|
||||||
|
}
|
||||||
|
nsamples += (nread_elements / 2);
|
||||||
|
|
||||||
|
for (int index0 = 0; index0 < (nread_elements); index0 += 2)
|
||||||
|
{
|
||||||
|
// channel 1 (queue 1)
|
||||||
|
input_samples_dma[dma_index] = 0;
|
||||||
|
input_samples_dma[dma_index + 1] = 0;
|
||||||
|
// channel 0 (queue 0)
|
||||||
|
input_samples_dma[dma_index + 2] = input_samples[index0];
|
||||||
|
input_samples_dma[dma_index + 3] = input_samples[index0 + 1];
|
||||||
|
|
||||||
|
dma_index += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (FreqBand == "L2")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile1.read(reinterpret_cast<char *>(input_samples.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
||||||
|
}
|
||||||
|
if (infile1)
|
||||||
|
{
|
||||||
|
nread_elements = MAX_INPUT_SAMPLES_TOTAL * 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nread_elements = 0;
|
||||||
|
}
|
||||||
|
nsamples += (nread_elements / 2);
|
||||||
|
|
||||||
|
for (int index0 = 0; index0 < (nread_elements); index0 += 2)
|
||||||
|
{
|
||||||
|
// channel 1 (queue 1)
|
||||||
|
input_samples_dma[dma_index] = input_samples[index0];
|
||||||
|
input_samples_dma[dma_index + 1] = input_samples[index0 + 1];
|
||||||
|
// channel 0 (queue 0)
|
||||||
|
input_samples_dma[dma_index + 2] = 0;
|
||||||
|
input_samples_dma[dma_index + 3] = 0;
|
||||||
|
|
||||||
|
dma_index += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (FreqBand == "L1L2")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile1.read(reinterpret_cast<char *>(input_samples.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
||||||
|
}
|
||||||
|
if (infile1)
|
||||||
|
{
|
||||||
|
nread_elements = MAX_INPUT_SAMPLES_TOTAL * 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nread_elements = 0;
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile2.read(reinterpret_cast<char *>(input_samples2.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
||||||
|
}
|
||||||
|
if (infile2)
|
||||||
|
{
|
||||||
|
nread_elements2 = MAX_INPUT_SAMPLES_TOTAL * 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nread_elements2 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nread_elements > nread_elements2)
|
||||||
|
{
|
||||||
|
nread_elements = nread_elements2; // take the smallest
|
||||||
|
}
|
||||||
|
|
||||||
|
nsamples += (nread_elements / 2);
|
||||||
|
|
||||||
|
for (int index0 = 0; index0 < (nread_elements); index0 += 2)
|
||||||
|
{
|
||||||
|
input_samples[index0] = input_samples[index0];
|
||||||
|
input_samples[index0 + 1] = input_samples[index0 + 1];
|
||||||
|
|
||||||
|
if (input_samples[index0] > max_value)
|
||||||
|
{
|
||||||
|
max_value = input_samples[index0];
|
||||||
|
}
|
||||||
|
else if (-input_samples[index0] > max_value)
|
||||||
|
{
|
||||||
|
max_value = -input_samples[index0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input_samples[index0 + 1] > max_value)
|
||||||
|
{
|
||||||
|
max_value = input_samples[index0 + 1];
|
||||||
|
}
|
||||||
|
else if (-input_samples[index0 + 1] > max_value)
|
||||||
|
{
|
||||||
|
max_value = -input_samples[index0 + 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
// channel 1 (queue 1)
|
||||||
|
input_samples_dma[dma_index] = input_samples2[index0];
|
||||||
|
input_samples_dma[dma_index + 1] = input_samples2[index0 + 1];
|
||||||
|
// channel 0 (queue 0)
|
||||||
|
input_samples_dma[dma_index + 2] = input_samples[index0];
|
||||||
|
input_samples_dma[dma_index + 3] = input_samples[index0 + 1];
|
||||||
|
|
||||||
|
dma_index += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nread_elements > 0)
|
||||||
|
{
|
||||||
|
num_transferred_bytes = nread_elements * 2;
|
||||||
|
int num_bytes_sent = write(tx_fd, input_samples_dma.data(), nread_elements * 2);
|
||||||
|
if (num_bytes_sent != num_transferred_bytes)
|
||||||
|
{
|
||||||
|
std::cerr << "Error: DMA could not send all the required samples " << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Throttle the DMA
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nread_elements != MAX_INPUT_SAMPLES_TOTAL * 2)
|
||||||
|
{
|
||||||
|
file_completed = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile1.close();
|
||||||
|
infile2.close();
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
std::cerr << "Exception closing files " << Filename1 << " and " << Filename2 << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Ad9361FpgaSignalSource::connect(gr::top_block_sptr top_block)
|
void Ad9361FpgaSignalSource::connect(gr::top_block_sptr top_block)
|
||||||
{
|
{
|
||||||
if (top_block)
|
if (top_block)
|
||||||
|
@ -37,7 +37,7 @@ class Ad9361FpgaSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
Ad9361FpgaSignalSource(ConfigurationInterface *configuration,
|
Ad9361FpgaSignalSource(ConfigurationInterface *configuration,
|
||||||
const std::string &role, unsigned int in_stream,
|
const std::string &role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t> *queue);
|
||||||
|
|
||||||
~Ad9361FpgaSignalSource();
|
~Ad9361FpgaSignalSource();
|
||||||
|
|
||||||
@ -102,8 +102,6 @@ private:
|
|||||||
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
|
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
|
|
||||||
std::shared_ptr<Fpga_Switch> switch_fpga;
|
std::shared_ptr<Fpga_Switch> switch_fpga;
|
||||||
int32_t switch_position;
|
int32_t switch_position;
|
||||||
|
|
||||||
@ -114,6 +112,7 @@ private:
|
|||||||
|
|
||||||
bool enable_DMA_;
|
bool enable_DMA_;
|
||||||
bool rf_shutdown_;
|
bool rf_shutdown_;
|
||||||
|
void run_DMA_process(const std::string &FreqBand, const std::string &Filename1, const std::string &Filename2, const bool &enable_DMA);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_AD9361_FPGA_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_AD9361_FPGA_SIGNAL_SOURCE_H
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
CustomUDPSignalSource::CustomUDPSignalSource(ConfigurationInterface* configuration,
|
CustomUDPSignalSource::CustomUDPSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
Concurrent_Queue<pmt::pmt_t>* queue __attribute__((unused))) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
// DUMP PARAMETERS
|
// DUMP PARAMETERS
|
||||||
std::string empty = "";
|
std::string empty = "";
|
||||||
|
@ -48,7 +48,7 @@ class CustomUDPSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
CustomUDPSignalSource(ConfigurationInterface* configuration,
|
CustomUDPSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~CustomUDPSignalSource() = default;
|
~CustomUDPSignalSource() = default;
|
||||||
|
|
||||||
@ -98,8 +98,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
Gr_Complex_Ip_Packet_Source::sptr udp_gnss_rx_source_;
|
Gr_Complex_Ip_Packet_Source::sptr udp_gnss_rx_source_;
|
||||||
|
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_CUSTOM_UDP_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_CUSTOM_UDP_SIGNAL_SOURCE_H
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
FileSignalSource::FileSignalSource(ConfigurationInterface* configuration,
|
FileSignalSource::FileSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue)
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
std::string default_filename = "./example_capture.dat";
|
std::string default_filename = "./example_capture.dat";
|
||||||
std::string default_item_type = "short";
|
std::string default_item_type = "short";
|
||||||
@ -211,7 +211,7 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration,
|
|||||||
DLOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
DLOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
||||||
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
||||||
|
|
||||||
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
|
|
||||||
if (dump_)
|
if (dump_)
|
||||||
|
@ -50,7 +50,7 @@ class FileSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
FileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
FileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
||||||
unsigned int in_streams, unsigned int out_streams,
|
unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~FileSignalSource() = default;
|
~FileSignalSource() = default;
|
||||||
|
|
||||||
@ -121,7 +121,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr sink_;
|
gr::blocks::file_sink::sptr sink_;
|
||||||
gr::blocks::throttle::sptr throttle_;
|
gr::blocks::throttle::sptr throttle_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
// Throttle control
|
// Throttle control
|
||||||
bool enable_throttle_control_;
|
bool enable_throttle_control_;
|
||||||
|
@ -31,10 +31,7 @@ FlexibandSignalSource::FlexibandSignalSource(ConfigurationInterface* configurati
|
|||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_stream,
|
unsigned int in_stream,
|
||||||
unsigned int out_stream,
|
unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role),
|
Concurrent_Queue<pmt::pmt_t>* queue __attribute__((unused))) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
in_stream_(in_stream),
|
|
||||||
out_stream_(out_stream),
|
|
||||||
queue_(std::move(queue))
|
|
||||||
{
|
{
|
||||||
std::string default_item_type = "byte";
|
std::string default_item_type = "byte";
|
||||||
item_type_ = configuration->property(role + ".item_type", default_item_type);
|
item_type_ = configuration->property(role + ".item_type", default_item_type);
|
||||||
|
@ -47,7 +47,7 @@ class FlexibandSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
FlexibandSignalSource(ConfigurationInterface* configuration,
|
FlexibandSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~FlexibandSignalSource() = default;
|
~FlexibandSignalSource() = default;
|
||||||
|
|
||||||
@ -94,13 +94,11 @@ private:
|
|||||||
int n_channels_;
|
int n_channels_;
|
||||||
int sel_ch_;
|
int sel_ch_;
|
||||||
|
|
||||||
gr::block_sptr flexiband_source_;
|
boost::shared_ptr<gr::block> flexiband_source_;
|
||||||
|
|
||||||
std::vector<std::shared_ptr<gr::block>> char_to_float;
|
std::vector<boost::shared_ptr<gr::block>> char_to_float;
|
||||||
std::vector<std::shared_ptr<gr::block>> float_to_complex_;
|
std::vector<boost::shared_ptr<gr::block>> float_to_complex_;
|
||||||
std::vector<gr::blocks::null_sink::sptr> null_sinks_;
|
std::vector<gr::blocks::null_sink::sptr> null_sinks_;
|
||||||
|
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_FLEXIBAND_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_FLEXIBAND_SIGNAL_SOURCE_H
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
Fmcomms2SignalSource::Fmcomms2SignalSource(ConfigurationInterface *configuration,
|
Fmcomms2SignalSource::Fmcomms2SignalSource(ConfigurationInterface *configuration,
|
||||||
const std::string &role, unsigned int in_stream, unsigned int out_stream,
|
const std::string &role, unsigned int in_stream, unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
Concurrent_Queue<pmt::pmt_t> *queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_file = "./data/signal_source.dat";
|
std::string default_dump_file = "./data/signal_source.dat";
|
||||||
@ -320,7 +320,7 @@ Fmcomms2SignalSource::Fmcomms2SignalSource(ConfigurationInterface *configuration
|
|||||||
if (samples_ != 0)
|
if (samples_ != 0)
|
||||||
{
|
{
|
||||||
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
||||||
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ class Fmcomms2SignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
Fmcomms2SignalSource(ConfigurationInterface* configuration,
|
Fmcomms2SignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~Fmcomms2SignalSource();
|
~Fmcomms2SignalSource();
|
||||||
|
|
||||||
@ -127,7 +127,6 @@ private:
|
|||||||
boost::shared_ptr<gr::block> valve_;
|
boost::shared_ptr<gr::block> valve_;
|
||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_FMCOMMS2_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_FMCOMMS2_SIGNAL_SOURCE_H
|
||||||
|
@ -29,24 +29,17 @@
|
|||||||
|
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
GenSignalSource::GenSignalSource(GNSSBlockInterface *signal_generator, GNSSBlockInterface *filter,
|
GenSignalSource::GenSignalSource(std::shared_ptr<GNSSBlockInterface> signal_generator,
|
||||||
std::string role, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : signal_generator_(signal_generator),
|
std::shared_ptr<GNSSBlockInterface> filter,
|
||||||
filter_(filter),
|
std::string role,
|
||||||
role_(std::move(role)),
|
Concurrent_Queue<pmt::pmt_t> *queue __attribute__((unused))) : signal_generator_(std::move(signal_generator)),
|
||||||
queue_(std::move(queue))
|
filter_(std::move(filter)),
|
||||||
|
role_(std::move(role))
|
||||||
{
|
{
|
||||||
connected_ = false;
|
connected_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Destructor
|
|
||||||
GenSignalSource::~GenSignalSource()
|
|
||||||
{
|
|
||||||
delete signal_generator_;
|
|
||||||
delete filter_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void GenSignalSource::connect(gr::top_block_sptr top_block)
|
void GenSignalSource::connect(gr::top_block_sptr top_block)
|
||||||
{
|
{
|
||||||
if (connected_)
|
if (connected_)
|
||||||
|
@ -37,11 +37,11 @@ class GenSignalSource : public GNSSBlockInterface
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//! Constructor
|
//! Constructor
|
||||||
GenSignalSource(GNSSBlockInterface *signal_generator, GNSSBlockInterface *filter,
|
GenSignalSource(std::shared_ptr<GNSSBlockInterface> signal_generator, std::shared_ptr<GNSSBlockInterface> filter,
|
||||||
std::string role, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
std::string role, Concurrent_Queue<pmt::pmt_t> *queue);
|
||||||
|
|
||||||
//! Virtual destructor
|
//! Virtual destructor
|
||||||
virtual ~GenSignalSource();
|
virtual ~GenSignalSource() = default;
|
||||||
|
|
||||||
void connect(gr::top_block_sptr top_block) override;
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
void disconnect(gr::top_block_sptr top_block) override;
|
void disconnect(gr::top_block_sptr top_block) override;
|
||||||
@ -52,15 +52,14 @@ public:
|
|||||||
//! Returns "Signal Source"
|
//! Returns "Signal Source"
|
||||||
inline std::string implementation() override { return "Signal Source"; }
|
inline std::string implementation() override { return "Signal Source"; }
|
||||||
inline size_t item_size() override { return 0; }
|
inline size_t item_size() override { return 0; }
|
||||||
inline GNSSBlockInterface *signal_generator() const { return signal_generator_; }
|
inline std::shared_ptr<GNSSBlockInterface> signal_generator() const { return signal_generator_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GNSSBlockInterface *signal_generator_;
|
std::shared_ptr<GNSSBlockInterface> signal_generator_;
|
||||||
GNSSBlockInterface *filter_;
|
std::shared_ptr<GNSSBlockInterface> filter_;
|
||||||
std::string role_;
|
std::string role_;
|
||||||
std::string implementation_;
|
std::string implementation_;
|
||||||
bool connected_;
|
bool connected_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_GEN_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_GEN_SIGNAL_SOURCE_H
|
||||||
|
@ -25,7 +25,10 @@
|
|||||||
|
|
||||||
|
|
||||||
Gn3sSignalSource::Gn3sSignalSource(ConfigurationInterface* configuration,
|
Gn3sSignalSource::Gn3sSignalSource(ConfigurationInterface* configuration,
|
||||||
std::string role, unsigned int in_stream, unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue)
|
std::string role,
|
||||||
|
unsigned int in_stream,
|
||||||
|
unsigned int out_stream,
|
||||||
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_item_type = "short";
|
std::string default_item_type = "short";
|
||||||
std::string default_dump_file = "./data/gn3s_source.dat";
|
std::string default_dump_file = "./data/gn3s_source.dat";
|
||||||
|
@ -40,7 +40,7 @@ class Gn3sSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
Gn3sSignalSource(ConfigurationInterface* configuration,
|
Gn3sSignalSource(ConfigurationInterface* configuration,
|
||||||
std::string role, unsigned int in_stream,
|
std::string role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~Gn3sSignalSource() = default;
|
~Gn3sSignalSource() = default;
|
||||||
|
|
||||||
@ -78,7 +78,6 @@ private:
|
|||||||
std::string dump_filename_;
|
std::string dump_filename_;
|
||||||
gr::block_sptr gn3s_source_;
|
gr::block_sptr gn3s_source_;
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_GN3S_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_GN3S_SIGNAL_SOURCE_H
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
|
|
||||||
LabsatSignalSource::LabsatSignalSource(ConfigurationInterface* configuration,
|
LabsatSignalSource::LabsatSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream, unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
const std::string& role, unsigned int in_stream, unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_file = "./labsat_output.dat";
|
std::string default_dump_file = "./labsat_output.dat";
|
||||||
@ -42,7 +42,7 @@ LabsatSignalSource::LabsatSignalSource(ConfigurationInterface* configuration,
|
|||||||
if (item_type_ == "gr_complex")
|
if (item_type_ == "gr_complex")
|
||||||
{
|
{
|
||||||
item_size_ = sizeof(gr_complex);
|
item_size_ = sizeof(gr_complex);
|
||||||
labsat23_source_ = labsat23_make_source_sptr(filename_.c_str(), channel_selector, queue_);
|
labsat23_source_ = labsat23_make_source_sptr(filename_.c_str(), channel_selector, queue);
|
||||||
DLOG(INFO) << "Item size " << item_size_;
|
DLOG(INFO) << "Item size " << item_size_;
|
||||||
DLOG(INFO) << "labsat23_source_(" << labsat23_source_->unique_id() << ")";
|
DLOG(INFO) << "labsat23_source_(" << labsat23_source_->unique_id() << ")";
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ class LabsatSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
LabsatSignalSource(ConfigurationInterface* configuration,
|
LabsatSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~LabsatSignalSource() = default;
|
~LabsatSignalSource() = default;
|
||||||
|
|
||||||
@ -77,7 +77,6 @@ private:
|
|||||||
std::string dump_filename_;
|
std::string dump_filename_;
|
||||||
gr::block_sptr labsat23_source_;
|
gr::block_sptr labsat23_source_;
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_LABSAT_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_LABSAT_SIGNAL_SOURCE_H
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
MultichannelFileSignalSource::MultichannelFileSignalSource(ConfigurationInterface* configuration,
|
MultichannelFileSignalSource::MultichannelFileSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue)
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
std::string default_filename = "./example_capture.dat";
|
std::string default_filename = "./example_capture.dat";
|
||||||
std::string default_item_type = "short";
|
std::string default_item_type = "short";
|
||||||
@ -205,7 +205,7 @@ MultichannelFileSignalSource::MultichannelFileSignalSource(ConfigurationInterfac
|
|||||||
DLOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
DLOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
||||||
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
||||||
|
|
||||||
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
|
|
||||||
if (enable_throttle_control_)
|
if (enable_throttle_control_)
|
||||||
|
@ -51,7 +51,7 @@ class MultichannelFileSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
MultichannelFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
MultichannelFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
||||||
unsigned int in_streams, unsigned int out_streams,
|
unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~MultichannelFileSignalSource() = default;
|
~MultichannelFileSignalSource() = default;
|
||||||
|
|
||||||
@ -121,7 +121,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr sink_;
|
gr::blocks::file_sink::sptr sink_;
|
||||||
std::vector<gr::blocks::throttle::sptr> throttle_vec_;
|
std::vector<gr::blocks::throttle::sptr> throttle_vec_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
// Throttle control
|
// Throttle control
|
||||||
bool enable_throttle_control_;
|
bool enable_throttle_control_;
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
NsrFileSignalSource::NsrFileSignalSource(ConfigurationInterface* configuration,
|
NsrFileSignalSource::NsrFileSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue)
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
std::string default_filename = "../data/my_capture.dat";
|
std::string default_filename = "../data/my_capture.dat";
|
||||||
std::string default_item_type = "byte";
|
std::string default_item_type = "byte";
|
||||||
@ -137,7 +137,7 @@ NsrFileSignalSource::NsrFileSignalSource(ConfigurationInterface* configuration,
|
|||||||
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
||||||
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
||||||
|
|
||||||
valve_ = gnss_sdr_make_valve(sizeof(float), samples_, queue_);
|
valve_ = gnss_sdr_make_valve(sizeof(float), samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
|
|
||||||
if (dump_)
|
if (dump_)
|
||||||
|
@ -50,7 +50,7 @@ class NsrFileSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
NsrFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
NsrFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
||||||
unsigned int in_streams, unsigned int out_streams,
|
unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~NsrFileSignalSource() = default;
|
~NsrFileSignalSource() = default;
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
@ -121,7 +121,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr sink_;
|
gr::blocks::file_sink::sptr sink_;
|
||||||
gr::blocks::throttle::sptr throttle_;
|
gr::blocks::throttle::sptr throttle_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
// Throttle control
|
// Throttle control
|
||||||
bool enable_throttle_control_;
|
bool enable_throttle_control_;
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
OsmosdrSignalSource::OsmosdrSignalSource(ConfigurationInterface* configuration,
|
OsmosdrSignalSource::OsmosdrSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
// DUMP PARAMETERS
|
// DUMP PARAMETERS
|
||||||
std::string empty = "";
|
std::string empty = "";
|
||||||
@ -123,7 +123,7 @@ OsmosdrSignalSource::OsmosdrSignalSource(ConfigurationInterface* configuration,
|
|||||||
if (samples_ != 0)
|
if (samples_ != 0)
|
||||||
{
|
{
|
||||||
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
||||||
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ class OsmosdrSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
OsmosdrSignalSource(ConfigurationInterface* configuration,
|
OsmosdrSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~OsmosdrSignalSource() = default;
|
~OsmosdrSignalSource() = default;
|
||||||
|
|
||||||
@ -108,7 +108,6 @@ private:
|
|||||||
boost::shared_ptr<gr::block> valve_;
|
boost::shared_ptr<gr::block> valve_;
|
||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_OSMOSDR_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_OSMOSDR_SIGNAL_SOURCE_H
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
PlutosdrSignalSource::PlutosdrSignalSource(ConfigurationInterface* configuration,
|
PlutosdrSignalSource::PlutosdrSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_file = "./data/signal_source.dat";
|
std::string default_dump_file = "./data/signal_source.dat";
|
||||||
@ -135,7 +135,7 @@ PlutosdrSignalSource::PlutosdrSignalSource(ConfigurationInterface* configuration
|
|||||||
if (samples_ != 0)
|
if (samples_ != 0)
|
||||||
{
|
{
|
||||||
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
||||||
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ class PlutosdrSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
PlutosdrSignalSource(ConfigurationInterface* configuration,
|
PlutosdrSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~PlutosdrSignalSource() = default;
|
~PlutosdrSignalSource() = default;
|
||||||
|
|
||||||
@ -112,7 +112,6 @@ private:
|
|||||||
boost::shared_ptr<gr::block> valve_;
|
boost::shared_ptr<gr::block> valve_;
|
||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_PLUTOSDR_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_PLUTOSDR_SIGNAL_SOURCE_H
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
|
|
||||||
RawArraySignalSource::RawArraySignalSource(ConfigurationInterface* configuration,
|
RawArraySignalSource::RawArraySignalSource(ConfigurationInterface* configuration,
|
||||||
std::string role, unsigned int in_stream, unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue)
|
std::string role, unsigned int in_stream, unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_file = "./data/raw_array_source.dat";
|
std::string default_dump_file = "./data/raw_array_source.dat";
|
||||||
|
@ -39,7 +39,7 @@ class RawArraySignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
RawArraySignalSource(ConfigurationInterface* configuration,
|
RawArraySignalSource(ConfigurationInterface* configuration,
|
||||||
std::string role, unsigned int in_stream,
|
std::string role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~RawArraySignalSource() = default;
|
~RawArraySignalSource() = default;
|
||||||
|
|
||||||
@ -78,7 +78,6 @@ private:
|
|||||||
std::string eth_device_;
|
std::string eth_device_;
|
||||||
gr::block_sptr raw_array_source_;
|
gr::block_sptr raw_array_source_;
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_RAW_ARRAY_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_RAW_ARRAY_SIGNAL_SOURCE_H
|
||||||
|
@ -34,10 +34,9 @@ RtlTcpSignalSource::RtlTcpSignalSource(ConfigurationInterface* configuration,
|
|||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_stream,
|
unsigned int in_stream,
|
||||||
unsigned int out_stream,
|
unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role),
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role),
|
||||||
in_stream_(in_stream),
|
in_stream_(in_stream),
|
||||||
out_stream_(out_stream),
|
out_stream_(out_stream)
|
||||||
queue_(std::move(queue))
|
|
||||||
{
|
{
|
||||||
// DUMP PARAMETERS
|
// DUMP PARAMETERS
|
||||||
std::string empty = "";
|
std::string empty = "";
|
||||||
@ -111,7 +110,7 @@ RtlTcpSignalSource::RtlTcpSignalSource(ConfigurationInterface* configuration,
|
|||||||
if (samples_ != 0ULL)
|
if (samples_ != 0ULL)
|
||||||
{
|
{
|
||||||
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
||||||
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ public:
|
|||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_stream,
|
unsigned int in_stream,
|
||||||
unsigned int out_stream,
|
unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~RtlTcpSignalSource() = default;
|
~RtlTcpSignalSource() = default;
|
||||||
|
|
||||||
@ -111,7 +111,6 @@ private:
|
|||||||
boost::shared_ptr<gr::block> valve_;
|
boost::shared_ptr<gr::block> valve_;
|
||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_RTL_TCP_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_RTL_TCP_SIGNAL_SOURCE_H
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
SpirFileSignalSource::SpirFileSignalSource(ConfigurationInterface* configuration,
|
SpirFileSignalSource::SpirFileSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue)
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
std::string default_filename = "../data/my_capture.dat";
|
std::string default_filename = "../data/my_capture.dat";
|
||||||
std::string default_item_type = "int";
|
std::string default_item_type = "int";
|
||||||
@ -136,7 +136,7 @@ SpirFileSignalSource::SpirFileSignalSource(ConfigurationInterface* configuration
|
|||||||
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
||||||
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
||||||
|
|
||||||
valve_ = gnss_sdr_make_valve(sizeof(float), samples_, queue_);
|
valve_ = gnss_sdr_make_valve(sizeof(float), samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
|
|
||||||
if (dump_)
|
if (dump_)
|
||||||
|
@ -48,7 +48,7 @@ class SpirFileSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
SpirFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
SpirFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
||||||
unsigned int in_streams, unsigned int out_streams,
|
unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~SpirFileSignalSource() = default;
|
~SpirFileSignalSource() = default;
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
@ -119,7 +119,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr sink_;
|
gr::blocks::file_sink::sptr sink_;
|
||||||
gr::blocks::throttle::sptr throttle_;
|
gr::blocks::throttle::sptr throttle_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
// Throttle control
|
// Throttle control
|
||||||
bool enable_throttle_control_;
|
bool enable_throttle_control_;
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
|
|
||||||
SpirGSS6450FileSignalSource::SpirGSS6450FileSignalSource(ConfigurationInterface* configuration,
|
SpirGSS6450FileSignalSource::SpirGSS6450FileSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, uint32_t in_streams, uint32_t out_streams, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue))
|
const std::string& role, uint32_t in_streams, uint32_t out_streams, Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
std::string default_filename = "../data/my_capture.dat";
|
std::string default_filename = "../data/my_capture.dat";
|
||||||
std::string default_dump_filename = "../data/my_capture_dump.dat";
|
std::string default_dump_filename = "../data/my_capture_dump.dat";
|
||||||
@ -137,7 +137,7 @@ SpirGSS6450FileSignalSource::SpirGSS6450FileSignalSource(ConfigurationInterface*
|
|||||||
|
|
||||||
for (uint32_t i = 0; i < (n_channels_); i++)
|
for (uint32_t i = 0; i < (n_channels_); i++)
|
||||||
{
|
{
|
||||||
valve_vec_.emplace_back(gnss_sdr_make_valve(sizeof(gr_complex), samples_, queue_));
|
valve_vec_.emplace_back(gnss_sdr_make_valve(sizeof(gr_complex), samples_, queue));
|
||||||
if (dump_)
|
if (dump_)
|
||||||
{
|
{
|
||||||
std::string tmp_str = dump_filename_ + "_ch" + std::to_string(i);
|
std::string tmp_str = dump_filename_ + "_ch" + std::to_string(i);
|
||||||
|
@ -53,7 +53,7 @@ class SpirGSS6450FileSignalSource : public GNSSBlockInterface
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SpirGSS6450FileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
SpirGSS6450FileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
||||||
uint32_t in_streams, uint32_t out_streams, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
uint32_t in_streams, uint32_t out_streams, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~SpirGSS6450FileSignalSource() = default;
|
~SpirGSS6450FileSignalSource() = default;
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
@ -130,7 +130,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
std::vector<gr::blocks::file_sink::sptr> sink_vec_;
|
std::vector<gr::blocks::file_sink::sptr> sink_vec_;
|
||||||
std::vector<gr::blocks::throttle::sptr> throttle_vec_;
|
std::vector<gr::blocks::throttle::sptr> throttle_vec_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -34,10 +34,9 @@ TwoBitCpxFileSignalSource::TwoBitCpxFileSignalSource(ConfigurationInterface* con
|
|||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams,
|
unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue) : role_(role),
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role),
|
||||||
in_streams_(in_streams),
|
in_streams_(in_streams),
|
||||||
out_streams_(out_streams),
|
out_streams_(out_streams)
|
||||||
queue_(queue)
|
|
||||||
{
|
{
|
||||||
std::string default_filename = "../data/my_capture.dat";
|
std::string default_filename = "../data/my_capture.dat";
|
||||||
std::string default_item_type = "byte";
|
std::string default_item_type = "byte";
|
||||||
@ -142,7 +141,7 @@ TwoBitCpxFileSignalSource::TwoBitCpxFileSignalSource(ConfigurationInterface* con
|
|||||||
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
||||||
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
||||||
|
|
||||||
valve_ = gnss_sdr_make_valve(sizeof(gr_complex), samples_, queue_);
|
valve_ = gnss_sdr_make_valve(sizeof(gr_complex), samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
|
|
||||||
if (dump_)
|
if (dump_)
|
||||||
|
@ -54,7 +54,7 @@ public:
|
|||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams,
|
unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~TwoBitCpxFileSignalSource() = default;
|
~TwoBitCpxFileSignalSource() = default;
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
@ -126,7 +126,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr sink_;
|
gr::blocks::file_sink::sptr sink_;
|
||||||
gr::blocks::throttle::sptr throttle_;
|
gr::blocks::throttle::sptr throttle_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
// Throttle control
|
// Throttle control
|
||||||
bool enable_throttle_control_;
|
bool enable_throttle_control_;
|
||||||
|
@ -36,10 +36,9 @@ TwoBitPackedFileSignalSource::TwoBitPackedFileSignalSource(ConfigurationInterfac
|
|||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams,
|
unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue) : role_(role),
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role),
|
||||||
in_streams_(in_streams),
|
in_streams_(in_streams),
|
||||||
out_streams_(out_streams),
|
out_streams_(out_streams)
|
||||||
queue_(queue)
|
|
||||||
{
|
{
|
||||||
std::string default_filename = "../data/my_capture.dat";
|
std::string default_filename = "../data/my_capture.dat";
|
||||||
std::string default_item_type = "byte";
|
std::string default_item_type = "byte";
|
||||||
@ -206,7 +205,7 @@ TwoBitPackedFileSignalSource::TwoBitPackedFileSignalSource(ConfigurationInterfac
|
|||||||
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
||||||
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
||||||
|
|
||||||
valve_ = gnss_sdr_make_valve(output_item_size, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(output_item_size, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
|
|
||||||
if (dump_)
|
if (dump_)
|
||||||
|
@ -53,7 +53,7 @@ class TwoBitPackedFileSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
TwoBitPackedFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
TwoBitPackedFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
||||||
unsigned int in_streams, unsigned int out_streams,
|
unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~TwoBitPackedFileSignalSource() = default;
|
~TwoBitPackedFileSignalSource() = default;
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
@ -145,7 +145,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr sink_;
|
gr::blocks::file_sink::sptr sink_;
|
||||||
gr::blocks::throttle::sptr throttle_;
|
gr::blocks::throttle::sptr throttle_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
bool big_endian_items_;
|
bool big_endian_items_;
|
||||||
bool big_endian_bytes_;
|
bool big_endian_bytes_;
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration,
|
UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
// DUMP PARAMETERS
|
// DUMP PARAMETERS
|
||||||
std::string empty = "";
|
std::string empty = "";
|
||||||
@ -204,7 +204,7 @@ UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration,
|
|||||||
if (samples_.at(i) != 0ULL)
|
if (samples_.at(i) != 0ULL)
|
||||||
{
|
{
|
||||||
LOG(INFO) << "RF_channel " << i << " Send STOP signal after " << samples_.at(i) << " samples";
|
LOG(INFO) << "RF_channel " << i << " Send STOP signal after " << samples_.at(i) << " samples";
|
||||||
valve_.emplace_back(gnss_sdr_make_valve(item_size_, samples_.at(i), queue_));
|
valve_.emplace_back(gnss_sdr_make_valve(item_size_, samples_.at(i), queue));
|
||||||
DLOG(INFO) << "valve(" << valve_.at(i)->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_.at(i)->unique_id() << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ class UhdSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
UhdSignalSource(ConfigurationInterface* configuration,
|
UhdSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~UhdSignalSource() = default;
|
~UhdSignalSource() = default;
|
||||||
|
|
||||||
@ -103,8 +103,6 @@ private:
|
|||||||
std::vector<boost::shared_ptr<gr::block>> valve_;
|
std::vector<boost::shared_ptr<gr::block>> valve_;
|
||||||
#endif
|
#endif
|
||||||
std::vector<gr::blocks::file_sink::sptr> file_sink_;
|
std::vector<gr::blocks::file_sink::sptr> file_sink_;
|
||||||
|
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_UHD_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_UHD_SIGNAL_SOURCE_H
|
||||||
|
@ -43,18 +43,26 @@ set(SIGNAL_SOURCE_GR_BLOCKS_HEADERS
|
|||||||
list(SORT SIGNAL_SOURCE_GR_BLOCKS_HEADERS)
|
list(SORT SIGNAL_SOURCE_GR_BLOCKS_HEADERS)
|
||||||
list(SORT SIGNAL_SOURCE_GR_BLOCKS_SOURCES)
|
list(SORT SIGNAL_SOURCE_GR_BLOCKS_SOURCES)
|
||||||
|
|
||||||
|
if(USE_CMAKE_TARGET_SOURCES)
|
||||||
|
add_library(signal_source_gr_blocks STATIC)
|
||||||
|
target_sources(signal_source_gr_blocks
|
||||||
|
PRIVATE
|
||||||
|
${SIGNAL_SOURCE_GR_BLOCKS_SOURCES}
|
||||||
|
PUBLIC
|
||||||
|
${SIGNAL_SOURCE_GR_BLOCKS_HEADERS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
source_group(Headers FILES ${SIGNAL_SOURCE_GR_BLOCKS_HEADERS})
|
source_group(Headers FILES ${SIGNAL_SOURCE_GR_BLOCKS_HEADERS})
|
||||||
|
|
||||||
add_library(signal_source_gr_blocks
|
add_library(signal_source_gr_blocks
|
||||||
${SIGNAL_SOURCE_GR_BLOCKS_SOURCES}
|
${SIGNAL_SOURCE_GR_BLOCKS_SOURCES}
|
||||||
${SIGNAL_SOURCE_GR_BLOCKS_HEADERS}
|
${SIGNAL_SOURCE_GR_BLOCKS_HEADERS}
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(signal_source_gr_blocks
|
target_link_libraries(signal_source_gr_blocks
|
||||||
PUBLIC
|
PUBLIC
|
||||||
signal_source_libs
|
signal_source_libs
|
||||||
Boost::thread
|
Boost::thread
|
||||||
Gnuradio::runtime
|
|
||||||
PRIVATE
|
PRIVATE
|
||||||
core_libs
|
core_libs
|
||||||
Gflags::gflags
|
Gflags::gflags
|
||||||
@ -96,14 +104,21 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(Boost_VERSION_STRING VERSION_GREATER 1.65.99)
|
if(USE_BOOST_ASIO_IO_CONTEXT)
|
||||||
target_compile_definitions(signal_source_gr_blocks
|
target_compile_definitions(signal_source_gr_blocks
|
||||||
PUBLIC
|
PUBLIC
|
||||||
-DBOOST_GREATER_1_65
|
-DUSE_BOOST_ASIO_IO_CONTEXT
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_VERSION VERSION_GREATER 3.1)
|
if(USE_BOOST_BIND_PLACEHOLDERS)
|
||||||
|
target_compile_definitions(signal_source_gr_blocks
|
||||||
|
PRIVATE
|
||||||
|
-DUSE_BOOST_BIND_PLACEHOLDERS=1
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(USE_GENERIC_LAMBDAS)
|
||||||
set(has_generic_lambdas HAS_GENERIC_LAMBDA=1)
|
set(has_generic_lambdas HAS_GENERIC_LAMBDA=1)
|
||||||
set(no_has_generic_lambdas HAS_GENERIC_LAMBDA=0)
|
set(no_has_generic_lambdas HAS_GENERIC_LAMBDA=0)
|
||||||
target_compile_definitions(signal_source_gr_blocks
|
target_compile_definitions(signal_source_gr_blocks
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
#if HAS_GENERIC_LAMBDA
|
#if HAS_GENERIC_LAMBDA
|
||||||
#else
|
#else
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind/bind.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const int FIFO_SIZE = 1472000;
|
const int FIFO_SIZE = 1472000;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user