mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-04-01 00:07:01 +00:00
Merge pull request #254 from mmajoral/fpga
FPGA GPS L1 + Galileo E1 + GPS L5 + Galileo E5
This commit is contained in:
commit
3b30867df0
.clang-format.clang-tidyAUTHORSCMakeLists.txtMANIFEST.mdREADME.md
cmake
Modules
CMakeParseArgumentsCopy.cmakeFindGFLAGS.cmakeFindGFORTRAN.cmakeFindGFlags.cmakeFindGLOG.cmakeFindGNSSSIMULATOR.cmakeFindGNURADIO.cmakeFindGPERFTOOLS.cmakeFindGPSTK.cmakeFindGRDBFCTTC.cmakeFindGRGN3S.cmakeFindGRIIO.cmakeFindGROSMOSDR.cmakeFindGperftools.cmakeFindLIBIIO.cmakeFindLIBOSMOSDR.cmakeFindLOG4CPP.cmakeFindMATIO.cmakeFindOPENBLAS.cmakeFindOPENCL.cmakeFindORC.cmakeFindOpenCL.cmakeFindPCAP.cmakeFindPUGIXML.cmakeFindTELEORBIT.cmakeFindUHD.cmakeFindVOLK.cmakeFindVOLKGNSSSDR.cmakeGnsssdrBuildTypes.cmakeSetupPython.cmakeTestForARM.cmakeTestForSSE.cmake
Toolchains
cmake_uninstall.cmake.inconf
front-end-cal.confgnss-sdr-kalman-bayes.confgnss-sdr.confgnss-sdr_BDS_B1I_byte.confgnss-sdr_GLONASS_L1_ibyte.confgnss-sdr_GPS_L1_2ch_udp.confgnss-sdr_GPS_L1_CA_ibyte.confgnss-sdr_GPS_L1_LimeSDR.confgnss-sdr_GPS_L1_USRP_X300_realtime.confgnss-sdr_GPS_L1_USRP_realtime.confgnss-sdr_GPS_L1_fmcomms2_realtime.confgnss-sdr_GPS_L1_nsr.confgnss-sdr_GPS_L1_nsr_kf.confgnss-sdr_GPS_L1_nsr_twobit_packed.confgnss-sdr_GPS_L1_plutosdr_realtime.confgnss-sdr_GPS_L1_pulse_blanking_gr_complex.confgnss-sdr_GPS_L1_rtl_tcp_realtime.confgnss-sdr_GPS_L1_rtlsdr_realtime.confgnss-sdr_GPS_L1_two_bits_cpx.confgnss-sdr_GPS_L2C_USRP1_realtime.confgnss-sdr_GPS_L2C_USRP_X300_realtime.confgnss-sdr_Galileo_E5a.confgnss-sdr_Galileo_E5a_IFEN_CTTC.confgnss-sdr_Hybrid_byte.confgnss-sdr_Hybrid_ishort.confgnss-sdr_Hybrid_nsr.confgnss-sdr_galileo_E1_extended_correlator_byte.confgnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.confgnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.confgnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.confgnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.confgnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.confgnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.confgnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.confgnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.confgnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.confgnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.confgnss-sdr_multichannel_all_in_one_Flexiband_bin_file_III_1b.conf
docs
src
@ -47,13 +47,20 @@ DerivePointerAlignment: true
|
||||
DisableFormat: false
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
|
||||
IncludeBlocks: Merge
|
||||
IncludeCategories:
|
||||
- Regex: '^<.*\.h>'
|
||||
- Regex: '^.*.h"'
|
||||
Priority: 1
|
||||
- Regex: '^<.*'
|
||||
- Regex: '^.*(boost|gflags|glog|gnsssdr|gpstk|gtest|gnuradio|pmt|uhd|volk)/'
|
||||
Priority: 2
|
||||
- Regex: '^.*(armadillo|matio|pugixml)'
|
||||
Priority: 2
|
||||
- Regex: '.*'
|
||||
Priority: 3
|
||||
- Regex: '^<.*\.h>'
|
||||
Priority: 4
|
||||
- Regex: '^<.*'
|
||||
Priority: 5
|
||||
IndentCaseLabels: false
|
||||
IndentWidth: 4
|
||||
IndentWrappedFunctionNames: false
|
||||
@ -73,7 +80,7 @@ PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 200
|
||||
PointerAlignment: Left
|
||||
ReflowComments: true
|
||||
SortIncludes: false
|
||||
SortIncludes: true
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
|
130
.clang-tidy
Normal file
130
.clang-tidy
Normal file
@ -0,0 +1,130 @@
|
||||
---
|
||||
Checks: '-*,
|
||||
boost-use-to-string,
|
||||
cert-dcl21-cpp,
|
||||
cert-dcl58-cpp,
|
||||
cert-env33-c,
|
||||
cert-err52-cpp,
|
||||
cert-err60-cpp,
|
||||
cert-flp30-c,
|
||||
clang-analyzer-cplusplus*,
|
||||
cppcoreguidelines-pro-type-static-cast-downcast,
|
||||
cppcoreguidelines-slicing,
|
||||
google-build-namespaces,
|
||||
google-runtime-int,
|
||||
misc-misplaced-const,
|
||||
misc-new-delete-overloads,
|
||||
misc-non-copyable-objects,
|
||||
misc-static-assert,
|
||||
misc-throw-by-value-catch-by-reference,
|
||||
misc-uniqueptr-reset-release,
|
||||
misc-unused-using-decls,
|
||||
modernize-loop-convert,
|
||||
modernize-pass-by-value,
|
||||
modernize-raw-string-literal,
|
||||
modernize-use-auto,
|
||||
modernize-use-bool-literals,
|
||||
modernize-use-equals-default,
|
||||
modernize-use-equals-delete,
|
||||
modernize-use-noexcept,
|
||||
modernize-use-nullptr,
|
||||
performance-faster-string-find,
|
||||
performance-inefficient-algorithm,
|
||||
performance-move-const-arg,
|
||||
performance-type-promotion-in-math-fn,
|
||||
performance-unnecessary-copy-initialization,
|
||||
performance-unnecessary-value-param,
|
||||
readability-container-size-empty,
|
||||
readability-identifier-naming,
|
||||
readability-inconsistent-declaration-parameter-name,
|
||||
readability-named-parameter,
|
||||
readability-non-const-parameter,
|
||||
readability-string-compare'
|
||||
WarningsAsErrors: ''
|
||||
HeaderFilterRegex: ''
|
||||
AnalyzeTemporaryDtors: false
|
||||
FormatStyle: 'file'
|
||||
CheckOptions:
|
||||
- key: google-build-namespaces.HeaderFileExtensions
|
||||
value: ',h'
|
||||
- key: google-readability-braces-around-statements.ShortStatementLines
|
||||
value: '1'
|
||||
- key: google-readability-function-size.StatementThreshold
|
||||
value: '800'
|
||||
- key: google-readability-namespace-comments.ShortNamespaceLines
|
||||
value: '10'
|
||||
- key: google-readability-namespace-comments.SpacesBeforeComments
|
||||
value: '2'
|
||||
- key: google-runtime-int.SignedTypePrefix
|
||||
value: int
|
||||
- key: google-runtime-int.TypeSuffix
|
||||
value: _t
|
||||
- key: google-runtime-int.UnsignedTypePrefix
|
||||
value: uint
|
||||
- key: misc-throw-by-value-catch-by-reference.CheckThrowTemporaries
|
||||
value: '1'
|
||||
- key: modernize-loop-convert.MaxCopySize
|
||||
value: '16'
|
||||
- key: modernize-loop-convert.MinConfidence
|
||||
value: reasonable
|
||||
- key: modernize-loop-convert.NamingStyle
|
||||
value: CamelCase
|
||||
- key: modernize-pass-by-value.IncludeStyle
|
||||
value: llvm
|
||||
- key: modernize-pass-by-value.ValuesOnly
|
||||
value: '0'
|
||||
- key: modernize-raw-string-literal.ReplaceShorterLiterals
|
||||
value: '0'
|
||||
- key: modernize-replace-auto-ptr.IncludeStyle
|
||||
value: llvm
|
||||
- key: modernize-use-auto.MinTypeNameLength
|
||||
value: '5'
|
||||
- key: modernize-use-auto.RemoveStars
|
||||
value: '0'
|
||||
- key: modernize-use-equals-default.IgnoreMacros
|
||||
value: '1'
|
||||
- key: modernize-use-noexcept.ReplacementString
|
||||
value: ''
|
||||
- key: modernize-use-noexcept.UseNoexceptFalse
|
||||
value: '1'
|
||||
- key: modernize-use-nullptr.NullMacros
|
||||
value: 'NULL'
|
||||
- key: performance-faster-string-find.StringLikeClasses
|
||||
value: 'std::basic_string'
|
||||
- key: performance-move-const-arg.CheckTriviallyCopyableMove
|
||||
value: '1'
|
||||
- key: performance-type-promotion-in-math-fn.IncludeStyle
|
||||
value: llvm
|
||||
- key: performance-unnecessary-value-param.IncludeStyle
|
||||
value: llvm
|
||||
- key: readability-identifier-naming.AbstractClassCase
|
||||
value: CamelCase
|
||||
- key: readability-identifier-naming.AbstractClassPrefix
|
||||
value: ''
|
||||
- key: readability-identifier-naming.AbstractClassSuffix
|
||||
value: ''
|
||||
- key: readability-identifier-naming.ClassCase
|
||||
value: Camel_Snake_Case
|
||||
- key: readability-identifier-naming.ClassPrefix
|
||||
value: ''
|
||||
- key: readability-identifier-naming.ClassSuffix
|
||||
value: ''
|
||||
- key: readability-identifier-naming.GlobalConstantCase
|
||||
value: UPPER_CASE
|
||||
- key: readability-identifier-naming.GlobalConstantPrefix
|
||||
value: ''
|
||||
- key: readability-identifier-naming.GlobalConstantSuffix
|
||||
value: ''
|
||||
- key: readability-identifier-naming.IgnoreFailedSplit
|
||||
value: '0'
|
||||
- key: readability-identifier-naming.StructCase
|
||||
value: aNy_CasE
|
||||
- key: readability-identifier-naming.StructPrefix
|
||||
value: ''
|
||||
- key: readability-identifier-naming.StructSuffix
|
||||
value: ''
|
||||
- key: readability-inconsistent-declaration-parameter-name.IgnoreMacros
|
||||
value: '1'
|
||||
- key: readability-inconsistent-declaration-parameter-name.Strict
|
||||
value: '0'
|
||||
...
|
114
AUTHORS
114
AUTHORS
@ -1,56 +1,58 @@
|
||||
GNSS-SDR Authorship
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The GNSS-SDR project is hosted and sponsored by the Centre Tecnologic de
|
||||
Telecomunicacions de Catalunya (CTTC), a non-profit research foundation located
|
||||
in Castelldefels (40.396764 N, 3.713379 E), 20 km south of Barcelona, Spain.
|
||||
GNSS-SDR is the by-product of GNSS research conducted at the Communications
|
||||
Systems Division of CTTC, and it is the combined effort of students,
|
||||
software engineers and researchers from different institutions around the World.
|
||||
|
||||
Contact Information
|
||||
------------------------------------------------------------------------------
|
||||
GNSS-SDR Homepage
|
||||
----------------------------
|
||||
https://gnss-sdr.org
|
||||
|
||||
|
||||
CTTC Homepage
|
||||
----------------------------
|
||||
http://www.cttc.cat
|
||||
|
||||
|
||||
Mailing Lists
|
||||
----------------------------
|
||||
gnss-sdr-developers@lists.sourceforge.net
|
||||
https://lists.sourceforge.net/lists/listinfo/gnss-sdr-developers
|
||||
|
||||
|
||||
Email
|
||||
----------------------------
|
||||
Inquiries beyond the mailing list can be sent to carles.fernandez@cttc.cat
|
||||
|
||||
|
||||
List of authors
|
||||
------------------------------------------------------------------------------
|
||||
Carles Fernandez-Prades carles.fernandez@cttc.cat Project manager
|
||||
Javier Arribas javier.arribas@cttc.es Developer
|
||||
Luis Esteve Elfau luis@epsilon-formacion.com Developer
|
||||
Antonio Ramos antonio.ramos@cttc.es Developer
|
||||
Marc Majoral marc.majoral@cttc.cat Developer
|
||||
Pau Closas pau.closas@northeastern.edu Consultant
|
||||
Jordi Vila-Valls jordi.vila@cttc.cat Consultant
|
||||
Carlos Aviles carlos.avilesr@googlemail.com Contributor
|
||||
David Pubill david.pubill@cttc.cat Contributor
|
||||
Mara Branzanti mara.branzanti@gmail.com Contributor
|
||||
Marc Molina marc.molina.pena@gmail.com Contributor
|
||||
Daniel Fehr daniel.co@bluewin.ch Contributor
|
||||
Marc Sales marcsales92@gmail.com Contributor
|
||||
Damian Miralles dmiralles2009@gmail.com Contributor
|
||||
Andres Cecilia Luque a.cecilia.luque@gmail.com Contributor
|
||||
Leonardo Tonetto tonetto.dev@gmail.com Contributor
|
||||
Anthony Arnold anthony.arnold@uqconnect.edu.au Contributor
|
||||
Fran Fabra fabra@ice.csic.es Contributor
|
||||
Cillian O'Driscoll cillian.odriscoll@gmail.com Contributor
|
||||
Gabriel Araujo gabriel.araujo.5000@gmail.com Contributor
|
||||
Carlos Paniego carpanie@hotmail.com Artwork
|
||||
GNSS-SDR Authorship
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
The GNSS-SDR project is hosted and sponsored by the Centre Tecnològic de
|
||||
Telecomunicacions de Catalunya (CTTC), a non-profit research foundation located
|
||||
in Castelldefels (41.27504 N, 1.987709 E), 20 km south of Barcelona, Spain.
|
||||
GNSS-SDR is the by-product of GNSS research conducted at the Communications
|
||||
Systems Division of CTTC, and it is the combined effort of students,
|
||||
software engineers and researchers from different institutions around the World.
|
||||
|
||||
Contact Information
|
||||
------------------------------------------------------------------------------
|
||||
GNSS-SDR Homepage
|
||||
----------------------------
|
||||
https://gnss-sdr.org
|
||||
|
||||
|
||||
CTTC Homepage
|
||||
----------------------------
|
||||
http://www.cttc.cat
|
||||
|
||||
|
||||
Mailing Lists
|
||||
----------------------------
|
||||
gnss-sdr-developers@lists.sourceforge.net
|
||||
https://lists.sourceforge.net/lists/listinfo/gnss-sdr-developers
|
||||
|
||||
|
||||
Email
|
||||
----------------------------
|
||||
Inquiries beyond the mailing list can be sent to carles.fernandez@cttc.cat
|
||||
|
||||
|
||||
List of authors
|
||||
------------------------------------------------------------------------------
|
||||
Carles Fernández-Prades carles.fernandez@cttc.cat Project manager
|
||||
Javier Arribas javier.arribas@cttc.es Developer
|
||||
Luis Esteve Elfau luis@epsilon-formacion.com Developer
|
||||
Antonio Ramos antonio.ramosdet@gmail.com Developer
|
||||
Marc Majoral marc.majoral@cttc.cat Developer
|
||||
Jordi Vilà-Valls jordi.vila@cttc.cat Consultant
|
||||
Pau Closas pau.closas@northeastern.edu Consultant
|
||||
Álvaro Cebrián Juan acebrianjuan@gmail.com Contributor
|
||||
Andres Cecilia Luque a.cecilia.luque@gmail.com Contributor
|
||||
Anthony Arnold anthony.arnold@uqconnect.edu.au Contributor
|
||||
Carlos Avilés carlos.avilesr@googlemail.com Contributor
|
||||
Cillian O'Driscoll cillian.odriscoll@gmail.com Contributor
|
||||
Damian Miralles dmiralles2009@gmail.com Contributor
|
||||
Daniel Fehr daniel.co@bluewin.ch Contributor
|
||||
David Pubill david.pubill@cttc.cat Contributor
|
||||
Fran Fabra fabra@ice.csic.es Contributor
|
||||
Gabriel Araujo gabriel.araujo.5000@gmail.com Contributor
|
||||
Gerald LaMountain gerald@gece.neu.edu Contributor
|
||||
Leonardo Tonetto tonetto.dev@gmail.com Contributor
|
||||
Mara Branzanti mara.branzanti@gmail.com Contributor
|
||||
Marc Molina marc.molina.pena@gmail.com Contributor
|
||||
Marc Sales marcsales92@gmail.com Contributor
|
||||
Carlos Paniego carpanie@hotmail.com Artwork
|
||||
|
2243
CMakeLists.txt
2243
CMakeLists.txt
File diff suppressed because it is too large
Load Diff
11
MANIFEST.md
11
MANIFEST.md
@ -5,17 +5,24 @@ tags:
|
||||
- gnss
|
||||
- gps
|
||||
- Galileo
|
||||
- Glonass
|
||||
author:
|
||||
- Carles Fernandez-Prades <carles.fernandez@cttc.es>
|
||||
- Javier Arribas <javier.arribas@cttc.es>
|
||||
- et altri (see AUTHORS file for a list of contributors)
|
||||
copyright_owner:
|
||||
- The Authors
|
||||
dependencies: gnuradio (>= 3.7.3), armadillo, gflags, glog, gnutls
|
||||
dependencies:
|
||||
- gnuradio (>= 3.7.3)
|
||||
- armadillo
|
||||
- gflags
|
||||
- glog
|
||||
- gnutls
|
||||
- matio
|
||||
license: GPLv3+
|
||||
repo: https://github.com/gnss-sdr/gnss-sdr
|
||||
website: https://gnss-sdr.org
|
||||
icon: https://a.fsdn.com/con/app/proj/gnss-sdr/screenshots/logo400x400.jpg
|
||||
icon: https://gnss-sdr.org/assets/images/logo400x400.jpg
|
||||
---
|
||||
Global Navigation Satellite Systems receiver defined by software. It performs all the signal
|
||||
processing from raw signal samples up to the computation of the Position-Velocity-Time solution,
|
||||
|
147
README.md
147
README.md
@ -2,24 +2,26 @@
|
||||
|
||||
[](https://www.gnu.org/licenses/gpl-3.0)
|
||||
|
||||
|
||||
**Welcome to GNSS-SDR!**
|
||||
|
||||
This program is a software-defined receiver which is able to process (that is, to perform detection, synchronization, demodulation and decoding of the navigation message, computation of observables and, finally, computation of position fixes) the following Global Navigation Satellite System's signals:
|
||||
|
||||
In the L1 band (centered at 1575.42 MHz):
|
||||
- 🛰 GPS L1 C/A :white_check_mark:
|
||||
- 🛰 Galileo E1b/c :white_check_mark:
|
||||
- 🛰 GLONASS L1 C/A :white_check_mark:
|
||||
In the L1 band:
|
||||
- 🛰 BeiDou B1I (centered at 1561.098 MHz) :white_check_mark:
|
||||
- 🛰 GPS L1 C/A (centered at 1575.42 MHz) :white_check_mark:
|
||||
- 🛰 Galileo E1b/c (centered at 1575.42 MHz) :white_check_mark:
|
||||
- 🛰 GLONASS L1 C/A (centered at 1602.00 MHz) :white_check_mark:
|
||||
|
||||
In the L2 band (centered at 1227.60 MHz):
|
||||
- 🛰 GPS L2C :white_check_mark:
|
||||
- 🛰 GLONASS L2 C/A :white_check_mark:
|
||||
In the L2 band:
|
||||
- 🛰 GPS L2C (centered at 1227.60 MHz) :white_check_mark:
|
||||
- 🛰 GLONASS L2 C/A (centered at 1246.00 MHz) :white_check_mark:
|
||||
|
||||
In the L5 band (centered at 1176.45 MHz):
|
||||
- 🛰 GPS L5 :white_check_mark:
|
||||
- 🛰 Galileo E5a :white_check_mark:
|
||||
In the L5 band:
|
||||
- 🛰 GPS L5 (centered at 1176.45 MHz) :white_check_mark:
|
||||
- 🛰 Galileo E5a (centered at 1176.45 MHz) :white_check_mark:
|
||||
|
||||
GNSS-SDR provides interfaces for a wide range of radio frequency front-ends, generates processing outputs in standard formats, allows for the full inspection of the whole signal processing chain, and offers a framework for the development of new features. Please visit [https://gnss-sdr.org](https://gnss-sdr.org "GNSS-SDR website") for more information about this open source software-defined GNSS receiver.
|
||||
GNSS-SDR provides interfaces for a wide range of radio frequency front-ends and raw sample file formats, generates processing outputs in standard formats, allows for the full inspection of the whole signal processing chain, and offers a framework for the development of new features. Please visit [https://gnss-sdr.org](https://gnss-sdr.org "GNSS-SDR website") for more information about this open source software-defined GNSS receiver.
|
||||
|
||||
|
||||
|
||||
@ -64,10 +66,11 @@ $ sudo apt-get install build-essential cmake git libboost-dev libboost-date-time
|
||||
libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-chrono-dev \
|
||||
libboost-serialization-dev liblog4cpp5-dev libuhd-dev gnuradio-dev gr-osmosdr \
|
||||
libblas-dev liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev \
|
||||
libgnutls-openssl-dev python-mako python-six libmatio-dev googletest
|
||||
libgnutls-openssl-dev libpcap-dev python-mako python-six libmatio-dev libpugixml-dev \
|
||||
libgtest-dev
|
||||
~~~~~~
|
||||
|
||||
Please note that `googletest` was named `libgtest-dev` in distributions older than Debian 9 "stretch" and Ubuntu 17.04 "zesty".
|
||||
Please note that the required files from `libgtest-dev` were moved to `googletest` in Debian 9 "stretch" and Ubuntu 18.04 "bionic", and moved back again to `libgtest-dev` in Debian 10 "buster" and Ubuntu 18.10 "cosmic".
|
||||
|
||||
**Note for Ubuntu 14.04 LTS "trusty" users:** you will need to build from source and install GNU Radio manually, as explained below, since GNSS-SDR requires `gnuradio-dev` >= 3.7.3, and Ubuntu 14.04 came with 3.7.2. Install all the packages above BUT EXCEPT `libuhd-dev`, `gnuradio-dev` and `gr-osmosdr` (and remove them if they are already installed in your machine), and install those dependencies using PyBOMBS. The same applies to `libmatio-dev`: Ubuntu 14.04 came with 1.5.2 and the minimum required version is 1.5.3. Please do not install the `libmatio-dev` package and install `libtool`, `automake` and `libhdf5-dev` instead. A recent version of the library will be downloaded and built automatically if CMake does not find it installed.
|
||||
|
||||
@ -85,7 +88,7 @@ $ sudo yum install make automake gcc gcc-c++ kernel-devel cmake git boost-devel
|
||||
boost-date-time boost-system boost-filesystem boost-thread boost-chrono \
|
||||
boost-serialization log4cpp-devel gnuradio-devel gr-osmosdr-devel \
|
||||
blas-devel lapack-devel matio-devel armadillo-devel gflags-devel \
|
||||
glog-devel openssl-devel python-mako python-six
|
||||
glog-devel openssl-devel libpcap-devel python-mako python-six pugixml-devel
|
||||
~~~~~~
|
||||
|
||||
Once you have installed these packages, you can jump directly to [download the source code and build GNSS-SDR](#download-and-build-linux).
|
||||
@ -102,26 +105,26 @@ $ sudo yum install make automake gcc gcc-c++ kernel-devel libtool \
|
||||
hdf5-devel cmake git boost-devel boost-date-time boost-system \
|
||||
boost-filesystem boost-thread boost-chrono boost-serialization \
|
||||
log4cpp-devel gnuradio-devel gr-osmosdr-devel blas-devel lapack-devel \
|
||||
armadillo-devel openssl-devel python-mako python-six
|
||||
armadillo-devel openssl-devel libpcap-devel python-mako python-six pugixml-devel
|
||||
~~~~~~
|
||||
|
||||
Once you have installed these packages, you can jump directly to [download the source code and build GNSS-SDR](#download-and-build-linux).
|
||||
|
||||
#### Arch Linux
|
||||
|
||||
If you are using Arch Linux (with base-devel group installed):
|
||||
If you are using Arch Linux:
|
||||
|
||||
~~~~~~
|
||||
$ pacman -S cmake git boost boost-libs log4cpp libvolk gnuradio gnuradio-osmosdr \
|
||||
blas lapack gflags google-glog gnutls openssl python2-mako python2-six \
|
||||
libmatio gtest
|
||||
$ pacman -S gcc make cmake git boost boost-libs log4cpp libvolk gnuradio \
|
||||
gnuradio-osmosdr blas lapack gflags google-glog openssl pugixml \
|
||||
python-mako python-six libmatio libpcap gtest
|
||||
~~~~~~
|
||||
|
||||
Once you have installed these packages, you can jump directly to [download the source code and build GNSS-SDR](#download-and-build-linux).
|
||||
|
||||
### Alternative 2: Install dependencies using PyBOMBS
|
||||
|
||||
This option is adequate if you are interested in development, in working with the most recent versions of software dependencies, want more fine tuning on the installed versions, or simply in building everything from the scratch just for the fun of it. In such cases, we recommend to use [PyBOMBS](http://gnuradio.org/pybombs "Python Build Overlay Managed Bundle System wiki") (Python Build Overlay Managed Bundle System), GNU Radio's meta-package manager tool that installs software from source, or whatever the local package manager is, that automatically does all the work for you. Please take a look at the configuration options and general PyBOMBS usage at https://github.com/gnuradio/pybombs. Here we provide a quick step-by-step tutorial.
|
||||
This option is adequate if you are interested in development, in working with the most recent versions of software dependencies, want more fine tuning on the installed versions, or simply in building everything from the scratch just for the fun of it. In such cases, we recommend to use [PyBOMBS](https://github.com/gnuradio/pybombs "Python Build Overlay Managed Bundle System") (Python Build Overlay Managed Bundle System), GNU Radio's meta-package manager tool that installs software from source, or whatever the local package manager is, that automatically does all the work for you. Please take a look at the configuration options and general PyBOMBS usage at https://github.com/gnuradio/pybombs. Here we provide a quick step-by-step tutorial.
|
||||
|
||||
First of all, install some basic packages:
|
||||
|
||||
@ -182,27 +185,28 @@ or manually as explained below, and then please follow instructions on how to [d
|
||||
#### Install [Armadillo](http://arma.sourceforge.net/ "Armadillo's Homepage"), a C++ linear algebra library:
|
||||
|
||||
~~~~~~
|
||||
$ sudo apt-get install libopenblas-dev liblapack-dev # For Debian/Ubuntu/LinuxMint
|
||||
$ sudo apt-get install libblas-dev liblapack-dev # For Debian/Ubuntu/LinuxMint
|
||||
$ sudo yum install lapack-devel blas-devel # For Fedora/CentOS/RHEL
|
||||
$ sudo zypper install lapack-devel blas-devel # For OpenSUSE
|
||||
$ wget http://sourceforge.net/projects/arma/files/armadillo-8.500.0.tar.xz
|
||||
$ tar xvfz armadillo-8.500.0.tar.xz
|
||||
$ cd armadillo-8.500.0
|
||||
$ sudo pacman -S blas lapack # For Arch Linux
|
||||
$ wget https://sourceforge.net/projects/arma/files/armadillo-9.200.7.tar.xz
|
||||
$ tar xvfz armadillo-9.200.7.tar.xz
|
||||
$ cd armadillo-9.200.7
|
||||
$ cmake .
|
||||
$ make
|
||||
$ sudo make install
|
||||
~~~~~~
|
||||
|
||||
The full stop separated from ```cmake``` by a space is important. [CMake](http://www.cmake.org/ "CMake's Homepage") will figure out what other libraries are currently installed and will modify Armadillo's configuration correspondingly. CMake will also generate a run-time armadillo library, which is a combined alias for all the relevant libraries present on your system (eg. BLAS, LAPACK and ATLAS).
|
||||
The full stop separated from ```cmake``` by a space is important. [CMake](https://cmake.org/ "CMake's Homepage") will figure out what other libraries are currently installed and will modify Armadillo's configuration correspondingly. CMake will also generate a run-time armadillo library, which is a combined alias for all the relevant libraries present on your system (eg. BLAS, LAPACK and ATLAS).
|
||||
|
||||
|
||||
|
||||
#### Install [Gflags](https://github.com/gflags/gflags "Gflags' Homepage"), a commandline flags processing module for C++:
|
||||
|
||||
~~~~~~
|
||||
$ wget https://github.com/gflags/gflags/archive/v2.2.1.tar.gz
|
||||
$ tar xvfz v2.2.1.tar.gz
|
||||
$ cd gflags-2.2.1
|
||||
$ wget https://github.com/gflags/gflags/archive/v2.2.2.tar.gz
|
||||
$ tar xvfz v2.2.2.tar.gz
|
||||
$ cd gflags-2.2.2
|
||||
$ cmake -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF -DBUILD_gflags_nothreads_LIB=OFF .
|
||||
$ make
|
||||
$ sudo make install
|
||||
@ -228,28 +232,30 @@ $ sudo ldconfig
|
||||
#### Build the [Google C++ Testing Framework](https://github.com/google/googletest "Googletest Homepage"), also known as Google Test:
|
||||
|
||||
~~~~~~
|
||||
$ wget https://github.com/google/googletest/archive/release-1.8.0.zip
|
||||
$ unzip release-1.8.0.zip
|
||||
$ cd googletest-release-1.8.0
|
||||
$ cmake -DBUILD_GTEST=ON -DBUILD_GMOCK=OFF .
|
||||
$ wget https://github.com/google/googletest/archive/release-1.8.1.zip
|
||||
$ unzip release-1.8.1.zip
|
||||
$ cd googletest-release-1.8.1
|
||||
$ cmake -DINSTALL_GTEST=OFF -DBUILD_GMOCK=OFF .
|
||||
$ make
|
||||
~~~~~~
|
||||
|
||||
Please **DO NOT install** Google Test (do *not* type ```sudo make install```). Every user needs to compile his tests using the same compiler flags used to compile the installed Google Test libraries; otherwise he may run into undefined behaviors (i.e. the tests can behave strangely and may even crash for no obvious reasons). The reason is that C++ has this thing called the One-Definition Rule: if two C++ source files contain different definitions of the same class/function/variable, and you link them together, you violate the rule. The linker may or may not catch the error (in many cases it is not required by the C++ standard to catch the violation). If it does not, you get strange run-time behaviors that are unexpected and hard to debug. If you compile Google Test and your test code using different compiler flags, they may see different definitions of the same class/function/variable (e.g. due to the use of ```#if``` in Google Test). Therefore, for your sanity, we recommend to avoid installing pre-compiled Google Test libraries. Instead, each project should compile Google Test itself such that it can be sure that the same flags are used for both Google Test and the tests. The building system of GNSS-SDR does the compilation and linking of googletest to its own tests; it is only required that you tell the system where the googletest folder that you downloaded resides. Just add to your ```$HOME/.bashrc``` file the following line:
|
||||
|
||||
~~~~~~
|
||||
export GTEST_DIR=/home/username/googletest-release-1.8.0/googletest
|
||||
export GTEST_DIR=/home/username/googletest-release-1.8.1/googletest
|
||||
~~~~~~
|
||||
|
||||
changing `/home/username/googletest-release-1.8.0/googletest` by the actual directory where you built googletest.
|
||||
changing `/home/username/googletest-release-1.8.1/googletest` by the actual directory where you built googletest.
|
||||
|
||||
|
||||
|
||||
#### Install the [GnuTLS](http://www.gnutls.org/ "GnuTLS's Homepage") or [OpenSSL](https://www.openssl.org/ "OpenSSL's Homepage") libraries:
|
||||
#### Install the [GnuTLS](https://www.gnutls.org/ "GnuTLS's Homepage") or [OpenSSL](https://www.openssl.org/ "OpenSSL's Homepage") libraries:
|
||||
|
||||
~~~~~~
|
||||
$ sudo apt-get install libgnutls-openssl-dev # For Debian/Ubuntu/LinuxMint
|
||||
$ sudo yum install openssl-devel # For Fedora/CentOS/RHEL
|
||||
$ sudo zypper install openssl-devel # For OpenSUSE
|
||||
$ sudo pacman -S openssl # For Arch Linux
|
||||
~~~~~~
|
||||
|
||||
In case the GnuTLS library with openssl extensions package is not available in your GNU/Linux distribution, GNSS-SDR can also work well with OpenSSL.
|
||||
@ -513,10 +519,7 @@ More details can be found in our tutorial about [GNSS-SDR configuration options
|
||||
<a name="macosx">macOS and Mac OS X</a>
|
||||
---------
|
||||
|
||||
|
||||
### macOS 10.13 (High Sierra) and 10.12 (Sierra), Mac OS X 10.11 (El Capitan), 10.10 (Yosemite) and 10.9 (Mavericks).
|
||||
|
||||
If you still have not installed [Xcode](http://developer.apple.com/xcode/ "Xcode"), do it now from the App Store (it's free). You will also need the Xcode Command Line Tools. Launch the Terminal, found in /Applications/Utilities/, and type:
|
||||
GNSS-SDR can be built on MacOS or Mac OS X, starting from 10.9 (Mavericks) and including 10.14 (Mojave). If you still have not installed [Xcode](https://developer.apple.com/xcode/ "Xcode"), do it now from the App Store (it's free). You will also need the Xcode Command Line Tools. Launch the Terminal, found in /Applications/Utilities/, and type:
|
||||
|
||||
~~~~~~
|
||||
$ xcode-select --install
|
||||
@ -532,7 +535,7 @@ Software pre-requisites can be installed using either [Macports](#macports) or [
|
||||
|
||||
#### <a name="macports">Macports</a>
|
||||
|
||||
First, [install Macports](http://www.macports.org/install.php). If you are upgrading from a previous installation, please follow the [migration rules](http://trac.macports.org/wiki/Migration).
|
||||
First, [install Macports](https://www.macports.org/install.php). If you are upgrading from a previous installation, please follow the [migration rules](https://trac.macports.org/wiki/Migration).
|
||||
|
||||
In a terminal, type:
|
||||
|
||||
@ -547,6 +550,7 @@ $ sudo port install google-glog +gflags
|
||||
$ sudo port install py27-mako
|
||||
$ sudo port install py27-six
|
||||
$ sudo port install matio
|
||||
$ sudo port install pugixml
|
||||
~~~~~~
|
||||
|
||||
You also might need to activate a Python installation. The list of installed versions can be retrieved with:
|
||||
@ -555,7 +559,7 @@ You also might need to activate a Python installation. The list of installed ver
|
||||
$ port select list python
|
||||
~~~~~~
|
||||
|
||||
and you can activate a certain version (2.7 works well) by typing:
|
||||
and you can activate a certain version by typing:
|
||||
|
||||
~~~~~~
|
||||
$ sudo port select --set python python27
|
||||
@ -569,7 +573,7 @@ First, install [Homebrew](https://brew.sh/). Paste this in a terminal prompt:
|
||||
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||
~~~~~~
|
||||
|
||||
The script explains what it will do and then pauses before it does it. There are more installation options [here](https://docs.brew.sh/Installation.html).
|
||||
The script explains what it will do, and then it pauses before doing it. There are more installation options [here](https://docs.brew.sh/Installation.html).
|
||||
|
||||
Install pip:
|
||||
|
||||
@ -580,16 +584,26 @@ $ sudo easy_install pip
|
||||
Install the required dependencies:
|
||||
|
||||
~~~~~~
|
||||
$ brew tap homebrew/science
|
||||
$ brew install cmake hdf5 arpack superlu
|
||||
$ brew install armadillo
|
||||
$ brew install glog gflags gnutls
|
||||
$ brew install cmake
|
||||
$ brew install hdf5 arpack superlu armadillo
|
||||
$ brew install glog gflags
|
||||
$ brew install gnuradio
|
||||
$ brew install libmatio
|
||||
$ brew install log4cpp
|
||||
$ brew install pugixml
|
||||
$ pip install mako
|
||||
$ pip install six
|
||||
$ brew install openssl
|
||||
~~~~~~
|
||||
|
||||
In the last step, Homebrew installs OpenSSL but it does not link it to `/usr/local`. Thus, you must manually link it instead:
|
||||
|
||||
~~~~~~
|
||||
$ ln -s /usr/local/opt/openssl/include/openssl /usr/local/include
|
||||
$ ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
|
||||
~~~~~~
|
||||
|
||||
|
||||
#### Build GNSS-SDR
|
||||
|
||||
Finally, you are ready to clone the GNSS-SDR repository, configure and build the software:
|
||||
@ -625,7 +639,7 @@ GNSS-SDR comes with a library which is a module of the Vector-Optimized Library
|
||||
|
||||
###### Other package managers
|
||||
|
||||
GNU Radio and other dependencies can also be installed using other package managers than Macports, such as [Fink](http://www.finkproject.org/ "Fink") or [Homebrew](http://brew.sh/ "Homebrew"). Since the version of Python that ships with OS X is great for learning but it is not good for development, you could have another Python executable in a non-standard location. If that is the case, you need to inform GNSS-SDR's configuration system by defining the `PYTHON_EXECUTABLE` variable as:
|
||||
GNU Radio and other dependencies can also be installed using other package managers than Macports, such as [Fink](http://www.finkproject.org/ "Fink") or [Homebrew](https://brew.sh/ "Homebrew"). Since the version of Python that ships with OS X is great for learning but it is not good for development, you could have another Python executable in a non-standard location. If that is the case, you need to inform GNSS-SDR's configuration system by defining the `PYTHON_EXECUTABLE` variable as:
|
||||
|
||||
~~~~~~
|
||||
cmake -DPYTHON_EXECUTABLE=/path/to/bin/python ../
|
||||
@ -646,7 +660,7 @@ Other builds
|
||||
---------
|
||||
* **Docker container**: A technology providing operating-system-level virtualization to build, ship, and run distributed applications, whether on laptops, data center VMs, or the cloud. Visit [https://github.com/carlesfernandez/docker-gnsssdr](https://github.com/carlesfernandez/docker-gnsssdr) or [https://github.com/carlesfernandez/docker-pybombs-gnsssdr](https://github.com/carlesfernandez/docker-pybombs-gnsssdr) for instructions.
|
||||
|
||||
* **Snap packages**: [Snaps](http://snapcraft.io) are universal Linux packages aimed to work on any distribution or device, from IoT devices to servers, desktops to mobile devices. Visit [https://github.com/carlesfernandez/snapcraft-sandbox](https://github.com/carlesfernandez/snapcraft-sandbox) for instructions.
|
||||
* **Snap packages**: [Snaps](https://snapcraft.io) are universal Linux packages aimed to work on any distribution or device, from IoT devices to servers, desktops to mobile devices. Visit [https://github.com/carlesfernandez/snapcraft-sandbox](https://github.com/carlesfernandez/snapcraft-sandbox) for instructions.
|
||||
|
||||
* **GNSS-SDR in embedded platforms**: we provide a Software Development Kit (SDK) based on [OpenEmbedded](http://www.openembedded.org/wiki/Main_Page) for cross-compiling GNSS-SDR in your desktop computer and for producing executables that can run in embedded platforms, such as a Zedboard or a Raspberry Pi 3. Visit [Cross-compiling GNSS-SDR](https://gnss-sdr.org/docs/tutorials/cross-compiling/) for instructions.
|
||||
|
||||
@ -694,11 +708,11 @@ Getting started
|
||||
1. After building the code, you will find the ```gnss-sdr``` executable file at gnss-sdr/install. You can make it available everywhere else by ```sudo make install```. Run the profilers ```volk_profile``` and ```volk_gnsssdr_profile``` for testing all available VOLK kernels for each architecture supported by your processor. This only has to be done once.
|
||||
2. In post-processing mode, you have to provide a captured GNSS signal file.
|
||||
1. The signal file can be easily recorded using the GNU Radio file sink in ```gr_complex<float>``` mode.
|
||||
2. You will need a GPS active antenna, a [USRP](http://www.ettus.com/product) and a suitable USRP daughter board to receive GPS L1 C/A signals. GNSS-SDR require to have at least 2 MHz of bandwidth in 1.57542 GHz. (remember to enable the DC bias with the daughter board jumper).
|
||||
2. You will need a GPS active antenna, a [USRP](https://www.ettus.com/product) and a suitable USRP daughter board to receive GPS L1 C/A signals. GNSS-SDR require to have at least 2 MHz of bandwidth in 1.57542 GHz. (remember to enable the DC bias with the daughter board jumper).
|
||||
We use a [DBSRX2](https://www.ettus.com/product/details/DBSRX2) to do the task, but you can try the newer Ettus' daughter boards as well.
|
||||
3. The easiest way to capture a signal file is to use the GNU Radio Companion GUI. Only two blocks are needed: a USRP signal source connected to complex float file sink. You need to tune the USRP central frequency and decimation factor using USRP signal source properties box. We suggest using a decimation factor of 20 if you use the USRP2. This will give you 100/20 = 5 MSPS which will be enough to receive GPS L1 C/A signals. The front-end gain should also be configured. In our test with the DBSRX2 we obtained good results with ```G=50```.
|
||||
4. Capture at least 80 seconds of signal in open sky conditions. During the process, be aware of USRP driver buffer underruns messages. If your hard disk is not fast enough to write data at this speed you can capture to a virtual RAM drive. 80 seconds of signal at 5 MSPS occupies less than 3 Gbytes using ```gr_complex<float>```.
|
||||
5. If you have no access to an RF front-end, you can download a sample raw data file (that contains GPS and Galileo signals) from [here](http://sourceforge.net/projects/gnss-sdr/files/data/).
|
||||
5. If you have no access to an RF front-end, you can download a sample raw data file (that contains GPS and Galileo signals) from [here](https://sourceforge.net/projects/gnss-sdr/files/data/).
|
||||
3. You are ready to configure the receiver to use your captured file among other parameters:
|
||||
1. The default configuration file resides at [/usr/local/share/gnss-sdr/conf/default.conf](./conf/gnss-sdr.conf).
|
||||
2. You need to review/modify at least the following settings:
|
||||
@ -764,7 +778,7 @@ The name of these parameters can be anything but one reserved word: implementati
|
||||
SignalConditioner.implementation=Pass_Through
|
||||
~~~~~~
|
||||
|
||||
Since the configuration is just a set of property names and values without any meaning or syntax, the system is very versatile and easily extendable. Adding new properties to the system only implies modifications in the classes that will make use of these properties. In addition, the configuration files are not checked against any strict syntax so it is always in a correct status (as long as it contains pairs of property names and values in the [INI format](http://en.wikipedia.org/wiki/INI_file)).
|
||||
Since the configuration is just a set of property names and values without any meaning or syntax, the system is very versatile and easily extendable. Adding new properties to the system only implies modifications in the classes that will make use of these properties. In addition, the configuration files are not checked against any strict syntax so it is always in a correct status (as long as it contains pairs of property names and values in the [INI format](https://en.wikipedia.org/wiki/INI_file)).
|
||||
|
||||
|
||||
|
||||
@ -875,7 +889,7 @@ SignalSource.big_endian_bytes=false
|
||||
|
||||
***Example: UHD Signal Source***
|
||||
|
||||
The user may prefer to use a [UHD](http://code.ettus.com/redmine/ettus/projects/uhd/wiki)-compatible RF front-end and try real-time processing. For instance, for a USRP1 + DBSRX daughterboard, use:
|
||||
The user may prefer to use a [UHD](https://files.ettus.com/manual/)-compatible RF front-end and try real-time processing. For instance, for a USRP1 + DBSRX daughterboard, use:
|
||||
|
||||
~~~~~~
|
||||
;######### SIGNAL_SOURCE CONFIG ############
|
||||
@ -1031,7 +1045,7 @@ More documentation at the [Data Type Adapter Blocks page](https://gnss-sdr.org/d
|
||||
|
||||
#### Input filter
|
||||
|
||||
This block filters the input data. It can be combined with frequency translation for IF signals. The computation of the filter taps is based on parameters of GNU Radio's function [pm_remez](http://gnuradio.org/doc/doxygen/pm__remez_8h.html), that calculates the optimal (in the Chebyshev/minimax sense) FIR filter impulse response given a set of band edges, the desired response on those bands, and the weight given to the error in those bands.
|
||||
This block filters the input data. It can be combined with frequency translation for IF signals. The computation of the filter taps is based on parameters of GNU Radio's function [pm_remez](https://gnuradio.org/doc/doxygen/pm__remez_8h.html), that calculates the optimal (in the Chebyshev/minimax sense) FIR filter impulse response given a set of band edges, the desired response on those bands, and the weight given to the error in those bands.
|
||||
|
||||
The block can be configured like this:
|
||||
|
||||
@ -1113,6 +1127,7 @@ Each channel must be assigned to a GNSS signal, according to the following ident
|
||||
| GPS L1 C/A | 1C |
|
||||
| Galileo E1b/c | 1B |
|
||||
| Glonass L1 C/A | 1G |
|
||||
| Beidou B1I | B1 |
|
||||
| GPS L2 L2C(M) | 2S |
|
||||
| Glonass L2 C/A | 2G |
|
||||
| GPS L5 | L5 |
|
||||
@ -1156,7 +1171,7 @@ More documentation at the [Channels page](https://gnss-sdr.org/docs/sp-blocks/ch
|
||||
|
||||
#### Acquisition
|
||||
|
||||
The first task of a GNSS receiver is to detect the presence or absence of in-view satellites. This is done by the acquisition system process, which also provides a coarse estimation of two signal parameters: the frequency shift with respect to the nominal IF frequency, and a delay term which allows the receiver to create a local code aligned with the incoming code. [AcquisitionInterface](./src/core/interfaces/acquisition_interface.h) is the common interface for all the acquisition algorithms and their corresponding implementations. Algorithms' interface, that may vary depending on the use of information external to the receiver, such as in Assisted GNSS, is defined in classes referred to as *adapters*. These adapters wrap the GNU Radio blocks interface into a compatible interface expected by AcquisitionInterface. This allows the use of existing GNU Radio blocks derived from ```gr::block```, and ensures that newly developed implementations will also be reusable in other GNU Radio-based applications. Moreover, it adds still another layer of abstraction, since each given acquisition algorithm can have different implementations (for instance using different numerical libraries). In such a way, implementations can be continuously improved without having any impact neither on the algorithm interface nor the general acquisition interface.
|
||||
The first task of a GNSS receiver is to detect the presence or absence of in-view satellites. This is done by the acquisition system process, which also provides a coarse estimation of two signal parameters: the frequency shift with respect to the nominal frequency, and a delay term which allows the receiver to create a local code aligned with the incoming code. [AcquisitionInterface](./src/core/interfaces/acquisition_interface.h) is the common interface for all the acquisition algorithms and their corresponding implementations. Algorithms' interface, that may vary depending on the use of information external to the receiver, such as in Assisted GNSS, is defined in classes referred to as *adapters*. These adapters wrap the GNU Radio blocks interface into a compatible interface expected by AcquisitionInterface. This allows the use of existing GNU Radio blocks derived from ```gr::block```, and ensures that newly developed implementations will also be reusable in other GNU Radio-based applications. Moreover, it adds still another layer of abstraction, since each given acquisition algorithm can have different implementations (for instance using different numerical libraries). In such a way, implementations can be continuously improved without having any impact neither on the algorithm interface nor the general acquisition interface.
|
||||
|
||||
Check [GpsL1CaPcpsAcquisition](./src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.h) and [GalileoE1PcpsAmbiguousAcquisition](./src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h) for examples of adapters from a Parallel Code Phase Search (PCPS) acquisition block, and [pcps_acquisition_cc](./src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.h) for an example of a block implementation. The source code of all the available acquisition algorithms is located at:
|
||||
|
||||
@ -1169,14 +1184,13 @@ Check [GpsL1CaPcpsAcquisition](./src/algorithms/acquisition/adapters/gps_l1_ca_p
|
||||
|---------gnuradio_blocks <- Signal processing blocks implementation
|
||||
~~~~~~
|
||||
|
||||
The user can select a given implementation for the algorithm to be used in each receiver channel, as well as their parameters, in the configuration file. For a GPS l1 C/A receiver:
|
||||
The user can select a given implementation for the algorithm to be used in each receiver channel, as well as their parameters, in the configuration file. For a GPS L1 C/A receiver:
|
||||
|
||||
~~~~~~
|
||||
;######### ACQUISITION GLOBAL CONFIG ############
|
||||
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition ; Acquisition algorithm selection for this channel
|
||||
Acquisition_1C.item_type=gr_complex
|
||||
Acquisition_1C.if=0 ; Signal intermediate frequency in [Hz]
|
||||
Acquisition_1C.sampled_ms=1 ; Signal block duration for the acquisition signal detection [ms]
|
||||
Acquisition_1C.coherent_integration_time_ms=1 ; Signal block duration for the acquisition signal detection [ms]
|
||||
Acquisition_1C.threshold=0.005 ; Acquisition threshold
|
||||
Acquisition_1C.pfa=0.0001 ; Acquisition false alarm probability. This option overrides the threshold option.
|
||||
; Only use with implementations: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition]
|
||||
@ -1192,8 +1206,7 @@ and, for Galileo E1B channels:
|
||||
;######### GALILEO ACQUISITION CONFIG ############
|
||||
Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition
|
||||
Acquisition_1B.item_type=gr_complex
|
||||
Acquisition_1B.if=0
|
||||
Acquisition_1B.sampled_ms=4
|
||||
Acquisition_1B.coherent_integration_time_ms=4
|
||||
Acquisition_1B.pfa=0.0000008
|
||||
Acquisition_1B.doppler_max=15000
|
||||
Acquisition_1B.doppler_step=125
|
||||
@ -1301,7 +1314,7 @@ More documentation at the [Observables Blocks page](https://gnss-sdr.org/docs/sp
|
||||
|
||||
|
||||
#### Computation of Position, Velocity and Time
|
||||
Although data processing for obtaining high-accuracy PVT solutions is out of the scope of GNSS-SDR, we provide a module that can compute simple least square solutions (stored in GIS-friendly formats such as [GeoJSON](http://geojson.org/geojson-spec.html) and [KML](http://www.opengeospatial.org/standards/kml), or transmitted via serial port as [NMEA 0183](https://en.wikipedia.org/wiki/NMEA_0183) messages), and leaves room for more sophisticated positioning methods by storing observables and navigation data in [RINEX](https://en.wikipedia.org/wiki/RINEX) files (v2.11 or v3.02), and generating [RTCM](http://www.rtcm.org "Radio Technical Commission for Maritime Services") 3.2 messages that can be disseminated through the Internet in real time.
|
||||
Although data processing for obtaining high-accuracy PVT solutions is out of the scope of GNSS-SDR, we provide a module that can compute position fixes (stored in GIS-friendly formats such as [GeoJSON](https://tools.ietf.org/html/rfc7946), [GPX](http://www.topografix.com/gpx.asp) and [KML](http://www.opengeospatial.org/standards/kml), or transmitted via serial port as [NMEA 0183](https://en.wikipedia.org/wiki/NMEA_0183) messages), and leaves room for more sophisticated positioning methods by storing observables and navigation data in [RINEX](https://en.wikipedia.org/wiki/RINEX) files (v2.11 or v3.02), and generating [RTCM](http://www.rtcm.org "Radio Technical Commission for Maritime Services") 3.2 messages that can be disseminated through the Internet in real time.
|
||||
|
||||
The common interface is [PvtInterface](./src/core/interfaces/pvt_interface.h).
|
||||
|
||||
@ -1332,18 +1345,20 @@ PVT.rtcm_MT1077_rate_ms=1000
|
||||
|
||||
**Notes on the output formats:**
|
||||
|
||||
* **GeoJSON** is a geospatial data interchange format based on JavaScript Object Notation (JSON) supported by numerous mapping and GIS software packages, including [OpenLayers](http://openlayers.org), [Leaflet](http://leafletjs.com), [MapServer](http://www.mapserver.org), [GeoServer](http://geoserver.org), [GeoDjango](https://www.djangoproject.com), [GDAL](http://www.gdal.org), and [CartoDB](https://cartodb.com). It is also possible to use GeoJSON with [PostGIS](http://postgis.net) and [Mapnik](http://mapnik.org), both of which handle the format via the GDAL OGR conversion library. The [Google Maps Javascript API](https://developers.google.com/maps/documentation/javascript/) v3 directly supports the [integration of GeoJSON data layers](https://developers.google.com/maps/documentation/javascript/examples/layer-data-simple), and [GitHub also supports GeoJSON rendering](https://github.com/blog/1528-there-s-a-map-for-that).
|
||||
* **GeoJSON** is a geospatial data interchange format based on JavaScript Object Notation (JSON) supported by numerous mapping and GIS software packages, including [OpenLayers](https://openlayers.org), [Leaflet](https://leafletjs.com), [MapServer](http://www.mapserver.org), [GeoServer](http://geoserver.org), [GeoDjango](https://www.djangoproject.com), [GDAL](http://www.gdal.org), and [CartoDB](https://cartodb.com). It is also possible to use GeoJSON with [PostGIS](https://postgis.net/) and [Mapnik](http://mapnik.org), both of which handle the format via the GDAL OGR conversion library. The [Google Maps Javascript API](https://developers.google.com/maps/documentation/javascript/) v3 directly supports the [integration of GeoJSON data layers](https://developers.google.com/maps/documentation/javascript/examples/layer-data-simple), and [GitHub also supports GeoJSON rendering](https://github.com/blog/1528-there-s-a-map-for-that).
|
||||
|
||||
* **KML** (Keyhole Markup Language) is an XML grammar used to encode and transport representations of geographic data for display in an earth browser. KML is an open standard officially named the OpenGIS KML Encoding Standard (OGC KML), and it is maintained by the Open Geospatial Consortium, Inc. (OGC). KML files can be displayed in geobrowsers such as [Google Earth](https://www.google.com/earth/), [Marble](https://marble.kde.org), [osgEarth](http://osgearth.org), or used with the [NASA World Wind SDK for Java](http://worldwind.arc.nasa.gov/java/).
|
||||
* **KML** (Keyhole Markup Language) is an XML grammar used to encode and transport representations of geographic data for display in an earth browser. KML is an open standard officially named the OpenGIS KML Encoding Standard (OGC KML), and it is maintained by the Open Geospatial Consortium, Inc. (OGC). KML files can be displayed in geobrowsers such as [Google Earth](https://www.google.com/earth/), [Marble](https://marble.kde.org), [osgEarth](http://osgearth.org), or used with the [NASA World Wind SDK for Java](https://worldwind.arc.nasa.gov/java/).
|
||||
|
||||
* **NMEA 0183** is a combined electrical and data specification for communication between marine electronics such as echo sounder, sonars, anemometer, gyrocompass, autopilot, GPS receivers and many other types of instruments. It has been defined by, and is controlled by, the U.S. [National Marine Electronics Association](http://www.nmea.org/). The NMEA 0183 standard uses a simple ASCII, serial communications protocol that defines how data are transmitted in a *sentence* from one *talker* to multiple *listeners* at a time. Through the use of intermediate expanders, a talker can have a unidirectional conversation with a nearly unlimited number of listeners, and using multiplexers, multiple sensors can talk to a single computer port. At the application layer, the standard also defines the contents of each sentence (message) type, so that all listeners can parse messages accurately. Those messages can be sent through the serial port (that could be for instance a Bluetooth link) and be used/displayed by a number of software applications such as [gpsd](http://www.catb.org/gpsd/ "The UNIX GPS daemon"), [JOSM](https://josm.openstreetmap.de/ "The Java OpenStreetMap Editor"), [OpenCPN](http://opencpn.org/ocpn/ "Open Chart Plotter Navigator"), and many others (and maybe running on other devices).
|
||||
* **GPX** (the GPS Exchange Format) is a light-weight XML data format for the interchange of GPS data (waypoints, routes, and tracks) between applications and Web services on the Internet. The format is open and can be used without the need to pay license fees, and it is supported by a [large list of software tools](http://www.topografix.com/gpx_resources.asp).
|
||||
|
||||
* **NMEA 0183** is a combined electrical and data specification for communication between marine electronics such as echo sounder, sonars, anemometer, gyrocompass, autopilot, GPS receivers and many other types of instruments. It has been defined by, and is controlled by, the U.S. [National Marine Electronics Association](http://www.nmea.org/). The NMEA 0183 standard uses a simple ASCII, serial communications protocol that defines how data are transmitted in a *sentence* from one *talker* to multiple *listeners* at a time. Through the use of intermediate expanders, a talker can have a unidirectional conversation with a nearly unlimited number of listeners, and using multiplexers, multiple sensors can talk to a single computer port. At the application layer, the standard also defines the contents of each sentence (message) type, so that all listeners can parse messages accurately. Those messages can be sent through the serial port (that could be for instance a Bluetooth link) and be used/displayed by a number of software applications such as [gpsd](http://www.catb.org/gpsd/ "The UNIX GPS daemon"), [JOSM](https://josm.openstreetmap.de/ "The Java OpenStreetMap Editor"), [OpenCPN](https://opencpn.org/ "Open Chart Plotter Navigator"), and many others (and maybe running on other devices).
|
||||
|
||||
* **RINEX** (Receiver Independent Exchange Format) is an interchange format for raw satellite navigation system data, covering observables and the information contained in the navigation message broadcast by GNSS satellites. This allows the user to post-process the received data to produce a more accurate result (usually with other data unknown to the original receiver, such as better models of the atmospheric conditions at time of measurement). RINEX files can be used by software packages such as [GPSTk](http://www.gpstk.org), [RTKLIB](http://www.rtklib.com/) and [gLAB](http://gage14.upc.es/gLAB/). GNSS-SDR by default generates RINEX version [3.02](https://igscb.jpl.nasa.gov/igscb/data/format/rinex302.pdf). If [2.11](https://igscb.jpl.nasa.gov/igscb/data/format/rinex211.txt) is needed, it can be requested through the `rinex_version` parameter in the configuration file:
|
||||
~~~~~~
|
||||
PVT.rinex_version=2
|
||||
~~~~~~
|
||||
|
||||
* **RTCM SC-104** provides standards that define the data structure for differential GNSS correction information for a variety of differential correction applications. Developed by the Radio Technical Commission for Maritime Services ([RTCM](http://www.rtcm.org/overview.php#Standards "Radio Technical Commission for Maritime Services")), they have become an industry standard for communication of correction information. GNSS-SDR implements RTCM version 3.2, defined in the document *RTCM 10403.2, Differential GNSS (Global Navigation Satellite Systems) Services - Version 3* (February 1, 2013), which can be [purchased online](https://ssl29.pair.com/dmarkle/puborder.php?show=3 "RTCM Online Publication Order Form"). By default, the generated RTCM binary messages are dumped into a text file in hexadecimal format. However, GNSS-SDR is equipped with a TCP/IP server, acting as an NTRIP source that can feed an NTRIP server. NTRIP (Networked Transport of RTCM via Internet Protocol) is an open standard protocol that can be freely downloaded from [BKG](http://igs.bkg.bund.de/root_ftp/NTRIP/documentation/NtripDocumentation.pdf "Networked Transport of RTCM via Internet Protocol (Ntrip) Version 1.0"), and it is designed for disseminating differential correction data (*e.g.* in the RTCM-104 format) or other kinds of GNSS streaming data to stationary or mobile users over the Internet. The TCP/IP server can be enabled by setting ```PVT.flag_rtcm_server=true``` in the configuration file, and will be active during the execution of the software receiver. By default, the server will operate on port 2101 (which is the recommended port for RTCM services according to the Internet Assigned Numbers Authority, [IANA](http://www.iana.org/assignments/service-names-port-numbers "Service Name and Transport Protocol Port Number Registry")), and will identify the Reference Station with ID=1234. This behaviour can be changed in the configuration file:
|
||||
* **RTCM SC-104** provides standards that define the data structure for differential GNSS correction information for a variety of differential correction applications. Developed by the Radio Technical Commission for Maritime Services ([RTCM](http://www.rtcm.org/differential-global-navigation-satellite--dgnss--standards.html "Radio Technical Commission for Maritime Services")), they have become an industry standard for communication of correction information. GNSS-SDR implements RTCM version 3.2, defined in the document *RTCM 10403.2, Differential GNSS (Global Navigation Satellite Systems) Services - Version 3* (February 1, 2013), which can be [purchased online](https://ssl29.pair.com/dmarkle/puborder.php?show=3 "RTCM Online Publication Order Form"). By default, the generated RTCM binary messages are dumped into a text file in hexadecimal format. However, GNSS-SDR is equipped with a TCP/IP server, acting as an NTRIP source that can feed an NTRIP server. NTRIP (Networked Transport of RTCM via Internet Protocol) is an open standard protocol that can be freely downloaded from [BKG](https://igs.bkg.bund.de/root_ftp/NTRIP/documentation/NtripDocumentation.pdf "Networked Transport of RTCM via Internet Protocol (Ntrip) Version 1.0"), and it is designed for disseminating differential correction data (*e.g.* in the RTCM-104 format) or other kinds of GNSS streaming data to stationary or mobile users over the Internet. The TCP/IP server can be enabled by setting ```PVT.flag_rtcm_server=true``` in the configuration file, and will be active during the execution of the software receiver. By default, the server will operate on port 2101 (which is the recommended port for RTCM services according to the Internet Assigned Numbers Authority, [IANA](https://www.iana.org/assignments/service-names-port-numbers/ "Service Name and Transport Protocol Port Number Registry")), and will identify the Reference Station with ID=1234. This behaviour can be changed in the configuration file:
|
||||
~~~~~~
|
||||
PVT.flag_rtcm_server=true
|
||||
PVT.rtcm_tcp_port=2102
|
||||
@ -1402,9 +1417,9 @@ Ok, now what?
|
||||
|
||||
In order to start using GNSS-SDR, you may want to populate ```gnss-sdr/data``` folder (or anywhere else on your system) with raw data files. By "raw data" we mean the output of a Radio Frequency front-end's Analog-to-Digital converter. GNSS-SDR needs signal samples already in baseband or in passband, at a suitable intermediate frequency (on the order of MHz). Prepare your configuration file, and then you are ready for running ```gnss-sdr --config_file=your_configuration.conf```, and seeing how the file is processed.
|
||||
|
||||
Another interesting option is working in real-time with an RF front-end. We provide drivers for UHD-compatible hardware such as the [USRP family](http://www.ettus.com/product), for OsmoSDR and other front-ends (HackRF, bladeRF, LimeSDR), for the GN3S v2 USB dongle and for some DVB-T USB dongles. Start with a low number of channels and then increase it in order to test how many channels your processor can handle in real-time.
|
||||
Another interesting option is working in real-time with an RF front-end. We provide drivers for UHD-compatible hardware such as the [USRP family](https://www.ettus.com/product), for OsmoSDR and other front-ends (HackRF, bladeRF, LimeSDR), for the GN3S v2 USB dongle and for some DVB-T USB dongles. Start with a low number of channels and then increase it in order to test how many channels your processor can handle in real-time.
|
||||
|
||||
You can find more information at the [GNSS-SDR Documentation page](https://gnss-sdr.org/docs/) or directly asking to the [GNSS-SDR Developers mailing list](http://lists.sourceforge.net/lists/listinfo/gnss-sdr-developers).
|
||||
You can find more information at the [GNSS-SDR Documentation page](https://gnss-sdr.org/docs/) or directly asking to the [GNSS-SDR Developers mailing list](https://lists.sourceforge.net/lists/listinfo/gnss-sdr-developers).
|
||||
|
||||
You are also very welcome to contribute to the project, there are many ways to [participate in GNSS-SDR](https://gnss-sdr.org/contribute/). If you need some special feature not yet implemented, the Developer Team would love to be hired for developing it. Please do not hesitate to [contact them](https://gnss-sdr.org/team/).
|
||||
|
||||
|
@ -1,138 +0,0 @@
|
||||
# CMAKE_PARSE_ARGUMENTS(<prefix> <options> <one_value_keywords> <multi_value_keywords> args...)
|
||||
#
|
||||
# CMAKE_PARSE_ARGUMENTS() is intended to be used in macros or functions for
|
||||
# parsing the arguments given to that macro or function.
|
||||
# It processes the arguments and defines a set of variables which hold the
|
||||
# values of the respective options.
|
||||
#
|
||||
# The <options> argument contains all options for the respective macro,
|
||||
# i.e. keywords which can be used when calling the macro without any value
|
||||
# following, like e.g. the OPTIONAL keyword of the install() command.
|
||||
#
|
||||
# The <one_value_keywords> argument contains all keywords for this macro
|
||||
# which are followed by one value, like e.g. DESTINATION keyword of the
|
||||
# install() command.
|
||||
#
|
||||
# The <multi_value_keywords> argument contains all keywords for this macro
|
||||
# which can be followed by more than one value, like e.g. the TARGETS or
|
||||
# FILES keywords of the install() command.
|
||||
#
|
||||
# When done, CMAKE_PARSE_ARGUMENTS() will have defined for each of the
|
||||
# keywords listed in <options>, <one_value_keywords> and
|
||||
# <multi_value_keywords> a variable composed of the given <prefix>
|
||||
# followed by "_" and the name of the respective keyword.
|
||||
# These variables will then hold the respective value from the argument list.
|
||||
# For the <options> keywords this will be TRUE or FALSE.
|
||||
#
|
||||
# All remaining arguments are collected in a variable
|
||||
# <prefix>_UNPARSED_ARGUMENTS, this can be checked afterwards to see whether
|
||||
# your macro was called with unrecognized parameters.
|
||||
#
|
||||
# As an example here a my_install() macro, which takes similar arguments as the
|
||||
# real install() command:
|
||||
#
|
||||
# function(MY_INSTALL)
|
||||
# set(options OPTIONAL FAST)
|
||||
# set(oneValueArgs DESTINATION RENAME)
|
||||
# set(multiValueArgs TARGETS CONFIGURATIONS)
|
||||
# cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
||||
# ...
|
||||
#
|
||||
# Assume my_install() has been called like this:
|
||||
# my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub)
|
||||
#
|
||||
# After the cmake_parse_arguments() call the macro will have set the following
|
||||
# variables:
|
||||
# MY_INSTALL_OPTIONAL = TRUE
|
||||
# MY_INSTALL_FAST = FALSE (this option was not used when calling my_install()
|
||||
# MY_INSTALL_DESTINATION = "bin"
|
||||
# MY_INSTALL_RENAME = "" (was not used)
|
||||
# MY_INSTALL_TARGETS = "foo;bar"
|
||||
# MY_INSTALL_CONFIGURATIONS = "" (was not used)
|
||||
# MY_INSTALL_UNPARSED_ARGUMENTS = "blub" (no value expected after "OPTIONAL"
|
||||
#
|
||||
# You can the continue and process these variables.
|
||||
#
|
||||
# Keywords terminate lists of values, e.g. if directly after a one_value_keyword
|
||||
# another recognized keyword follows, this is interpreted as the beginning of
|
||||
# the new option.
|
||||
# E.g. my_install(TARGETS foo DESTINATION OPTIONAL) would result in
|
||||
# MY_INSTALL_DESTINATION set to "OPTIONAL", but MY_INSTALL_DESTINATION would
|
||||
# be empty and MY_INSTALL_OPTIONAL would be set to TRUE therefor.
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2010 Alexander Neundorf <neundorf@kde.org>
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
# (To distribute this file outside of CMake, substitute the full
|
||||
# License text for the above reference.)
|
||||
|
||||
|
||||
if(__CMAKE_PARSE_ARGUMENTS_INCLUDED)
|
||||
return()
|
||||
endif()
|
||||
set(__CMAKE_PARSE_ARGUMENTS_INCLUDED TRUE)
|
||||
|
||||
|
||||
function(CMAKE_PARSE_ARGUMENTS prefix _optionNames _singleArgNames _multiArgNames)
|
||||
# first set all result variables to empty/FALSE
|
||||
foreach(arg_name ${_singleArgNames} ${_multiArgNames})
|
||||
set(${prefix}_${arg_name})
|
||||
endforeach(arg_name)
|
||||
|
||||
foreach(option ${_optionNames})
|
||||
set(${prefix}_${option} FALSE)
|
||||
endforeach(option)
|
||||
|
||||
set(${prefix}_UNPARSED_ARGUMENTS)
|
||||
|
||||
set(insideValues FALSE)
|
||||
set(currentArgName)
|
||||
|
||||
# now iterate over all arguments and fill the result variables
|
||||
foreach(currentArg ${ARGN})
|
||||
list(FIND _optionNames "${currentArg}" optionIndex) # ... then this marks the end of the arguments belonging to this keyword
|
||||
list(FIND _singleArgNames "${currentArg}" singleArgIndex) # ... then this marks the end of the arguments belonging to this keyword
|
||||
list(FIND _multiArgNames "${currentArg}" multiArgIndex) # ... then this marks the end of the arguments belonging to this keyword
|
||||
|
||||
if(${optionIndex} EQUAL -1 AND ${singleArgIndex} EQUAL -1 AND ${multiArgIndex} EQUAL -1)
|
||||
if(insideValues)
|
||||
if("${insideValues}" STREQUAL "SINGLE")
|
||||
set(${prefix}_${currentArgName} ${currentArg})
|
||||
set(insideValues FALSE)
|
||||
elseif("${insideValues}" STREQUAL "MULTI")
|
||||
list(APPEND ${prefix}_${currentArgName} ${currentArg})
|
||||
endif()
|
||||
else(insideValues)
|
||||
list(APPEND ${prefix}_UNPARSED_ARGUMENTS ${currentArg})
|
||||
endif(insideValues)
|
||||
else()
|
||||
if(NOT ${optionIndex} EQUAL -1)
|
||||
set(${prefix}_${currentArg} TRUE)
|
||||
set(insideValues FALSE)
|
||||
elseif(NOT ${singleArgIndex} EQUAL -1)
|
||||
set(currentArgName ${currentArg})
|
||||
set(${prefix}_${currentArgName})
|
||||
set(insideValues "SINGLE")
|
||||
elseif(NOT ${multiArgIndex} EQUAL -1)
|
||||
set(currentArgName ${currentArg})
|
||||
set(${prefix}_${currentArgName})
|
||||
set(insideValues "MULTI")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
endforeach(currentArg)
|
||||
|
||||
# propagate the result variables to the caller:
|
||||
foreach(arg_name ${_singleArgNames} ${_multiArgNames} ${_optionNames})
|
||||
set(${prefix}_${arg_name} ${${prefix}_${arg_name}} PARENT_SCOPE)
|
||||
endforeach(arg_name)
|
||||
set(${prefix}_UNPARSED_ARGUMENTS ${${prefix}_UNPARSED_ARGUMENTS} PARENT_SCOPE)
|
||||
|
||||
endfunction(CMAKE_PARSE_ARGUMENTS _options _singleArgs _multiArgs)
|
122
cmake/Modules/FindGFLAGS.cmake
Normal file
122
cmake/Modules/FindGFLAGS.cmake
Normal file
@ -0,0 +1,122 @@
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
# GNSS-SDR is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# GNSS-SDR is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# - Try to find GFlags
|
||||
#
|
||||
# The following CMake and environment variables are optionally searched
|
||||
# for defaults:
|
||||
# GFLAGS_ROOT: Base directory where all GFlags components are found
|
||||
#
|
||||
# The following are set after configuration is done:
|
||||
# GFlags_FOUND
|
||||
# GFlags_INCLUDE_DIRS
|
||||
# GFlags_LIBS
|
||||
# GFlags_LIBRARY_DIRS
|
||||
#
|
||||
# Provides the following imported target:
|
||||
# Gflags::gflags
|
||||
#
|
||||
|
||||
if(APPLE)
|
||||
find_path(GFlags_ROOT_DIR
|
||||
libgflags.dylib
|
||||
PATHS
|
||||
/opt/local/lib
|
||||
/usr/local/lib
|
||||
${GFLAGS_ROOT}/lib
|
||||
$ENV{GFLAGS_ROOT}/lib
|
||||
)
|
||||
else()
|
||||
find_path(GFlags_ROOT_DIR
|
||||
libgflags.so
|
||||
HINTS
|
||||
/usr/local/lib
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
/usr/lib/i386-linux-gnu
|
||||
/usr/lib/arm-linux-gnueabihf
|
||||
/usr/lib/arm-linux-gnueabi
|
||||
/usr/lib/aarch64-linux-gnu
|
||||
/usr/lib/mipsel-linux-gnu
|
||||
/usr/lib/mips-linux-gnu
|
||||
/usr/lib/mips64el-linux-gnuabi64
|
||||
/usr/lib/powerpc-linux-gnu
|
||||
/usr/lib/powerpc64-linux-gnu
|
||||
/usr/lib/powerpc64le-linux-gnu
|
||||
/usr/lib/powerpc-linux-gnuspe
|
||||
/usr/lib/hppa-linux-gnu
|
||||
/usr/lib/s390x-linux-gnu
|
||||
/usr/lib/i386-gnu
|
||||
/usr/lib/hppa-linux-gnu
|
||||
/usr/lib/x86_64-kfreebsd-gnu
|
||||
/usr/lib/i386-kfreebsd-gnu
|
||||
/usr/lib/m68k-linux-gnu
|
||||
/usr/lib/sh4-linux-gnu
|
||||
/usr/lib/sparc64-linux-gnu
|
||||
/usr/lib/x86_64-linux-gnux32
|
||||
/usr/lib/alpha-linux-gnu
|
||||
/usr/lib64
|
||||
/usr/lib
|
||||
${GFLAGS_ROOT}/lib
|
||||
$ENV{GFLAGS_ROOT}/lib
|
||||
${GFLAGS_ROOT}/lib64
|
||||
$ENV{GFLAGS_ROOT}/lib64
|
||||
)
|
||||
endif()
|
||||
|
||||
if(GFlags_ROOT_DIR)
|
||||
# We are testing only a couple of files in the include directories
|
||||
find_path(GFlags_INCLUDE_DIRS
|
||||
gflags/gflags.h
|
||||
HINTS
|
||||
/opt/local/include
|
||||
/usr/local/include
|
||||
/usr/include
|
||||
${GFlags_ROOT_DIR}/src
|
||||
${GFLAGS_ROOT}/include
|
||||
$ENV{GFLAGS_ROOT}/include
|
||||
)
|
||||
|
||||
# Find the libraries
|
||||
set(GFlags_LIBRARY_DIRS ${GFlags_ROOT_DIR})
|
||||
|
||||
find_library(GFlags_lib gflags ${GFlags_LIBRARY_DIRS})
|
||||
if(EXISTS ${GFlags_INCLUDE_DIRS}/gflags/gflags_gflags.h)
|
||||
set(GFLAGS_GREATER_20 TRUE)
|
||||
else()
|
||||
set(GFLAGS_GREATER_20 FALSE)
|
||||
endif()
|
||||
message(STATUS "gflags library found at ${GFlags_lib}")
|
||||
set(GFlags_LIBS ${GFlags_lib})
|
||||
set(GFlags_FOUND true)
|
||||
mark_as_advanced(GFlags_INCLUDE_DIRS)
|
||||
else()
|
||||
message(STATUS "Cannot find gflags")
|
||||
set(GFlags_FOUND false)
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(GFLAGS DEFAULT_MSG GFlags_LIBS GFlags_INCLUDE_DIRS)
|
||||
|
||||
if(GFLAGS_FOUND AND NOT TARGET Gflags::gflags)
|
||||
add_library(Gflags::gflags SHARED IMPORTED)
|
||||
set_target_properties(Gflags::gflags PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GFlags_LIBS}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GFlags_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${GFlags_LIBS}"
|
||||
)
|
||||
endif()
|
@ -15,126 +15,136 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
find_library(GFORTRAN NAMES gfortran
|
||||
PATHS /usr/lib
|
||||
/usr/lib64
|
||||
/usr/local/lib
|
||||
/usr/local/lib/i386
|
||||
/usr/lib/gcc/x86_64-linux-gnu
|
||||
/usr/lib/gcc/i686-linux-gnu
|
||||
/usr/lib/gcc/i386-linux-gnu
|
||||
/usr/lib/gcc/x86_64-linux-gnu/4.6 # Ubuntu 12.04
|
||||
/usr/lib/gcc/i686-linux-gnu/4.6
|
||||
/usr/lib/gcc/x86_64-linux-gnu/4.7
|
||||
/usr/lib/gcc/i686-linux-gnu/4.7
|
||||
/usr/lib/gcc/x86_64-linux-gnu/4.8
|
||||
/usr/lib/gcc/i686-linux-gnu/4.8
|
||||
/usr/lib/gcc/x86_64-linux-gnu/4.9
|
||||
/usr/lib/gcc/i686-linux-gnu/4.9
|
||||
/usr/lib/gcc/x86_64-redhat-linux/4.7.2 # Fedora 18
|
||||
/usr/lib/gcc/i686-redhat-linux/4.7.2
|
||||
/usr/lib/gcc/x86_64-redhat-linux/4.8.1 # Fedora 19
|
||||
/usr/lib/gcc/x86_64-redhat-linux/4.8.3 # Fedora 20
|
||||
/usr/lib/gcc/x86_64-redhat-linux/4.9.1 # Fedora 21
|
||||
/usr/lib/gcc/i686-redhat-linux/4.8.1
|
||||
/usr/lib/gcc/i686-redhat-linux/4.8.3
|
||||
/usr/lib/gcc/i686-redhat-linux/4.9.1
|
||||
/usr/lib/gcc/x86_64-redhat-linux/4.4.4 # CentOS 6
|
||||
/usr/lib/gcc/i686-redhat-linux/4.4.4
|
||||
/usr/lib/gcc/x86_64-redhat-linux/4.8.2
|
||||
/usr/lib/gcc/i686-redhat-linux/4.8.2
|
||||
/usr/lib/gcc/x86_64-redhat-linux/7
|
||||
/usr/lib/gcc/i686-redhat-linux/7
|
||||
/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/7
|
||||
/usr/lib/gcc/aarch64-redhat-linux/7
|
||||
/usr/lib/gcc/i586-suse-linux/4.8 # OpenSUSE 13.1
|
||||
/usr/lib/gcc/i586-suse-linux/4.9
|
||||
/usr/lib/gcc/x86_64-suse-linux/4.8
|
||||
/usr/lib/gcc/x86_64-suse-linux/4.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/arm-linux-gnueabi
|
||||
/usr/lib/arm-linux-gnueabihf
|
||||
/usr/lib/aarch64-linux-gnu
|
||||
/usr/lib/i386-gnu
|
||||
/usr/lib/x86_64-kfreebsd-gnu
|
||||
/usr/lib/i386-kfreebsd-gnu
|
||||
/usr/lib/mips-linux-gnu
|
||||
/usr/lib/mips64el-linux-gnuabi64
|
||||
/usr/lib/mipsel-linux-gnu
|
||||
/usr/lib/powerpc-linux-gnu
|
||||
/usr/lib/powerpc64-linux-gnu
|
||||
/usr/lib/powerpc64le-linux-gnu
|
||||
/usr/lib/s390x-linux-gnu
|
||||
/usr/lib/sh4-linux-gnu
|
||||
/usr/lib/sparc64-linux-gnu
|
||||
/usr/lib/x86_64-linux-gnux32
|
||||
/usr/lib/alpha-linux-gnu
|
||||
)
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GFORTRAN DEFAULT_MSG GFORTRAN)
|
||||
find_library(GFORTRAN NAMES gfortran
|
||||
PATHS /usr/lib
|
||||
/usr/lib64
|
||||
/usr/local/lib
|
||||
/usr/local/lib/i386
|
||||
/usr/lib/gcc/x86_64-linux-gnu
|
||||
/usr/lib/gcc/i686-linux-gnu
|
||||
/usr/lib/gcc/i386-linux-gnu
|
||||
/usr/lib/gcc/x86_64-linux-gnu/4.6 # Ubuntu 12.04
|
||||
/usr/lib/gcc/i686-linux-gnu/4.6
|
||||
/usr/lib/gcc/x86_64-linux-gnu/4.7
|
||||
/usr/lib/gcc/i686-linux-gnu/4.7
|
||||
/usr/lib/gcc/x86_64-linux-gnu/4.8
|
||||
/usr/lib/gcc/i686-linux-gnu/4.8
|
||||
/usr/lib/gcc/x86_64-linux-gnu/4.9
|
||||
/usr/lib/gcc/i686-linux-gnu/4.9
|
||||
/usr/lib/gcc/x86_64-redhat-linux/4.7.2 # Fedora 18
|
||||
/usr/lib/gcc/i686-redhat-linux/4.7.2
|
||||
/usr/lib/gcc/x86_64-redhat-linux/4.8.1 # Fedora 19
|
||||
/usr/lib/gcc/x86_64-redhat-linux/4.8.3 # Fedora 20
|
||||
/usr/lib/gcc/x86_64-redhat-linux/4.9.1 # Fedora 21
|
||||
/usr/lib/gcc/i686-redhat-linux/4.8.1
|
||||
/usr/lib/gcc/i686-redhat-linux/4.8.3
|
||||
/usr/lib/gcc/i686-redhat-linux/4.9.1
|
||||
/usr/lib/gcc/x86_64-redhat-linux/4.4.4 # CentOS 6
|
||||
/usr/lib/gcc/i686-redhat-linux/4.4.4
|
||||
/usr/lib/gcc/x86_64-redhat-linux/4.8.2
|
||||
/usr/lib/gcc/i686-redhat-linux/4.8.2
|
||||
/usr/lib/gcc/x86_64-redhat-linux/7
|
||||
/usr/lib/gcc/i686-redhat-linux/7
|
||||
/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/7
|
||||
/usr/lib/gcc/aarch64-redhat-linux/7
|
||||
/usr/lib/gcc/i586-suse-linux/4.8 # OpenSUSE 13.1
|
||||
/usr/lib/gcc/i586-suse-linux/4.9
|
||||
/usr/lib/gcc/x86_64-suse-linux/4.8
|
||||
/usr/lib/gcc/x86_64-suse-linux/4.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/arm-linux-gnueabi
|
||||
/usr/lib/arm-linux-gnueabihf
|
||||
/usr/lib/aarch64-linux-gnu
|
||||
/usr/lib/i386-gnu
|
||||
/usr/lib/x86_64-kfreebsd-gnu
|
||||
/usr/lib/i386-kfreebsd-gnu
|
||||
/usr/lib/mips-linux-gnu
|
||||
/usr/lib/mips64el-linux-gnuabi64
|
||||
/usr/lib/mipsel-linux-gnu
|
||||
/usr/lib/powerpc-linux-gnu
|
||||
/usr/lib/powerpc64-linux-gnu
|
||||
/usr/lib/powerpc64le-linux-gnu
|
||||
/usr/lib/s390x-linux-gnu
|
||||
/usr/lib/sh4-linux-gnu
|
||||
/usr/lib/sparc64-linux-gnu
|
||||
/usr/lib/x86_64-linux-gnux32
|
||||
/usr/lib/alpha-linux-gnu
|
||||
/usr/lib/gcc/x86_64-linux-gnu/8 # libgfortran8
|
||||
/usr/lib/gcc/aarch64-linux-gnu/8
|
||||
/usr/lib/gcc/arm-linux-gnueabihf/8
|
||||
/usr/lib/gcc/i686-linux-gnu/8
|
||||
/usr/lib/gcc/powerpc64le-linux-gnu/8
|
||||
/usr/lib/gcc/s390x-linux-gnu/8
|
||||
/usr/lib/gcc/alpha-linux-gnu/8
|
||||
${GFORTRAN_ROOT}/lib
|
||||
$ENV{GFORTRAN_ROOT}/lib
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(GFORTRAN DEFAULT_MSG GFORTRAN)
|
||||
|
@ -1,102 +0,0 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
# GNSS-SDR is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# GNSS-SDR is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# - Try to find GFlags
|
||||
#
|
||||
# The following variables are optionally searched for defaults
|
||||
# GFlags_ROOT_DIR: Base directory where all GFlags components are found
|
||||
#
|
||||
# The following are set after configuration is done:
|
||||
# GFlags_FOUND
|
||||
# GFlags_INCLUDE_DIRS
|
||||
# GFlags_LIBS
|
||||
# GFlags_LIBRARY_DIRS
|
||||
|
||||
cmake_minimum_required(VERSION 2.6)
|
||||
|
||||
if(APPLE)
|
||||
FIND_PATH(GFlags_ROOT_DIR
|
||||
libgflags.dylib
|
||||
PATHS
|
||||
/opt/local/lib
|
||||
/usr/local/lib
|
||||
)
|
||||
else(APPLE)
|
||||
FIND_PATH(GFlags_ROOT_DIR
|
||||
libgflags.so
|
||||
HINTS
|
||||
/usr/local/lib
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
/usr/lib/i386-linux-gnu
|
||||
/usr/lib/arm-linux-gnueabihf
|
||||
/usr/lib/arm-linux-gnueabi
|
||||
/usr/lib/aarch64-linux-gnu
|
||||
/usr/lib/mipsel-linux-gnu
|
||||
/usr/lib/mips-linux-gnu
|
||||
/usr/lib/mips64el-linux-gnuabi64
|
||||
/usr/lib/powerpc-linux-gnu
|
||||
/usr/lib/powerpc64-linux-gnu
|
||||
/usr/lib/powerpc64le-linux-gnu
|
||||
/usr/lib/powerpc-linux-gnuspe
|
||||
/usr/lib/hppa-linux-gnu
|
||||
/usr/lib/s390x-linux-gnu
|
||||
/usr/lib/i386-gnu
|
||||
/usr/lib/hppa-linux-gnu
|
||||
/usr/lib/x86_64-kfreebsd-gnu
|
||||
/usr/lib/i386-kfreebsd-gnu
|
||||
/usr/lib/m68k-linux-gnu
|
||||
/usr/lib/sh4-linux-gnu
|
||||
/usr/lib/sparc64-linux-gnu
|
||||
/usr/lib/x86_64-linux-gnux32
|
||||
/usr/lib/alpha-linux-gnu
|
||||
/usr/lib64
|
||||
/usr/lib
|
||||
)
|
||||
endif(APPLE)
|
||||
|
||||
IF(GFlags_ROOT_DIR)
|
||||
# We are testing only a couple of files in the include directories
|
||||
FIND_PATH(GFlags_INCLUDE_DIRS
|
||||
gflags/gflags.h
|
||||
HINTS
|
||||
/opt/local/include
|
||||
/usr/local/include
|
||||
/usr/include
|
||||
${GFlags_ROOT_DIR}/src
|
||||
)
|
||||
|
||||
# Find the libraries
|
||||
SET(GFlags_LIBRARY_DIRS ${GFlags_ROOT_DIR})
|
||||
|
||||
FIND_LIBRARY(GFlags_lib gflags ${GFlags_LIBRARY_DIRS})
|
||||
if(EXISTS ${GFlags_INCLUDE_DIRS}/gflags/gflags_gflags.h)
|
||||
set(GFLAGS_GREATER_20 TRUE)
|
||||
else(EXISTS ${GFlags_INCLUDE_DIRS}/gflags/gflags_gflags.h)
|
||||
set(GFLAGS_GREATER_20 FALSE)
|
||||
endif(EXISTS ${GFlags_INCLUDE_DIRS}/gflags/gflags_gflags.h)
|
||||
# set up include and link directory
|
||||
include_directories(${GFlags_INCLUDE_DIRS})
|
||||
link_directories(${GFlags_LIBRARY_DIRS})
|
||||
message(STATUS "gflags library found at ${GFlags_lib}")
|
||||
SET(GFlags_LIBS ${GFlags_lib})
|
||||
SET(GFlags_FOUND true)
|
||||
MARK_AS_ADVANCED(GFlags_INCLUDE_DIRS)
|
||||
ELSE(GFlags_ROOT_DIR)
|
||||
MESSAGE(STATUS "Cannot find gflags")
|
||||
SET(GFlags_FOUND false)
|
||||
ENDIF(GFlags_ROOT_DIR)
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -27,21 +27,24 @@
|
||||
#
|
||||
# GLOG_ROOT - Can be set to Glog install path or Windows build path
|
||||
#
|
||||
# Provides the following imported target:
|
||||
# Glog::glog
|
||||
#
|
||||
|
||||
if (NOT DEFINED GLOG_ROOT)
|
||||
set (GLOG_ROOT /usr /usr/local)
|
||||
endif (NOT DEFINED GLOG_ROOT)
|
||||
if(NOT DEFINED GLOG_ROOT)
|
||||
set(GLOG_ROOT /usr /usr/local)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
set(LIB_PATHS ${GLOG_ROOT} ${GLOG_ROOT}/Release)
|
||||
else(MSVC)
|
||||
set (LIB_PATHS ${GLOG_ROOT} ${GLOG_ROOT}/lib)
|
||||
endif(MSVC)
|
||||
set(LIB_PATHS ${GLOG_ROOT} ${GLOG_ROOT}/Release)
|
||||
else()
|
||||
set(LIB_PATHS ${GLOG_ROOT} ${GLOG_ROOT}/lib)
|
||||
endif()
|
||||
|
||||
macro(_FIND_GLOG_LIBRARIES _var)
|
||||
find_library(${_var}
|
||||
NAMES ${ARGN}
|
||||
PATHS ${LIB_PATHS}
|
||||
find_library(${_var}
|
||||
NAMES ${ARGN}
|
||||
PATHS ${LIB_PATHS}
|
||||
/usr/local/lib
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
/usr/lib/i386-linux-gnu
|
||||
@ -68,48 +71,52 @@ macro(_FIND_GLOG_LIBRARIES _var)
|
||||
/usr/lib/alpha-linux-gnu
|
||||
/usr/lib64
|
||||
/usr/lib
|
||||
${GLOG_ROOT}/lib
|
||||
$ENV{GLOG_ROOT}/lib
|
||||
${GLOG_ROOT}/lib64
|
||||
$ENV{GLOG_ROOT}/lib64
|
||||
PATH_SUFFIXES lib
|
||||
)
|
||||
mark_as_advanced(${_var})
|
||||
mark_as_advanced(${_var})
|
||||
endmacro()
|
||||
|
||||
macro(_GLOG_APPEND_LIBRARIES _list _release)
|
||||
set(_debug ${_release}_DEBUG)
|
||||
if(${_debug})
|
||||
set(${_list} ${${_list}} optimized ${${_release}} debug ${${_debug}})
|
||||
set(${_list} ${${_list}} optimized ${${_release}} debug ${${_debug}})
|
||||
else()
|
||||
set(${_list} ${${_list}} ${${_release}})
|
||||
set(${_list} ${${_list}} ${${_release}})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
if(MSVC)
|
||||
find_path(GLOG_INCLUDE_DIR NAMES raw_logging.h
|
||||
PATHS
|
||||
${GLOG_ROOT}/src/windows
|
||||
${GLOG_ROOT}/src/windows/glog
|
||||
)
|
||||
else(MSVC)
|
||||
# Linux/OS X builds
|
||||
find_path(GLOG_INCLUDE_DIR NAMES raw_logging.h
|
||||
PATHS
|
||||
${GLOG_ROOT}/include/glog
|
||||
/usr/include/glog
|
||||
/opt/local/include/glog # default location in Macports
|
||||
)
|
||||
endif(MSVC)
|
||||
find_path(GLOG_INCLUDE_DIR NAMES raw_logging.h
|
||||
PATHS
|
||||
${GLOG_ROOT}/src/windows
|
||||
${GLOG_ROOT}/src/windows/glog
|
||||
)
|
||||
else()
|
||||
# Linux/OS X builds
|
||||
find_path(GLOG_INCLUDE_DIR NAMES raw_logging.h
|
||||
PATHS
|
||||
${GLOG_ROOT}/include/glog
|
||||
/usr/include/glog
|
||||
/opt/local/include/glog # default location in Macports
|
||||
)
|
||||
endif()
|
||||
|
||||
# Find the libraries
|
||||
if(MSVC)
|
||||
_FIND_GLOG_LIBRARIES(GLOG_LIBRARIES libglog.lib)
|
||||
else(MSVC)
|
||||
# Linux/OS X builds
|
||||
if(UNIX)
|
||||
_FIND_GLOG_LIBRARIES(GLOG_LIBRARIES libglog.so)
|
||||
endif(UNIX)
|
||||
if(APPLE)
|
||||
_FIND_GLOG_LIBRARIES(GLOG_LIBRARIES libglog.dylib)
|
||||
endif(APPLE)
|
||||
endif(MSVC)
|
||||
_find_glog_libraries(GLOG_LIBRARIES libglog.lib)
|
||||
else()
|
||||
# Linux/OS X builds
|
||||
if(UNIX)
|
||||
_find_glog_libraries(GLOG_LIBRARIES libglog.so)
|
||||
endif()
|
||||
if(APPLE)
|
||||
_find_glog_libraries(GLOG_LIBRARIES libglog.dylib)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(GLOG_FOUND)
|
||||
message(STATUS "glog library found at ${GLOG_LIBRARIES}")
|
||||
@ -117,21 +124,26 @@ endif()
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set GLOG_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include("${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake")
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Glog DEFAULT_MSG
|
||||
GLOG_LIBRARIES)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(GLOG DEFAULT_MSG GLOG_LIBRARIES)
|
||||
|
||||
if(MSVC)
|
||||
string(REGEX REPLACE "/glog$" "" VAR_WITHOUT ${GLOG_INCLUDE_DIR})
|
||||
string(REGEX REPLACE "/windows$" "" VAR_WITHOUT ${VAR_WITHOUT})
|
||||
set(GLOG_INCLUDE_DIRS ${GLOG_INCLUDE_DIRS} "${VAR_WITHOUT}")
|
||||
string(REGEX REPLACE "/libglog.lib" "" GLOG_LIBRARIES_DIR ${GLOG_LIBRARIES})
|
||||
else(MSVC)
|
||||
# Linux/OS X builds
|
||||
set(GLOG_INCLUDE_DIRS ${GLOG_INCLUDE_DIR})
|
||||
string(REGEX REPLACE "/libglog.so" "" GLOG_LIBRARIES_DIR ${GLOG_LIBRARIES})
|
||||
endif(MSVC)
|
||||
|
||||
if(GLOG_FOUND)
|
||||
# _GLOG_APPEND_LIBRARIES(GLOG GLOG_LIBRARIES)
|
||||
string(REGEX REPLACE "/glog$" "" VAR_WITHOUT ${GLOG_INCLUDE_DIR})
|
||||
string(REGEX REPLACE "/windows$" "" VAR_WITHOUT ${VAR_WITHOUT})
|
||||
set(GLOG_INCLUDE_DIRS ${GLOG_INCLUDE_DIRS} "${VAR_WITHOUT}")
|
||||
string(REGEX REPLACE "/libglog.lib" "" GLOG_LIBRARIES_DIR ${GLOG_LIBRARIES})
|
||||
else()
|
||||
# Linux/OS X builds
|
||||
set(GLOG_INCLUDE_DIRS ${GLOG_INCLUDE_DIR})
|
||||
string(REGEX REPLACE "/libglog.so" "" GLOG_LIBRARIES_DIR ${GLOG_LIBRARIES})
|
||||
endif()
|
||||
|
||||
if(GLOG_FOUND AND NOT TARGET Glog::glog)
|
||||
add_library(Glog::glog SHARED IMPORTED)
|
||||
set_target_properties(Glog::glog PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GLOG_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GLOG_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${GLOG_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
30
cmake/Modules/FindGNSSSIMULATOR.cmake
Normal file
30
cmake/Modules/FindGNSSSIMULATOR.cmake
Normal file
@ -0,0 +1,30 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
# GNSS-SDR is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# GNSS-SDR is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
find_program(SW_GENERATOR_BIN gnss_sim
|
||||
PATHS /usr/bin
|
||||
/usr/local/bin
|
||||
/opt/local/bin
|
||||
${CMAKE_INSTALL_PREFIX}/bin
|
||||
${GNSSSIMULATOR_ROOT}/bin
|
||||
$ENV{GNSSSIMULATOR_ROOT}/bin
|
||||
PATH_SUFFIXES bin
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(GNSSSIMULATOR DEFAULT_MSG SW_GENERATOR_BIN)
|
||||
mark_as_advanced(SW_GENERATOR_BIN)
|
@ -19,15 +19,14 @@
|
||||
# Find GNU Radio
|
||||
########################################################################
|
||||
|
||||
INCLUDE(FindPkgConfig)
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
include(FindPkgConfig)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
# if GR_REQUIRED_COMPONENTS is not defined, it will be set to the following list
|
||||
if(NOT GR_REQUIRED_COMPONENTS)
|
||||
set(GR_REQUIRED_COMPONENTS RUNTIME ANALOG BLOCKS DIGITAL FFT FILTER PMT FEC TRELLIS UHD)
|
||||
endif()
|
||||
|
||||
|
||||
# Allows us to use all .cmake files in this directory
|
||||
list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
@ -35,18 +34,17 @@ list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_LIST_DIR})
|
||||
set(GNURADIO_ALL_LIBRARIES "")
|
||||
set(GNURADIO_ALL_INCLUDE_DIRS "")
|
||||
|
||||
MACRO(LIST_CONTAINS var value)
|
||||
SET(${var})
|
||||
FOREACH(value2 ${ARGN})
|
||||
IF (${value} STREQUAL ${value2})
|
||||
SET(${var} TRUE)
|
||||
ENDIF(${value} STREQUAL ${value2})
|
||||
ENDFOREACH(value2)
|
||||
ENDMACRO(LIST_CONTAINS)
|
||||
macro(LIST_CONTAINS var value)
|
||||
set(${var})
|
||||
foreach(value2 ${ARGN})
|
||||
if(${value} STREQUAL ${value2})
|
||||
set(${var} TRUE)
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE)
|
||||
|
||||
LIST_CONTAINS(REQUIRED_MODULE ${EXTVAR} ${GR_REQUIRED_COMPONENTS})
|
||||
list_contains(REQUIRED_MODULE ${EXTVAR} ${GR_REQUIRED_COMPONENTS})
|
||||
if(NOT REQUIRED_MODULE)
|
||||
#message("Ignoring GNU Radio Module ${EXTVAR}")
|
||||
return()
|
||||
@ -55,7 +53,7 @@ function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE)
|
||||
message(STATUS "Checking for GNU Radio Module: ${EXTVAR}")
|
||||
|
||||
# check for .pc hints
|
||||
PKG_CHECK_MODULES(PC_GNURADIO_${EXTVAR} ${PCNAME})
|
||||
pkg_check_modules(PC_GNURADIO_${EXTVAR} ${PCNAME})
|
||||
|
||||
if(NOT PC_GNURADIO_${EXTVAR}_FOUND)
|
||||
set(PC_GNURADIO_${EXTVAR}_LIBRARIES ${LIBFILE})
|
||||
@ -67,29 +65,29 @@ function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE)
|
||||
set(PC_LIBDIR ${PC_GNURADIO_${EXTVAR}_LIBDIR})
|
||||
|
||||
# look for include files
|
||||
FIND_PATH(
|
||||
${INCVAR_NAME}
|
||||
find_path(${INCVAR_NAME}
|
||||
NAMES ${INCFILE}
|
||||
HINTS $ENV{GNURADIO_RUNTIME_DIR}/include
|
||||
${PC_INCDIR}
|
||||
${CMAKE_INSTALL_PREFIX}/include
|
||||
${GNURADIO_INSTALL_PREFIX}/include
|
||||
${PC_INCDIR}
|
||||
${CMAKE_INSTALL_PREFIX}/include
|
||||
${GNURADIO_INSTALL_PREFIX}/include
|
||||
PATHS /usr/local/include
|
||||
/usr/include
|
||||
${GNURADIO_INSTALL_PREFIX}/include
|
||||
${GNURADIO_ROOT}/include
|
||||
$ENV{GNURADIO_ROOT}/include
|
||||
)
|
||||
|
||||
# look for libs
|
||||
foreach(libname ${PC_GNURADIO_${EXTVAR}_LIBRARIES})
|
||||
FIND_LIBRARY(
|
||||
${LIBVAR_NAME}_${libname}
|
||||
find_library(${LIBVAR_NAME}_${libname}
|
||||
NAMES ${libname} ${libname}-${PC_GNURADIO_RUNTIME_VERSION}
|
||||
HINTS $ENV{GNURADIO_RUNTIME_DIR}/lib
|
||||
${PC_LIBDIR}
|
||||
${CMAKE_INSTALL_PREFIX}/lib/
|
||||
${CMAKE_INSTALL_PREFIX}/lib64/
|
||||
${GNURADIO_INSTALL_PREFIX}/lib/
|
||||
${GNURADIO_INSTALL_PREFIX}/lib64
|
||||
${PC_LIBDIR}
|
||||
${CMAKE_INSTALL_PREFIX}/lib
|
||||
${CMAKE_INSTALL_PREFIX}/lib64
|
||||
${GNURADIO_INSTALL_PREFIX}/lib
|
||||
${GNURADIO_INSTALL_PREFIX}/lib64
|
||||
PATHS /usr/local/lib
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
/usr/lib/i386-linux-gnu
|
||||
@ -117,9 +115,13 @@ function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE)
|
||||
/usr/lib64
|
||||
/usr/lib
|
||||
${GNURADIO_INSTALL_PREFIX}/lib
|
||||
${GNURADIO_ROOT}/lib
|
||||
$ENV{GNURADIO_ROOT}/lib
|
||||
${GNURADIO_ROOT}/lib64
|
||||
$ENV{GNURADIO_ROOT}/lib64
|
||||
)
|
||||
list(APPEND ${LIBVAR_NAME} ${${LIBVAR_NAME}_${libname}})
|
||||
endforeach(libname)
|
||||
list(APPEND ${LIBVAR_NAME} ${${LIBVAR_NAME}_${libname}})
|
||||
endforeach()
|
||||
|
||||
set(${LIBVAR_NAME} ${${LIBVAR_NAME}} PARENT_SCOPE)
|
||||
|
||||
@ -131,43 +133,42 @@ function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE)
|
||||
set(GNURADIO_ALL_INCLUDE_DIRS ${GNURADIO_ALL_INCLUDE_DIRS} ${GNURADIO_${EXTVAR}_INCLUDE_DIRS} PARENT_SCOPE)
|
||||
set(GNURADIO_ALL_LIBRARIES ${GNURADIO_ALL_LIBRARIES} ${GNURADIO_${EXTVAR}_LIBRARIES} PARENT_SCOPE)
|
||||
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GNURADIO_${EXTVAR} DEFAULT_MSG GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS)
|
||||
find_package_handle_standard_args(GNURADIO_${EXTVAR} DEFAULT_MSG GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS)
|
||||
message(STATUS "GNURADIO_${EXTVAR}_FOUND = ${GNURADIO_${EXTVAR}_FOUND}")
|
||||
set(GNURADIO_${EXTVAR}_FOUND ${GNURADIO_${EXTVAR}_FOUND} PARENT_SCOPE)
|
||||
|
||||
# generate an error if the module is missing
|
||||
if(NOT GNURADIO_${EXTVAR}_FOUND)
|
||||
message(STATUS "Required GNU Radio Component: ${EXTVAR} missing!")
|
||||
message(STATUS "Required GNU Radio Component: ${EXTVAR} missing!")
|
||||
endif()
|
||||
|
||||
MARK_AS_ADVANCED(GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS)
|
||||
|
||||
mark_as_advanced(GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS)
|
||||
endfunction()
|
||||
|
||||
GR_MODULE(RUNTIME gnuradio-runtime gnuradio/top_block.h gnuradio-runtime)
|
||||
GR_MODULE(ANALOG gnuradio-analog gnuradio/analog/api.h gnuradio-analog)
|
||||
GR_MODULE(AUDIO gnuradio-audio gnuradio/audio/api.h gnuradio-audio)
|
||||
GR_MODULE(BLOCKS gnuradio-blocks gnuradio/blocks/api.h gnuradio-blocks)
|
||||
GR_MODULE(CHANNELS gnuradio-channels gnuradio/channels/api.h gnuradio-channels)
|
||||
GR_MODULE(DIGITAL gnuradio-digital gnuradio/digital/api.h gnuradio-digital)
|
||||
GR_MODULE(FCD gnuradio-fcd gnuradio/fcd_api.h gnuradio-fcd)
|
||||
GR_MODULE(FEC gnuradio-fec gnuradio/fec/api.h gnuradio-fec)
|
||||
GR_MODULE(FFT gnuradio-fft gnuradio/fft/api.h gnuradio-fft)
|
||||
GR_MODULE(FILTER gnuradio-filter gnuradio/filter/api.h gnuradio-filter)
|
||||
GR_MODULE(NOAA gnuradio-noaa gnuradio/noaa/api.h gnuradio-noaa)
|
||||
GR_MODULE(PAGER gnuradio-pager gnuradio/pager/api.h gnuradio-pager)
|
||||
GR_MODULE(QTGUI gnuradio-qtgui gnuradio/qtgui/api.h gnuradio-qtgui)
|
||||
GR_MODULE(TRELLIS gnuradio-trellis gnuradio/trellis/api.h gnuradio-trellis)
|
||||
GR_MODULE(UHD gnuradio-uhd gnuradio/uhd/api.h gnuradio-uhd)
|
||||
GR_MODULE(VOCODER gnuradio-vocoder gnuradio/vocoder/api.h gnuradio-vocoder)
|
||||
GR_MODULE(WAVELET gnuradio-wavelet gnuradio/wavelet/api.h gnuradio-wavelet)
|
||||
GR_MODULE(WXGUI gnuradio-wxgui gnuradio/wxgui/api.h gnuradio-wxgui)
|
||||
GR_MODULE(PMT gnuradio-runtime pmt/pmt.h gnuradio-pmt)
|
||||
gr_module(RUNTIME gnuradio-runtime gnuradio/top_block.h gnuradio-runtime)
|
||||
gr_module(ANALOG gnuradio-analog gnuradio/analog/api.h gnuradio-analog)
|
||||
gr_module(AUDIO gnuradio-audio gnuradio/audio/api.h gnuradio-audio)
|
||||
gr_module(BLOCKS gnuradio-blocks gnuradio/blocks/api.h gnuradio-blocks)
|
||||
gr_module(CHANNELS gnuradio-channels gnuradio/channels/api.h gnuradio-channels)
|
||||
gr_module(DIGITAL gnuradio-digital gnuradio/digital/api.h gnuradio-digital)
|
||||
gr_module(FCD gnuradio-fcd gnuradio/fcd_api.h gnuradio-fcd)
|
||||
gr_module(FEC gnuradio-fec gnuradio/fec/api.h gnuradio-fec)
|
||||
gr_module(FFT gnuradio-fft gnuradio/fft/api.h gnuradio-fft)
|
||||
gr_module(FILTER gnuradio-filter gnuradio/filter/api.h gnuradio-filter)
|
||||
gr_module(NOAA gnuradio-noaa gnuradio/noaa/api.h gnuradio-noaa)
|
||||
gr_module(PAGER gnuradio-pager gnuradio/pager/api.h gnuradio-pager)
|
||||
gr_module(QTGUI gnuradio-qtgui gnuradio/qtgui/api.h gnuradio-qtgui)
|
||||
gr_module(TRELLIS gnuradio-trellis gnuradio/trellis/api.h gnuradio-trellis)
|
||||
gr_module(UHD gnuradio-uhd gnuradio/uhd/api.h gnuradio-uhd)
|
||||
gr_module(VOCODER gnuradio-vocoder gnuradio/vocoder/api.h gnuradio-vocoder)
|
||||
gr_module(WAVELET gnuradio-wavelet gnuradio/wavelet/api.h gnuradio-wavelet)
|
||||
gr_module(WXGUI gnuradio-wxgui gnuradio/wxgui/api.h gnuradio-wxgui)
|
||||
gr_module(PMT gnuradio-runtime pmt/pmt.h gnuradio-pmt)
|
||||
|
||||
list(REMOVE_DUPLICATES GNURADIO_ALL_INCLUDE_DIRS)
|
||||
list(REMOVE_DUPLICATES GNURADIO_ALL_LIBRARIES)
|
||||
|
||||
# Trick to find out that GNU Radio is >= 3.7.4 if pkgconfig is not present
|
||||
# Trick to find out that GNU Radio is >= 3.7.4 if pkgconfig is not present
|
||||
if(NOT PC_GNURADIO_RUNTIME_VERSION)
|
||||
find_file(GNURADIO_VERSION_GREATER_THAN_373
|
||||
NAMES gnuradio/blocks/tsb_vector_sink_f.h
|
||||
@ -177,21 +178,25 @@ if(NOT PC_GNURADIO_RUNTIME_VERSION)
|
||||
PATHS /usr/local/include
|
||||
/usr/include
|
||||
${GNURADIO_INSTALL_PREFIX}/include
|
||||
${GNURADIO_ROOT}/include
|
||||
$ENV{GNURADIO_ROOT}/include
|
||||
)
|
||||
if(GNURADIO_VERSION_GREATER_THAN_373)
|
||||
set(PC_GNURADIO_RUNTIME_VERSION "3.7.4+")
|
||||
endif(GNURADIO_VERSION_GREATER_THAN_373)
|
||||
if(GNURADIO_VERSION_GREATER_THAN_373)
|
||||
set(PC_GNURADIO_RUNTIME_VERSION "3.7.4+")
|
||||
endif()
|
||||
|
||||
find_file(GNURADIO_VERSION_GREATER_THAN_38
|
||||
NAMES gnuradio/filter/mmse_resampler_cc.h
|
||||
HINTS $ENV{GNURADIO_RUNTIME_DIR}/include
|
||||
${CMAKE_INSTALL_PREFIX}/include
|
||||
${GNURADIO_INSTALL_PREFIX}/include
|
||||
PATHS /usr/local/include
|
||||
/usr/include
|
||||
${GNURADIO_INSTALL_PREFIX}/include
|
||||
)
|
||||
if(GNURADIO_VERSION_GREATER_THAN_38)
|
||||
set(PC_GNURADIO_RUNTIME_VERSION "3.8.0+")
|
||||
endif(GNURADIO_VERSION_GREATER_THAN_38)
|
||||
endif(NOT PC_GNURADIO_RUNTIME_VERSION)
|
||||
find_file(GNURADIO_VERSION_GREATER_THAN_38
|
||||
NAMES gnuradio/filter/mmse_resampler_cc.h
|
||||
HINTS $ENV{GNURADIO_RUNTIME_DIR}/include
|
||||
${CMAKE_INSTALL_PREFIX}/include
|
||||
${GNURADIO_INSTALL_PREFIX}/include
|
||||
PATHS /usr/local/include
|
||||
/usr/include
|
||||
${GNURADIO_INSTALL_PREFIX}/include
|
||||
${GNURADIO_ROOT}/include
|
||||
$ENV{GNURADIO_ROOT}/include
|
||||
)
|
||||
if(GNURADIO_VERSION_GREATER_THAN_38)
|
||||
set(PC_GNURADIO_RUNTIME_VERSION "3.8.0+")
|
||||
endif()
|
||||
endif()
|
132
cmake/Modules/FindGPERFTOOLS.cmake
Normal file
132
cmake/Modules/FindGPERFTOOLS.cmake
Normal file
@ -0,0 +1,132 @@
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
# GNSS-SDR is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# GNSS-SDR is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# Tries to find Gperftools.
|
||||
#
|
||||
# Usage of this module as follows:
|
||||
#
|
||||
# find_package(GPERFTOOLS)
|
||||
#
|
||||
# Variables used by this module, they can change the default behaviour and need
|
||||
# to be set before calling find_package:
|
||||
#
|
||||
# GPERFTOOLS_ROOT Set this variable to the root installation of
|
||||
# Gperftools if the module has problems finding
|
||||
# the proper installation path.
|
||||
#
|
||||
# Variables defined by this module:
|
||||
#
|
||||
# GPERFTOOLS_FOUND System has Gperftools libs/headers
|
||||
# GPERFTOOLS_LIBRARIES The Gperftools libraries (tcmalloc & profiler)
|
||||
# GPERFTOOLS_INCLUDE_DIR The location of Gperftools headers
|
||||
#
|
||||
# Provides the following imported targets:
|
||||
# Gperftools::tcmalloc
|
||||
# Gperftools::profiler
|
||||
# Gperftools::gperftools
|
||||
#
|
||||
|
||||
find_library(GPERFTOOLS_TCMALLOC
|
||||
NAMES tcmalloc
|
||||
HINTS ${Gperftools_ROOT_DIR}/lib
|
||||
${GPERFTOOLS_ROOT}/lib
|
||||
$ENV{GPERFTOOLS_ROOT}/lib
|
||||
${GPERFTOOLS_ROOT}/lib64
|
||||
$ENV{GPERFTOOLS_ROOT}/lib64
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
)
|
||||
|
||||
find_library(GPERFTOOLS_PROFILER
|
||||
NAMES profiler
|
||||
HINTS ${Gperftools_ROOT_DIR}/lib
|
||||
${GPERFTOOLS_ROOT}/lib
|
||||
$ENV{GPERFTOOLS_ROOT}/lib
|
||||
${GPERFTOOLS_ROOT}/lib64
|
||||
$ENV{GPERFTOOLS_ROOT}/lib64
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
)
|
||||
|
||||
find_library(GPERFTOOLS_TCMALLOC_AND_PROFILER
|
||||
NAMES tcmalloc_and_profiler
|
||||
HINTS ${Gperftools_ROOT_DIR}/lib
|
||||
${GPERFTOOLS_ROOT}/lib
|
||||
$ENV{GPERFTOOLS_ROOT}/lib
|
||||
${GPERFTOOLS_ROOT}/lib64
|
||||
$ENV{GPERFTOOLS_ROOT}/lib64
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
)
|
||||
|
||||
find_path(GPERFTOOLS_INCLUDE_DIR
|
||||
NAMES gperftools/heap-profiler.h
|
||||
HINTS ${Gperftools_ROOT_DIR}/include
|
||||
${GPERFTOOLS_ROOT}/include
|
||||
$ENV{GPERFTOOLS_ROOT}/include
|
||||
/usr/include
|
||||
)
|
||||
|
||||
set(GPERFTOOLS_LIBRARIES ${GPERFTOOLS_TCMALLOC_AND_PROFILER})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(
|
||||
GPERFTOOLS
|
||||
DEFAULT_MSG
|
||||
GPERFTOOLS_LIBRARIES
|
||||
GPERFTOOLS_INCLUDE_DIR
|
||||
GPERFTOOLS_TCMALLOC
|
||||
GPERFTOOLS_PROFILER
|
||||
|
||||
)
|
||||
|
||||
if(GPERFTOOLS_FOUND AND NOT TARGET Gperftools::tcmalloc)
|
||||
add_library(Gperftools::tcmalloc SHARED IMPORTED)
|
||||
set_target_properties(Gperftools::tcmalloc PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GPERFTOOLS_TCMALLOC}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GPERFTOOLS_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "${GPERFTOOLS_TCMALLOC}"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(GPERFTOOLS_FOUND AND NOT TARGET Gperftools::profiler)
|
||||
add_library(Gperftools::profiler SHARED IMPORTED)
|
||||
set_target_properties(Gperftools::profiler PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GPERFTOOLS_PROFILER}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GPERFTOOLS_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "${GPERFTOOLS_PROFILER}"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(GPERFTOOLS_FOUND AND NOT TARGET Gperftools::gperftools)
|
||||
add_library(Gperftools::gperftools SHARED IMPORTED)
|
||||
set_target_properties(Gperftools::gperftools PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GPERFTOOLS_TCMALLOC_AND_PROFILER}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GPERFTOOLS_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "${GPERFTOOLS_TCMALLOC_AND_PROFILER}"
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(
|
||||
GPERFTOOLS_TCMALLOC
|
||||
GPERFTOOLS_PROFILER
|
||||
GPERFTOOLS_TCMALLOC_AND_PROFILER
|
||||
GPERFTOOLS_LIBRARIES
|
||||
GPERFTOOLS_INCLUDE_DIR)
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -19,29 +19,43 @@
|
||||
# Find the native gpstk includes and library
|
||||
# This module defines
|
||||
# GPSTK_INCLUDE_DIR, where to find Rinex3ObsBase.hpp, etc.
|
||||
# GPSTK_LIBRARIES, libraries to link against to use GPSTK.
|
||||
# GPSTK_FOUND, If false, do not try to use GPSTK.
|
||||
# also defined, but not for general use are
|
||||
# GPSTK_LIBRARY, where to find the GPSTK library.
|
||||
|
||||
FIND_PATH(GPSTK_INCLUDE_DIR Rinex3ObsBase.hpp
|
||||
HINTS /usr/include/gpstk
|
||||
/usr/local/include/gpstk
|
||||
/opt/local/include/gpstk )
|
||||
find_path(GPSTK_INCLUDE_DIR gpstk/Rinex3ObsBase.hpp
|
||||
HINTS /usr/include
|
||||
/usr/local/include
|
||||
/opt/local/include
|
||||
${GPSTK_ROOT}/include
|
||||
$ENV{GPSTK_ROOT}/include
|
||||
)
|
||||
|
||||
SET(GPSTK_NAMES ${GPSTK_NAMES} gpstk libgpstk)
|
||||
FIND_LIBRARY(GPSTK_LIBRARY NAMES ${GPSTK_NAMES}
|
||||
HINTS /usr/lib
|
||||
/usr/local/lib
|
||||
/opt/local/lib )
|
||||
set(GPSTK_NAMES ${GPSTK_NAMES} gpstk libgpstk)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set GPSTK_FOUND to TRUE if
|
||||
include(GNUInstallDirs)
|
||||
|
||||
find_library(GPSTK_LIBRARY NAMES ${GPSTK_NAMES}
|
||||
HINTS /usr/lib
|
||||
/usr/local/lib
|
||||
/usr/${CMAKE_INSTALL_LIBDIR}
|
||||
/usr/local/${CMAKE_INSTALL_LIBDIR}
|
||||
/opt/local/lib
|
||||
${GPSTK_ROOT}/${CMAKE_INSTALL_LIBDIR}
|
||||
$ENV{GPSTK_ROOT}/${CMAKE_INSTALL_LIBDIR}
|
||||
)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set GPSTK_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GPSTK DEFAULT_MSG GPSTK_LIBRARY GPSTK_INCLUDE_DIR)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(GPSTK DEFAULT_MSG GPSTK_LIBRARY GPSTK_INCLUDE_DIR)
|
||||
mark_as_advanced(GPSTK_LIBRARY GPSTK_INCLUDE_DIR)
|
||||
|
||||
IF(GPSTK_FOUND)
|
||||
SET( GPSTK_LIBRARIES ${GPSTK_LIBRARY} )
|
||||
ENDIF(GPSTK_FOUND)
|
||||
|
||||
MARK_AS_ADVANCED(GPSTK_INCLUDE_DIR GPSTK_LIBRARY)
|
||||
if(GPSTK_FOUND AND NOT TARGET Gpstk::gpstk)
|
||||
add_library(Gpstk::gpstk SHARED IMPORTED)
|
||||
set_target_properties(Gpstk::gpstk PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GPSTK_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GPSTK_INCLUDE_DIR};${GPSTK_INCLUDE_DIR}/gpstk"
|
||||
INTERFACE_LINK_LIBRARIES "${GPSTK_LIBRARY}"
|
||||
)
|
||||
endif()
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -19,20 +19,22 @@
|
||||
# Find GR-DBFCTTC Module
|
||||
########################################################################
|
||||
|
||||
INCLUDE(FindPkgConfig)
|
||||
PKG_CHECK_MODULES(PC_GR_DBFCTTC gr-dbfcttc)
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(PC_GR_DBFCTTC gr-dbfcttc)
|
||||
|
||||
FIND_PATH(
|
||||
find_path(
|
||||
GR_DBFCTTC_INCLUDE_DIRS
|
||||
NAMES dbfcttc/api.h
|
||||
HINTS $ENV{GR_DBFCTTC_DIR}/include
|
||||
${PC_GR_DBFCTTC_INCLUDEDIR}
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/include
|
||||
/usr/include
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
${GRDBFCTTC_ROOT}/include
|
||||
$ENV{GRDBFCTTC_ROOT}/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(
|
||||
find_library(
|
||||
GR_DBFCTTC_LIBRARIES
|
||||
NAMES gnuradio-dbfcttc
|
||||
HINTS $ENV{GR_DBFCTTC_DIR}/lib
|
||||
@ -43,8 +45,23 @@ FIND_LIBRARY(
|
||||
/usr/lib64
|
||||
/usr/local/lib
|
||||
/usr/local/lib64
|
||||
${GRDBFCTTC_ROOT}/lib
|
||||
$ENV{GRDBFCTTC_ROOT}/lib
|
||||
${GRDBFCTTC_ROOT}/lib64
|
||||
$ENV{GRDBFCTTC_ROOT}/lib64
|
||||
)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GR_DBFCTTC DEFAULT_MSG GR_DBFCTTC_LIBRARIES GR_DBFCTTC_INCLUDE_DIRS)
|
||||
MARK_AS_ADVANCED(GR_DBFCTTC_LIBRARIES GR_DBFCTTC_INCLUDE_DIRS)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(GRDBFCTTC DEFAULT_MSG GR_DBFCTTC_LIBRARIES GR_DBFCTTC_INCLUDE_DIRS)
|
||||
|
||||
if(GRDBFCTTC_FOUND AND NOT TARGET Gnuradio::dbfcttc)
|
||||
add_library(Gnuradio::dbfcttc SHARED IMPORTED)
|
||||
set_target_properties(Gnuradio::dbfcttc PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GR_DBFCTTC_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GR_DBFCTTC_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${GR_DBFCTTC_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(GR_DBFCTTC_LIBRARIES GR_DBFCTTC_INCLUDE_DIRS)
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -19,10 +19,10 @@
|
||||
# Find GR-GN3S Module
|
||||
########################################################################
|
||||
|
||||
INCLUDE(FindPkgConfig)
|
||||
PKG_CHECK_MODULES(PC_GR_GN3S gr-gn3s)
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(PC_GR_GN3S gr-gn3s)
|
||||
|
||||
FIND_PATH(
|
||||
find_path(
|
||||
GR_GN3S_INCLUDE_DIRS
|
||||
NAMES gn3s/gn3s_api.h
|
||||
HINTS $ENV{GR_GN3S_DIR}/include
|
||||
@ -30,9 +30,11 @@ FIND_PATH(
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/include
|
||||
/usr/local/include
|
||||
/usr/include
|
||||
${GRGN3S_ROOT}/include
|
||||
$ENV{GRGN3S_ROOT}/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(
|
||||
find_library(
|
||||
GR_GN3S_LIBRARIES
|
||||
NAMES gr-gn3s
|
||||
HINTS $ENV{GR_GN3S_DIR}/lib
|
||||
@ -43,8 +45,23 @@ FIND_LIBRARY(
|
||||
/usr/local/lib64
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
${GRGN3S_ROOT}/lib
|
||||
$ENV{GRGN3S_ROOT}/lib
|
||||
${GRGN3S_ROOT}/lib64
|
||||
$ENV{GRGN3S_ROOT}/lib64
|
||||
)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GR_GN3S DEFAULT_MSG GR_GN3S_LIBRARIES GR_GN3S_INCLUDE_DIRS)
|
||||
MARK_AS_ADVANCED(GR_GN3S_LIBRARIES GR_GN3S_INCLUDE_DIRS)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(GRGN3S DEFAULT_MSG GR_GN3S_LIBRARIES GR_GN3S_INCLUDE_DIRS)
|
||||
|
||||
if(GRGN3S_FOUND AND NOT TARGET Gnuradio::gn3s)
|
||||
add_library(Gnuradio::gn3s SHARED IMPORTED)
|
||||
set_target_properties(Gnuradio::gn3s PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GR_GN3S_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GR_GN3S_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${GR_GN3S_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(GR_GN3S_LIBRARIES GR_GN3S_INCLUDE_DIRS)
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -15,24 +15,30 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
INCLUDE(FindPkgConfig)
|
||||
PKG_CHECK_MODULES(PC_IIO gnuradio-iio)
|
||||
#
|
||||
# Provides the following imported target:
|
||||
# Gnuradio::iio
|
||||
#
|
||||
|
||||
FIND_PATH(
|
||||
IIO_INCLUDE_DIRS
|
||||
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(PC_IIO gnuradio-iio)
|
||||
|
||||
find_path(IIO_INCLUDE_DIRS
|
||||
NAMES gnuradio/iio/api.h
|
||||
HINTS $ENV{IIO_DIR}/include
|
||||
${PC_IIO_INCLUDEDIR}
|
||||
${PC_IIO_INCLUDEDIR}
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/include
|
||||
/usr/local/include
|
||||
/usr/include
|
||||
${GRIIO_ROOT}/include
|
||||
$ENV{GRIIO_ROOT}/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(
|
||||
IIO_LIBRARIES
|
||||
find_library(IIO_LIBRARIES
|
||||
NAMES gnuradio-iio
|
||||
HINTS $ENV{IIO_DIR}/lib
|
||||
${PC_IIO_LIBDIR}
|
||||
${PC_IIO_LIBDIR}
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/lib
|
||||
${CMAKE_INSTALL_PREFIX}/lib64
|
||||
/usr/local/lib
|
||||
@ -61,8 +67,23 @@ FIND_LIBRARY(
|
||||
/usr/lib/sparc64-linux-gnu
|
||||
/usr/lib/x86_64-linux-gnux32
|
||||
/usr/lib/sh4-linux-gnu
|
||||
${GRIIO_ROOT}/lib
|
||||
$ENV{GRIIO_ROOT}/lib
|
||||
${GRIIO_ROOT}/lib64
|
||||
$ENV{GRIIO_ROOT}/lib64
|
||||
)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(IIO DEFAULT_MSG IIO_LIBRARIES IIO_INCLUDE_DIRS)
|
||||
MARK_AS_ADVANCED(IIO_LIBRARIES IIO_INCLUDE_DIRS)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(GRIIO DEFAULT_MSG IIO_LIBRARIES IIO_INCLUDE_DIRS)
|
||||
|
||||
if(GRIIO_FOUND AND NOT TARGET Gnuradio::iio)
|
||||
add_library(Gnuradio::iio SHARED IMPORTED)
|
||||
set_target_properties(Gnuradio::iio PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${IIO_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${IIO_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${IIO_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(IIO_LIBRARIES IIO_INCLUDE_DIRS)
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -19,7 +19,7 @@
|
||||
#
|
||||
# Usage of this module as follows:
|
||||
#
|
||||
# find_package(GrOsmoSDR)
|
||||
# find_package(GROSMOSDR)
|
||||
#
|
||||
# Variables used by this module, they can change the default behaviour and need
|
||||
# to be set before calling find_package:
|
||||
@ -33,24 +33,35 @@
|
||||
# GROSMOSDR_FOUND System has gr-osmosdr libs/headers
|
||||
# GROSMOSDR_LIBRARIES The gr-osmosdr libraries (gnuradio-osmosdr)
|
||||
# GROSMOSDR_INCLUDE_DIR The location of gr-osmosdr headers
|
||||
#
|
||||
# Provides the following imported target:
|
||||
# Gnuradio::osmosdr
|
||||
#
|
||||
|
||||
if(NOT GROSMOSDR_FOUND)
|
||||
pkg_check_modules (GROSMOSDR_PKG gnuradio-osmosdr)
|
||||
find_path(GROSMOSDR_INCLUDE_DIR
|
||||
NAMES osmosdr/source.h
|
||||
osmosdr/api.h
|
||||
PATHS
|
||||
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(GROSMOSDR_PKG gnuradio-osmosdr)
|
||||
|
||||
find_path(GROSMOSDR_INCLUDE_DIR
|
||||
NAMES
|
||||
osmosdr/source.h
|
||||
osmosdr/api.h
|
||||
PATHS
|
||||
${GROSMOSDR_PKG_INCLUDE_DIRS}
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
)
|
||||
/opt/local/include
|
||||
${GROSMOSDR_ROOT}/include
|
||||
$ENV{GROSMOSDR_ROOT}/include
|
||||
)
|
||||
|
||||
find_library(GROSMOSDR_LIBRARIES
|
||||
NAMES gnuradio-osmosdr
|
||||
PATHS
|
||||
find_library(GROSMOSDR_LIBRARIES
|
||||
NAMES gnuradio-osmosdr
|
||||
PATHS
|
||||
${GROSMOSDR_PKG_LIBRARY_DIRS}
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
/opt/local/lib
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
/usr/lib/i386-linux-gnu
|
||||
/usr/lib/arm-linux-gnueabihf
|
||||
@ -75,16 +86,23 @@ if(NOT GROSMOSDR_FOUND)
|
||||
/usr/lib/x86_64-linux-gnux32
|
||||
/usr/lib/alpha-linux-gnu
|
||||
/usr/lib64
|
||||
)
|
||||
${GROSMOSDR_ROOT}/lib
|
||||
$ENV{GROSMOSDR_ROOT}/lib
|
||||
${GROSMOSDR_ROOT}/lib64
|
||||
$ENV{GROSMOSDR_ROOT}/lib64
|
||||
)
|
||||
|
||||
if(GROSMOSDR_INCLUDE_DIR AND GROSMOSDR_LIBRARIES)
|
||||
set(GROSMOSDR_FOUND TRUE CACHE INTERNAL "gnuradio-osmosdr found")
|
||||
message(STATUS "Found gnuradio-osmosdr: ${GROSMOSDR_INCLUDE_DIR}, ${GROSMOSDR_LIBRARIES}")
|
||||
else(GROSMOSDR_INCLUDE_DIR AND GROSMOSDR_LIBRARIES)
|
||||
set(GROSMOSDR_FOUND FALSE CACHE INTERNAL "gnuradio-osmosdr found")
|
||||
message(STATUS "gnuradio-osmosdr not found.")
|
||||
endif(GROSMOSDR_INCLUDE_DIR AND GROSMOSDR_LIBRARIES)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(GROSMOSDR DEFAULT_MSG GROSMOSDR_LIBRARIES GROSMOSDR_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(GROSMOSDR_INCLUDE_DIR GROSMOSDR_LIBRARIES)
|
||||
if(GROSMOSDR_FOUND AND NOT TARGET Gnuradio::osmosdr)
|
||||
add_library(Gnuradio::osmosdr SHARED IMPORTED)
|
||||
set_target_properties(Gnuradio::osmosdr PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GROSMOSDR_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GROSMOSDR_INCLUDE_DIR};${GROSMOSDR_INCLUDE_DIR}/osmosdr"
|
||||
INTERFACE_LINK_LIBRARIES "${GROSMOSDR_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
endif(NOT GROSMOSDR_FOUND)
|
||||
mark_as_advanced(GROSMOSDR_LIBRARIES GROSMOSDR_INCLUDE_DIR)
|
@ -1,69 +0,0 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
# GNSS-SDR is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# GNSS-SDR is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# Tries to find Gperftools.
|
||||
#
|
||||
# Usage of this module as follows:
|
||||
#
|
||||
# find_package(Gperftools)
|
||||
#
|
||||
# Variables used by this module, they can change the default behaviour and need
|
||||
# to be set before calling find_package:
|
||||
#
|
||||
# Gperftools_ROOT_DIR Set this variable to the root installation of
|
||||
# Gperftools if the module has problems finding
|
||||
# the proper installation path.
|
||||
#
|
||||
# Variables defined by this module:
|
||||
#
|
||||
# GPERFTOOLS_FOUND System has Gperftools libs/headers
|
||||
# GPERFTOOLS_LIBRARIES The Gperftools libraries (tcmalloc & profiler)
|
||||
# GPERFTOOLS_INCLUDE_DIR The location of Gperftools headers
|
||||
|
||||
find_library(GPERFTOOLS_TCMALLOC
|
||||
NAMES tcmalloc
|
||||
HINTS ${Gperftools_ROOT_DIR}/lib)
|
||||
|
||||
find_library(GPERFTOOLS_PROFILER
|
||||
NAMES profiler
|
||||
HINTS ${Gperftools_ROOT_DIR}/lib)
|
||||
|
||||
find_library(GPERFTOOLS_TCMALLOC_AND_PROFILER
|
||||
NAMES tcmalloc_and_profiler
|
||||
HINTS ${Gperftools_ROOT_DIR}/lib)
|
||||
|
||||
find_path(GPERFTOOLS_INCLUDE_DIR
|
||||
NAMES gperftools/heap-profiler.h
|
||||
HINTS ${Gperftools_ROOT_DIR}/include)
|
||||
|
||||
set(GPERFTOOLS_LIBRARIES ${GPERFTOOLS_TCMALLOC_AND_PROFILER})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(
|
||||
Gperftools
|
||||
DEFAULT_MSG
|
||||
GPERFTOOLS_LIBRARIES
|
||||
GPERFTOOLS_INCLUDE_DIR
|
||||
)
|
||||
|
||||
mark_as_advanced(
|
||||
Gperftools_ROOT_DIR
|
||||
GPERFTOOLS_TCMALLOC
|
||||
GPERFTOOLS_PROFILER
|
||||
GPERFTOOLS_TCMALLOC_AND_PROFILER
|
||||
GPERFTOOLS_LIBRARIES
|
||||
GPERFTOOLS_INCLUDE_DIR)
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -15,10 +15,15 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
INCLUDE(FindPkgConfig)
|
||||
PKG_CHECK_MODULES(PC_LIBIIO libiio)
|
||||
#
|
||||
# Provides the following imported target:
|
||||
# Iio::iio
|
||||
#
|
||||
|
||||
FIND_PATH(
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(PC_LIBIIO libiio)
|
||||
|
||||
find_path(
|
||||
LIBIIO_INCLUDE_DIRS
|
||||
NAMES iio.h
|
||||
HINTS $ENV{LIBIIO_DIR}/include
|
||||
@ -27,9 +32,11 @@ FIND_PATH(
|
||||
/usr/local/include
|
||||
/usr/include
|
||||
/opt/local/include
|
||||
${LIBIIO_ROOT}/include
|
||||
$ENV{LIBIIO_ROOT}/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(
|
||||
find_library(
|
||||
LIBIIO_LIBRARIES
|
||||
NAMES iio libiio.so.0
|
||||
HINTS $ENV{LIBIIO_DIR}/lib
|
||||
@ -63,8 +70,23 @@ FIND_LIBRARY(
|
||||
/usr/lib/x86_64-linux-gnux32
|
||||
/usr/lib/sh4-linux-gnu
|
||||
/Library/Frameworks/iio.framework/
|
||||
${LIBIIO_ROOT}/lib
|
||||
$ENV{LIBIIO_ROOT}/lib
|
||||
${LIBIIO_ROOT}/lib64
|
||||
$ENV{LIBIIO_ROOT}/lib64
|
||||
)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBIIO DEFAULT_MSG LIBIIO_LIBRARIES LIBIIO_INCLUDE_DIRS)
|
||||
MARK_AS_ADVANCED(LIBIIO_LIBRARIES LIBIIO_INCLUDE_DIRS)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(LIBIIO DEFAULT_MSG LIBIIO_LIBRARIES LIBIIO_INCLUDE_DIRS)
|
||||
|
||||
if(LIBIIO_FOUND AND NOT TARGET Iio::iio)
|
||||
add_library(Iio::iio SHARED IMPORTED)
|
||||
set_target_properties(Iio::iio PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${LIBIIO_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${LIBIIO_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${LIBIIO_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(LIBIIO_LIBRARIES LIBIIO_INCLUDE_DIRS)
|
@ -19,27 +19,33 @@
|
||||
#
|
||||
# Usage of this module as follows:
|
||||
#
|
||||
# find_package(LibOsmoSDR)
|
||||
# find_package(LIBOSMOSDR)
|
||||
#
|
||||
#
|
||||
# Variables defined by this module:
|
||||
#
|
||||
# LIBOSMOSDR_FOUND System has libosmosdr libs/headers
|
||||
# LIBOSMOSDR_LIBRARIES The libosmosdr libraries
|
||||
# LIBOSMOSDR_LIBRARIES The libosmosdr libraries
|
||||
# LIBOSMOSDR_INCLUDE_DIR The location of libosmosdr headers
|
||||
#
|
||||
# Provides the following imported target:
|
||||
# Osmosdr::osmosdr
|
||||
#
|
||||
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(LIBOSMOSDR_PKG libosmosdr)
|
||||
|
||||
if(NOT LIBOSMOSDR_FOUND)
|
||||
pkg_check_modules (LIBOSMOSDR_PKG libosmosdr)
|
||||
find_path(LIBOSMOSDR_INCLUDE_DIR NAMES osmosdr.h
|
||||
PATHS
|
||||
find_path(LIBOSMOSDR_INCLUDE_DIR NAMES osmosdr.h
|
||||
PATHS
|
||||
${LIBOSMOSDR_PKG_INCLUDE_DIRS}
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
)
|
||||
${LIBOSMOSDR_ROOT}/include
|
||||
$ENV{LIBOSMOSDR_ROOT}/include
|
||||
)
|
||||
|
||||
find_library(LIBOSMOSDR_LIBRARIES NAMES osmosdr
|
||||
PATHS
|
||||
find_library(LIBOSMOSDR_LIBRARIES NAMES osmosdr
|
||||
PATHS
|
||||
${LIBOSMOSDR_PKG_LIBRARY_DIRS}
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
@ -67,16 +73,23 @@ if(NOT LIBOSMOSDR_FOUND)
|
||||
/usr/lib/x86_64-linux-gnux32
|
||||
/usr/lib/alpha-linux-gnu
|
||||
/usr/lib64
|
||||
)
|
||||
${LIBOSMOSDR_ROOT}/lib
|
||||
$ENV{LIBOSMOSDR_ROOT}/lib
|
||||
${LIBOSMOSDR_ROOT}/lib64
|
||||
$ENV{LIBOSMOSDR_ROOT}/lib64
|
||||
)
|
||||
|
||||
if(LIBOSMOSDR_INCLUDE_DIR AND LIBOSMOSDR_LIBRARIES)
|
||||
set(LIBOSMOSDR_FOUND TRUE CACHE INTERNAL "libosmosdr found")
|
||||
message(STATUS "Found libosmosdr: ${LIBOSMOSDR_INCLUDE_DIR}, ${LIBOSMOSDR_LIBRARIES}")
|
||||
else(LIBOSMOSDR_INCLUDE_DIR AND LIBOSMOSDR_LIBRARIES)
|
||||
set(LIBOSMOSDR_FOUND FALSE CACHE INTERNAL "libosmosdr found")
|
||||
message(STATUS "libosmosdr not found.")
|
||||
endif(LIBOSMOSDR_INCLUDE_DIR AND LIBOSMOSDR_LIBRARIES)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(LIBOSMOSDR DEFAULT_MSG LIBOSMOSDR_INCLUDE_DIR LIBOSMOSDR_LIBRARIES)
|
||||
|
||||
if(LIBOSMOSDR_FOUND AND NOT TARGET Osmosdr::osmosdr)
|
||||
add_library(Osmosdr::osmosdr SHARED IMPORTED)
|
||||
set_target_properties(Osmosdr::osmosdr PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${LIBOSMOSDR_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${LIBOSMOSDR_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "${LIBOSMOSDR_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(LIBOSMOSDR_INCLUDE_DIR LIBOSMOSDR_LIBRARIES)
|
||||
|
||||
endif(NOT LIBOSMOSDR_FOUND)
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -21,17 +21,22 @@
|
||||
# LOG4CPP_INCLUDE_DIR - where to find LOG4CPP.h, etc.
|
||||
# LOG4CPP_LIBRARIES - List of libraries when using LOG4CPP.
|
||||
# LOG4CPP_FOUND - True if LOG4CPP found.
|
||||
#
|
||||
# Provides the following imported target:
|
||||
# Log4cpp::log4cpp
|
||||
#
|
||||
|
||||
|
||||
if (LOG4CPP_INCLUDE_DIR)
|
||||
if(LOG4CPP_INCLUDE_DIR)
|
||||
# Already in cache, be silent
|
||||
set(LOG4CPP_FIND_QUIETLY TRUE)
|
||||
endif ()
|
||||
endif()
|
||||
|
||||
find_path(LOG4CPP_INCLUDE_DIR log4cpp/Category.hh
|
||||
/opt/local/include
|
||||
/usr/local/include
|
||||
/usr/include
|
||||
${LOG4CPP_ROOT}/include
|
||||
$ENV{LOG4CPP_ROOT}/include
|
||||
)
|
||||
|
||||
set(LOG4CPP_NAMES log4cpp)
|
||||
@ -68,28 +73,38 @@ find_library(LOG4CPP_LIBRARY
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
/opt/local/lib
|
||||
${LOG4CPP_ROOT}/lib
|
||||
$ENV{LOG4CPP_ROOT}/lib
|
||||
${LOG4CPP_ROOT}/lib64
|
||||
$ENV{LOG4CPP_ROOT}/lib64
|
||||
)
|
||||
|
||||
|
||||
if (LOG4CPP_INCLUDE_DIR AND LOG4CPP_LIBRARY)
|
||||
if(LOG4CPP_INCLUDE_DIR AND LOG4CPP_LIBRARY)
|
||||
set(LOG4CPP_FOUND TRUE)
|
||||
set(LOG4CPP_LIBRARIES ${LOG4CPP_LIBRARY} CACHE INTERNAL "" FORCE)
|
||||
set(LOG4CPP_INCLUDE_DIRS ${LOG4CPP_INCLUDE_DIR} CACHE INTERNAL "" FORCE)
|
||||
else ()
|
||||
else()
|
||||
set(LOG4CPP_FOUND FALSE CACHE INTERNAL "" FORCE)
|
||||
set(LOG4CPP_LIBRARY "" CACHE INTERNAL "" FORCE)
|
||||
set(LOG4CPP_LIBRARIES "" CACHE INTERNAL "" FORCE)
|
||||
set(LOG4CPP_INCLUDE_DIR "" CACHE INTERNAL "" FORCE)
|
||||
set(LOG4CPP_INCLUDE_DIRS "" CACHE INTERNAL "" FORCE)
|
||||
endif ()
|
||||
endif()
|
||||
|
||||
if (LOG4CPP_FOUND)
|
||||
if (NOT LOG4CPP_FIND_QUIETLY)
|
||||
message(STATUS "Found LOG4CPP: ${LOG4CPP_LIBRARIES}")
|
||||
endif ()
|
||||
else ()
|
||||
if (LOG4CPP_FIND_REQUIRED)
|
||||
message(STATUS "Looked for LOG4CPP libraries named ${LOG4CPPS_NAMES}.")
|
||||
message(FATAL_ERROR "Could NOT find LOG4CPP library")
|
||||
endif ()
|
||||
endif ()
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(LOG4CPP DEFAULT_MSG LOG4CPP_INCLUDE_DIRS LOG4CPP_LIBRARIES)
|
||||
|
||||
if (LOG4CPP_FOUND AND NOT TARGET Log4cpp::log4cpp)
|
||||
add_library(Log4cpp::log4cpp SHARED IMPORTED)
|
||||
set_target_properties(Log4cpp::log4cpp PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${LOG4CPP_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${LOG4CPP_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${LOG4CPP_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(
|
||||
LOG4CPP_LIBRARIES
|
||||
LOG4CPP_INCLUDE_DIRS
|
||||
)
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -21,30 +21,33 @@
|
||||
#
|
||||
# Once done this will define:
|
||||
#
|
||||
# MATIO_FOUND - True if MATIO found.
|
||||
# MATIO_LIBRARIES - MATIO libraries.
|
||||
# MATIO_FOUND - True if MATIO found.
|
||||
# MATIO_LIBRARIES - MATIO libraries.
|
||||
# MATIO_INCLUDE_DIRS - where to find matio.h, etc..
|
||||
# MATIO_VERSION_STRING - version number as a string (e.g.: "1.3.4")
|
||||
#
|
||||
#
|
||||
# Provides the following imported target:
|
||||
# Matio::matio
|
||||
#
|
||||
#=============================================================================
|
||||
# Copyright 2015 Avtech Scientific <http://avtechscientific.com>
|
||||
#
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
#
|
||||
# * Neither the names of Kitware, Inc., the Insight Software Consortium,
|
||||
# nor the names of their contributors may be used to endorse or promote
|
||||
# products derived from this software without specific prior written
|
||||
# permission.
|
||||
#
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
@ -60,58 +63,80 @@
|
||||
#
|
||||
|
||||
# Look for the header file.
|
||||
find_path(MATIO_INCLUDE_DIR NAMES matio.h DOC "The MATIO include directory")
|
||||
find_path(MATIO_INCLUDE_DIR
|
||||
NAMES matio.h
|
||||
HINTS
|
||||
${MATIO_ROOT}/include
|
||||
$ENV{MATIO_ROOT}/include
|
||||
DOC "The MATIO include directory"
|
||||
)
|
||||
|
||||
# Look for the library.
|
||||
find_library(MATIO_LIBRARY NAMES matio DOC "The MATIO library")
|
||||
find_library(MATIO_LIBRARY
|
||||
NAMES matio
|
||||
HINTS
|
||||
${MATIO_ROOT}/lib
|
||||
$ENV{MATIO_ROOT}/lib
|
||||
${MATIO_ROOT}/lib64
|
||||
$ENV{MATIO_ROOT}/lib64
|
||||
DOC "The MATIO library"
|
||||
)
|
||||
|
||||
if(MATIO_INCLUDE_DIR)
|
||||
# ---------------------------------------------------
|
||||
# Extract version information from MATIO
|
||||
# ---------------------------------------------------
|
||||
# ---------------------------------------------------
|
||||
# Extract version information from MATIO
|
||||
# ---------------------------------------------------
|
||||
|
||||
# If the file is missing, set all values to 0
|
||||
set(MATIO_MAJOR_VERSION 0)
|
||||
set(MATIO_MINOR_VERSION 0)
|
||||
set(MATIO_RELEASE_LEVEL 0)
|
||||
# If the file is missing, set all values to 0
|
||||
set(MATIO_MAJOR_VERSION 0)
|
||||
set(MATIO_MINOR_VERSION 0)
|
||||
set(MATIO_RELEASE_LEVEL 0)
|
||||
|
||||
# new versions of MATIO have `matio_pubconf.h`
|
||||
if(EXISTS ${MATIO_INCLUDE_DIR}/matio_pubconf.h)
|
||||
set(MATIO_CONFIG_FILE "matio_pubconf.h")
|
||||
else()
|
||||
set(MATIO_CONFIG_FILE "matioConfig.h")
|
||||
endif()
|
||||
# new versions of MATIO have `matio_pubconf.h`
|
||||
if(EXISTS ${MATIO_INCLUDE_DIR}/matio_pubconf.h)
|
||||
set(MATIO_CONFIG_FILE "matio_pubconf.h")
|
||||
else()
|
||||
set(MATIO_CONFIG_FILE "matioConfig.h")
|
||||
endif()
|
||||
|
||||
if(MATIO_CONFIG_FILE)
|
||||
if(MATIO_CONFIG_FILE)
|
||||
|
||||
# Read and parse MATIO config header file for version number
|
||||
file(STRINGS "${MATIO_INCLUDE_DIR}/${MATIO_CONFIG_FILE}" _matio_HEADER_CONTENTS REGEX "#define MATIO_((MAJOR|MINOR)_VERSION)|(RELEASE_LEVEL) ")
|
||||
# Read and parse MATIO config header file for version number
|
||||
file(STRINGS "${MATIO_INCLUDE_DIR}/${MATIO_CONFIG_FILE}" _matio_HEADER_CONTENTS REGEX "#define MATIO_((MAJOR|MINOR)_VERSION)|(RELEASE_LEVEL) ")
|
||||
|
||||
foreach(line ${_matio_HEADER_CONTENTS})
|
||||
if(line MATCHES "#define ([A-Z_]+) ([0-9]+)")
|
||||
set("${CMAKE_MATCH_1}" "${CMAKE_MATCH_2}")
|
||||
endif()
|
||||
endforeach()
|
||||
foreach(line ${_matio_HEADER_CONTENTS})
|
||||
if(line MATCHES "#define ([A-Z_]+) ([0-9]+)")
|
||||
set("${CMAKE_MATCH_1}" "${CMAKE_MATCH_2}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
unset(_matio_HEADER_CONTENTS)
|
||||
endif()
|
||||
unset(_matio_HEADER_CONTENTS)
|
||||
endif()
|
||||
|
||||
set(MATIO_VERSION_STRING "${MATIO_MAJOR_VERSION}.${MATIO_MINOR_VERSION}.${MATIO_RELEASE_LEVEL}")
|
||||
endif ()
|
||||
|
||||
#==================
|
||||
set(MATIO_VERSION_STRING "${MATIO_MAJOR_VERSION}.${MATIO_MINOR_VERSION}.${MATIO_RELEASE_LEVEL}")
|
||||
endif()
|
||||
|
||||
mark_as_advanced(MATIO_INCLUDE_DIR MATIO_LIBRARY)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set MATIO_FOUND to TRUE if
|
||||
# handle the QUIETLY and REQUIRED arguments and set MATIO_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(MATIO REQUIRED_VARS MATIO_LIBRARY MATIO_INCLUDE_DIR VERSION_VAR MATIO_VERSION_STRING)
|
||||
find_package_handle_standard_args(MATIO REQUIRED_VARS MATIO_LIBRARY MATIO_INCLUDE_DIR VERSION_VAR MATIO_VERSION_STRING)
|
||||
|
||||
if(MATIO_FOUND)
|
||||
set(MATIO_LIBRARIES ${MATIO_LIBRARY})
|
||||
set(MATIO_INCLUDE_DIRS ${MATIO_INCLUDE_DIR})
|
||||
else(MATIO_FOUND)
|
||||
else()
|
||||
set(MATIO_LIBRARIES)
|
||||
set(MATIO_INCLUDE_DIRS)
|
||||
endif(MATIO_FOUND)
|
||||
endif()
|
||||
|
||||
if(MATIO_FOUND AND NOT TARGET Matio::matio)
|
||||
add_library(Matio::matio SHARED IMPORTED)
|
||||
set_target_properties(Matio::matio PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${MATIO_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${MATIO_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "${MATIO_LIBRARY}"
|
||||
)
|
||||
endif()
|
||||
|
@ -17,26 +17,33 @@
|
||||
|
||||
# - Try to find OpenBLAS library (not headers!)
|
||||
#
|
||||
# The following environment variable is optionally searched
|
||||
# The following environment variable is optionally searched
|
||||
# OPENBLAS_HOME: Base directory where all OpenBlas components are found
|
||||
|
||||
SET(OPEN_BLAS_SEARCH_PATHS /lib/
|
||||
/lib64/
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
/usr/local/lib
|
||||
/usr/local/lib64
|
||||
/opt/OpenBLAS/lib
|
||||
/opt/local/lib
|
||||
/usr/lib/openblas-base
|
||||
$ENV{OPENBLAS_HOME}/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(OPENBLAS NAMES openblas PATHS ${OPEN_BLAS_SEARCH_PATHS})
|
||||
set(OPEN_BLAS_SEARCH_PATHS
|
||||
/lib
|
||||
/lib64/
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
/usr/local/lib
|
||||
/usr/local/lib64
|
||||
/opt/OpenBLAS/lib
|
||||
/opt/local/lib
|
||||
/usr/lib/openblas-base
|
||||
$ENV{OPENBLAS_HOME}/lib
|
||||
${OPENBLAS_ROOT}/lib
|
||||
$ENV{OPENBLAS_ROOT}/lib
|
||||
${OPENBLAS_ROOT}/lib64
|
||||
$ENV{OPENBLAS_ROOT}/lib64
|
||||
)
|
||||
|
||||
IF (OPENBLAS)
|
||||
SET(OPENBLAS_FOUND ON)
|
||||
MESSAGE(STATUS "Found OpenBLAS")
|
||||
ENDIF (OPENBLAS)
|
||||
find_library(OPENBLAS NAMES openblas PATHS ${OPEN_BLAS_SEARCH_PATHS})
|
||||
|
||||
MARK_AS_ADVANCED(OPENBLAS)
|
||||
if(OPENBLAS)
|
||||
set(OPENBLAS_FOUND ON)
|
||||
message(STATUS "Found OpenBLAS")
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(OPENBLAS DEFAULT_MSG OPENBLAS)
|
||||
mark_as_advanced(OPENBLAS)
|
110
cmake/Modules/FindOPENCL.cmake
Normal file
110
cmake/Modules/FindOPENCL.cmake
Normal file
@ -0,0 +1,110 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
# GNSS-SDR is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# GNSS-SDR is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
#
|
||||
# This file taken from FindOpenCL project @ http://gitorious.com/findopencl
|
||||
#
|
||||
# - Try to find OpenCL
|
||||
# This module tries to find an OpenCL implementation on your system. It supports
|
||||
# AMD / ATI, Apple and NVIDIA implementations, but shoudl work, too.
|
||||
#
|
||||
# Once done this will define
|
||||
# OPENCL_FOUND - system has OpenCL
|
||||
# OPENCL_INCLUDE_DIRS - the OpenCL include directory
|
||||
# OPENCL_LIBRARIES - link these to use OpenCL
|
||||
#
|
||||
# WIN32 should work, but is untested
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
set(OPENCL_VERSION_STRING "0.1.0")
|
||||
set(OPENCL_VERSION_MAJOR 0)
|
||||
set(OPENCL_VERSION_MINOR 1)
|
||||
set(OPENCL_VERSION_PATCH 0)
|
||||
|
||||
if(APPLE)
|
||||
find_library(OPENCL_LIBRARIES OpenCL DOC "OpenCL lib for OSX")
|
||||
find_path(OPENCL_INCLUDE_DIRS OpenCL/cl.h DOC "Include for OpenCL on OSX")
|
||||
find_path(_OPENCL_CPP_INCLUDE_DIRS OpenCL/cl.hpp DOC "Include for OpenCL CPP bindings on OSX")
|
||||
|
||||
else()
|
||||
if(WIN32)
|
||||
find_path(OPENCL_INCLUDE_DIRS CL/cl.h)
|
||||
find_path(_OPENCL_CPP_INCLUDE_DIRS CL/cl.hpp)
|
||||
|
||||
# The AMD SDK currently installs both x86 and x86_64 libraries
|
||||
# This is only a hack to find out architecture
|
||||
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64")
|
||||
set(OPENCL_LIB_DIR "$ENV{ATISTREAMSDKROOT}/lib/x86_64")
|
||||
set(OPENCL_LIB_DIR "$ENV{ATIINTERNALSTREAMSDKROOT}/lib/x86_64")
|
||||
else()
|
||||
set(OPENCL_LIB_DIR "$ENV{ATISTREAMSDKROOT}/lib/x86")
|
||||
set(OPENCL_LIB_DIR "$ENV{ATIINTERNALSTREAMSDKROOT}/lib/x86")
|
||||
endif()
|
||||
|
||||
# find out if the user asked for a 64-bit build, and use the corresponding
|
||||
# 64 or 32 bit NVIDIA library paths to the search:
|
||||
string(REGEX MATCH "Win64" ISWIN64 ${CMAKE_GENERATOR})
|
||||
if("${ISWIN64}" STREQUAL "Win64")
|
||||
find_library(OPENCL_LIBRARIES OpenCL.lib ${OPENCL_LIB_DIR} $ENV{CUDA_LIB_PATH} $ENV{CUDA_PATH}/lib/x64)
|
||||
else()
|
||||
find_library(OPENCL_LIBRARIES OpenCL.lib ${OPENCL_LIB_DIR} $ENV{CUDA_LIB_PATH} $ENV{CUDA_PATH}/lib/Win32)
|
||||
endif()
|
||||
|
||||
get_filename_component(_OPENCL_INC_CAND ${OPENCL_LIB_DIR}/../../include ABSOLUTE)
|
||||
|
||||
# On Win32 search relative to the library
|
||||
find_path(OPENCL_INCLUDE_DIRS CL/cl.h PATHS "${_OPENCL_INC_CAND}" $ENV{CUDA_INC_PATH} $ENV{CUDA_PATH}/include)
|
||||
find_path(_OPENCL_CPP_INCLUDE_DIRS CL/cl.hpp PATHS "${_OPENCL_INC_CAND}" $ENV{CUDA_INC_PATH} $ENV{CUDA_PATH}/include)
|
||||
|
||||
else()
|
||||
# Unix style platforms
|
||||
find_library(OPENCL_LIBRARIES OpenCL
|
||||
ENV LD_LIBRARY_PATH
|
||||
)
|
||||
|
||||
get_filename_component(OPENCL_LIB_DIR ${OPENCL_LIBRARIES} PATH)
|
||||
get_filename_component(_OPENCL_INC_CAND ${OPENCL_LIB_DIR}/../../include ABSOLUTE)
|
||||
|
||||
# The AMD SDK currently does not place its headers
|
||||
# in /usr/include, therefore also search relative
|
||||
# to the library
|
||||
find_path(OPENCL_INCLUDE_DIRS CL/cl.h PATHS ${_OPENCL_INC_CAND} "/usr/local/cuda/include")
|
||||
find_path(_OPENCL_CPP_INCLUDE_DIRS CL/cl.hpp PATHS ${_OPENCL_INC_CAND} "/usr/local/cuda/include")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package_handle_standard_args(OPENCL DEFAULT_MSG OPENCL_LIBRARIES OPENCL_INCLUDE_DIRS)
|
||||
|
||||
if(_OPENCL_CPP_INCLUDE_DIRS)
|
||||
set(OPENCL_HAS_CPP_BINDINGS TRUE)
|
||||
list(APPEND OPENCL_INCLUDE_DIRS ${_OPENCL_CPP_INCLUDE_DIRS})
|
||||
# This is often the same, so clean up
|
||||
list(REMOVE_DUPLICATES OPENCL_INCLUDE_DIRS)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(
|
||||
OPENCL_INCLUDE_DIRS
|
||||
)
|
||||
|
||||
if(OPENCL_INCLUDE_DIRS AND OPENCL_LIBRARIES)
|
||||
set( OPENCL_FOUND TRUE )
|
||||
add_definitions( -DOPENCL=1 )
|
||||
else()
|
||||
set( OPENCL_FOUND FALSE )
|
||||
add_definitions( -DOPENCL=0 )
|
||||
endif()
|
@ -15,52 +15,61 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
FIND_PACKAGE(PkgConfig)
|
||||
PKG_CHECK_MODULES(PC_ORC "orc-0.4 > 0.4.22")
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(PC_ORC "orc-0.4 > 0.4.22")
|
||||
|
||||
FIND_PROGRAM(ORCC_EXECUTABLE orcc
|
||||
HINTS ${PC_ORC_TOOLSDIR}
|
||||
PATHS ${ORC_ROOT}/bin ${CMAKE_INSTALL_PREFIX}/bin)
|
||||
|
||||
FIND_PATH(ORC_INCLUDE_DIR NAMES orc/orc.h
|
||||
HINTS ${PC_ORC_INCLUDEDIR}
|
||||
PATHS ${ORC_ROOT}/include/orc-0.4 ${CMAKE_INSTALL_PREFIX}/include/orc-0.4)
|
||||
|
||||
|
||||
FIND_PATH(ORC_LIBRARY_DIR NAMES ${CMAKE_SHARED_LIBRARY_PREFIX}orc-0.4${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
HINTS ${PC_ORC_LIBDIR}
|
||||
/usr/local/lib
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
/usr/lib/i386-linux-gnu
|
||||
/usr/lib/arm-linux-gnueabihf
|
||||
/usr/lib/arm-linux-gnueabi
|
||||
/usr/lib/aarch64-linux-gnu
|
||||
/usr/lib/mipsel-linux-gnu
|
||||
/usr/lib/mips-linux-gnu
|
||||
/usr/lib/mips64el-linux-gnuabi64
|
||||
/usr/lib/powerpc-linux-gnu
|
||||
/usr/lib/powerpc64-linux-gnu
|
||||
/usr/lib/powerpc64le-linux-gnu
|
||||
/usr/lib/hppa-linux-gnu
|
||||
/usr/lib/s390x-linux-gnu
|
||||
/usr/lib64
|
||||
/usr/lib
|
||||
PATHS ${ORC_ROOT}/lib${LIB_SUFFIX} ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
|
||||
|
||||
FIND_LIBRARY(ORC_LIB orc-0.4
|
||||
HINTS ${PC_ORC_LIBRARY_DIRS}
|
||||
PATHS ${ORC_ROOT}/lib${LIB_SUFFIX} ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
|
||||
|
||||
LIST(APPEND ORC_LIBRARY
|
||||
${ORC_LIB}
|
||||
find_program(ORCC_EXECUTABLE orcc
|
||||
HINTS ${PC_ORC_TOOLSDIR}
|
||||
PATHS ${ORC_ROOT}/bin
|
||||
${CMAKE_INSTALL_PREFIX}/bin
|
||||
)
|
||||
|
||||
find_path(ORC_INCLUDE_DIR
|
||||
NAMES orc/orc.h
|
||||
HINTS ${PC_ORC_INCLUDEDIR}
|
||||
PATHS ${ORC_ROOT}/include/orc-0.4
|
||||
${CMAKE_INSTALL_PREFIX}/include/orc-0.4
|
||||
)
|
||||
|
||||
SET(ORC_INCLUDE_DIRS ${ORC_INCLUDE_DIR})
|
||||
SET(ORC_LIBRARIES ${ORC_LIBRARY})
|
||||
SET(ORC_LIBRARY_DIRS ${ORC_LIBRARY_DIR})
|
||||
find_path(ORC_LIBRARY_DIR
|
||||
NAMES ${CMAKE_SHARED_LIBRARY_PREFIX}orc-0.4${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
HINTS ${PC_ORC_LIBDIR}
|
||||
/usr/local/lib
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
/usr/lib/i386-linux-gnu
|
||||
/usr/lib/arm-linux-gnueabihf
|
||||
/usr/lib/arm-linux-gnueabi
|
||||
/usr/lib/aarch64-linux-gnu
|
||||
/usr/lib/mipsel-linux-gnu
|
||||
/usr/lib/mips-linux-gnu
|
||||
/usr/lib/mips64el-linux-gnuabi64
|
||||
/usr/lib/powerpc-linux-gnu
|
||||
/usr/lib/powerpc64-linux-gnu
|
||||
/usr/lib/powerpc64le-linux-gnu
|
||||
/usr/lib/hppa-linux-gnu
|
||||
/usr/lib/s390x-linux-gnu
|
||||
/usr/lib64
|
||||
/usr/lib
|
||||
${ORC_ROOT}/lib
|
||||
$ENV{ORC_ROOT}/lib
|
||||
PATHS
|
||||
${ORC_ROOT}/lib${LIB_SUFFIX}
|
||||
${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}
|
||||
)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ORC "orc files" ORC_LIBRARY ORC_INCLUDE_DIR ORCC_EXECUTABLE)
|
||||
find_library(ORC_LIB orc-0.4
|
||||
HINTS ${PC_ORC_LIBRARY_DIRS}
|
||||
PATHS ${ORC_ROOT}/lib${LIB_SUFFIX}
|
||||
${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}
|
||||
)
|
||||
|
||||
mark_as_advanced(ORC_INCLUDE_DIR ORC_LIBRARY ORCC_EXECUTABLE)
|
||||
list(APPEND ORC_LIBRARY ${ORC_LIB})
|
||||
|
||||
set(ORC_INCLUDE_DIRS ${ORC_INCLUDE_DIR})
|
||||
set(ORC_LIBRARIES ${ORC_LIBRARY})
|
||||
set(ORC_LIBRARY_DIRS ${ORC_LIBRARY_DIR})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(ORC "orc files" ORC_LIBRARY ORC_INCLUDE_DIR ORCC_EXECUTABLE)
|
||||
|
||||
mark_as_advanced(ORC_INCLUDE_DIR ORC_LIBRARY ORCC_EXECUTABLE)
|
||||
|
@ -1,116 +0,0 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
# GNSS-SDR is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# GNSS-SDR is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
#
|
||||
# This file taken from FindOpenCL project @ http://gitorious.com/findopencl
|
||||
#
|
||||
# - Try to find OpenCL
|
||||
# This module tries to find an OpenCL implementation on your system. It supports
|
||||
# AMD / ATI, Apple and NVIDIA implementations, but shoudl work, too.
|
||||
#
|
||||
# Once done this will define
|
||||
# OPENCL_FOUND - system has OpenCL
|
||||
# OPENCL_INCLUDE_DIRS - the OpenCL include directory
|
||||
# OPENCL_LIBRARIES - link these to use OpenCL
|
||||
#
|
||||
# WIN32 should work, but is untested
|
||||
|
||||
FIND_PACKAGE( PackageHandleStandardArgs )
|
||||
|
||||
SET (OPENCL_VERSION_STRING "0.1.0")
|
||||
SET (OPENCL_VERSION_MAJOR 0)
|
||||
SET (OPENCL_VERSION_MINOR 1)
|
||||
SET (OPENCL_VERSION_PATCH 0)
|
||||
|
||||
IF (APPLE)
|
||||
|
||||
FIND_LIBRARY(OPENCL_LIBRARIES OpenCL DOC "OpenCL lib for OSX")
|
||||
FIND_PATH(OPENCL_INCLUDE_DIRS OpenCL/cl.h DOC "Include for OpenCL on OSX")
|
||||
FIND_PATH(_OPENCL_CPP_INCLUDE_DIRS OpenCL/cl.hpp DOC "Include for OpenCL CPP bindings on OSX")
|
||||
|
||||
ELSE (APPLE)
|
||||
|
||||
IF (WIN32)
|
||||
|
||||
FIND_PATH(OPENCL_INCLUDE_DIRS CL/cl.h)
|
||||
FIND_PATH(_OPENCL_CPP_INCLUDE_DIRS CL/cl.hpp)
|
||||
|
||||
# The AMD SDK currently installs both x86 and x86_64 libraries
|
||||
# This is only a hack to find out architecture
|
||||
IF( ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64" )
|
||||
SET(OPENCL_LIB_DIR "$ENV{ATISTREAMSDKROOT}/lib/x86_64")
|
||||
SET(OPENCL_LIB_DIR "$ENV{ATIINTERNALSTREAMSDKROOT}/lib/x86_64")
|
||||
ELSE (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64")
|
||||
SET(OPENCL_LIB_DIR "$ENV{ATISTREAMSDKROOT}/lib/x86")
|
||||
SET(OPENCL_LIB_DIR "$ENV{ATIINTERNALSTREAMSDKROOT}/lib/x86")
|
||||
ENDIF( ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64" )
|
||||
|
||||
# find out if the user asked for a 64-bit build, and use the corresponding
|
||||
# 64 or 32 bit NVIDIA library paths to the search:
|
||||
STRING(REGEX MATCH "Win64" ISWIN64 ${CMAKE_GENERATOR})
|
||||
IF("${ISWIN64}" STREQUAL "Win64")
|
||||
FIND_LIBRARY(OPENCL_LIBRARIES OpenCL.lib ${OPENCL_LIB_DIR} $ENV{CUDA_LIB_PATH} $ENV{CUDA_PATH}/lib/x64)
|
||||
ELSE("${ISWIN64}" STREQUAL "Win64")
|
||||
FIND_LIBRARY(OPENCL_LIBRARIES OpenCL.lib ${OPENCL_LIB_DIR} $ENV{CUDA_LIB_PATH} $ENV{CUDA_PATH}/lib/Win32)
|
||||
ENDIF("${ISWIN64}" STREQUAL "Win64")
|
||||
|
||||
GET_FILENAME_COMPONENT(_OPENCL_INC_CAND ${OPENCL_LIB_DIR}/../../include ABSOLUTE)
|
||||
|
||||
# On Win32 search relative to the library
|
||||
FIND_PATH(OPENCL_INCLUDE_DIRS CL/cl.h PATHS "${_OPENCL_INC_CAND}" $ENV{CUDA_INC_PATH} $ENV{CUDA_PATH}/include)
|
||||
FIND_PATH(_OPENCL_CPP_INCLUDE_DIRS CL/cl.hpp PATHS "${_OPENCL_INC_CAND}" $ENV{CUDA_INC_PATH} $ENV{CUDA_PATH}/include)
|
||||
|
||||
ELSE (WIN32)
|
||||
|
||||
# Unix style platforms
|
||||
FIND_LIBRARY(OPENCL_LIBRARIES OpenCL
|
||||
ENV LD_LIBRARY_PATH
|
||||
)
|
||||
|
||||
GET_FILENAME_COMPONENT(OPENCL_LIB_DIR ${OPENCL_LIBRARIES} PATH)
|
||||
GET_FILENAME_COMPONENT(_OPENCL_INC_CAND ${OPENCL_LIB_DIR}/../../include ABSOLUTE)
|
||||
|
||||
# The AMD SDK currently does not place its headers
|
||||
# in /usr/include, therefore also search relative
|
||||
# to the library
|
||||
FIND_PATH(OPENCL_INCLUDE_DIRS CL/cl.h PATHS ${_OPENCL_INC_CAND} "/usr/local/cuda/include")
|
||||
FIND_PATH(_OPENCL_CPP_INCLUDE_DIRS CL/cl.hpp PATHS ${_OPENCL_INC_CAND} "/usr/local/cuda/include")
|
||||
|
||||
ENDIF (WIN32)
|
||||
|
||||
ENDIF (APPLE)
|
||||
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS( OpenCL DEFAULT_MSG OPENCL_LIBRARIES OPENCL_INCLUDE_DIRS )
|
||||
|
||||
IF( _OPENCL_CPP_INCLUDE_DIRS )
|
||||
SET( OPENCL_HAS_CPP_BINDINGS TRUE )
|
||||
LIST( APPEND OPENCL_INCLUDE_DIRS ${_OPENCL_CPP_INCLUDE_DIRS} )
|
||||
# This is often the same, so clean up
|
||||
LIST( REMOVE_DUPLICATES OPENCL_INCLUDE_DIRS )
|
||||
ENDIF( _OPENCL_CPP_INCLUDE_DIRS )
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
OPENCL_INCLUDE_DIRS
|
||||
)
|
||||
|
||||
IF( OPENCL_INCLUDE_DIRS AND OPENCL_LIBRARIES )
|
||||
SET( OPENCL_FOUND TRUE )
|
||||
add_definitions( -DOPENCL=1 )
|
||||
ELSE( OPENCL_INCLUDE_DIRS AND OPENCL_LIBRARIES )
|
||||
SET( OPENCL_FOUND FALSE )
|
||||
add_definitions( -DOPENCL=0 )
|
||||
ENDIF( OPENCL_INCLUDE_DIRS AND OPENCL_LIBRARIES )
|
135
cmake/Modules/FindPCAP.cmake
Normal file
135
cmake/Modules/FindPCAP.cmake
Normal file
@ -0,0 +1,135 @@
|
||||
###################################################################
|
||||
#
|
||||
# Copyright (c) 2006 Frederic Heem, <frederic.heem@telsey.it>
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
#
|
||||
# * Neither the name of the Telsey nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
###################################################################
|
||||
# - Find pcap
|
||||
# Find the PCAP includes and library
|
||||
# http://www.tcpdump.org/
|
||||
#
|
||||
# The environment variable PCAPDIR allows to specficy where to find
|
||||
# libpcap in non standard location.
|
||||
#
|
||||
# PCAP_INCLUDE_DIRS - where to find pcap.h, etc.
|
||||
# PCAP_LIBRARIES - List of libraries when using pcap.
|
||||
# PCAP_FOUND - True if pcap found.
|
||||
#
|
||||
# Provides the following imported target:
|
||||
# Pcap::pcap
|
||||
#
|
||||
|
||||
if(EXISTS $ENV{PCAPDIR})
|
||||
find_path(PCAP_INCLUDE_DIR
|
||||
NAMES
|
||||
pcap/pcap.h
|
||||
pcap.h
|
||||
PATHS
|
||||
$ENV{PCAPDIR}
|
||||
${PCAP_ROOT}/include
|
||||
$ENV{PCAP_ROOT}/include
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
find_library(PCAP_LIBRARY
|
||||
NAMES
|
||||
pcap
|
||||
PATHS
|
||||
$ENV{PCAPDIR}
|
||||
${PCAP_ROOT}/lib
|
||||
$ENV{PCAP_ROOT}/lib
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
else()
|
||||
find_path(PCAP_INCLUDE_DIR
|
||||
NAMES
|
||||
pcap/pcap.h
|
||||
pcap.h
|
||||
HINTS
|
||||
${PCAP_ROOT}/include
|
||||
$ENV{PCAP_ROOT}/include
|
||||
)
|
||||
find_library(PCAP_LIBRARY
|
||||
NAMES
|
||||
pcap
|
||||
HINTS
|
||||
${PCAP_ROOT}/lib
|
||||
$ENV{PCAP_ROOT}/lib
|
||||
)
|
||||
endif()
|
||||
|
||||
set(PCAP_INCLUDE_DIRS ${PCAP_INCLUDE_DIR})
|
||||
set(PCAP_LIBRARIES ${PCAP_LIBRARY})
|
||||
|
||||
if(PCAP_INCLUDE_DIRS)
|
||||
message(STATUS "Pcap include dirs set to ${PCAP_INCLUDE_DIRS}")
|
||||
else()
|
||||
message(FATAL " Pcap include dirs cannot be found")
|
||||
endif()
|
||||
|
||||
if(PCAP_LIBRARIES)
|
||||
message(STATUS "Pcap library set to ${PCAP_LIBRARIES}")
|
||||
else()
|
||||
message(FATAL "Pcap library cannot be found")
|
||||
endif()
|
||||
|
||||
#Functions
|
||||
include(CheckFunctionExists)
|
||||
set(CMAKE_REQUIRED_INCLUDES ${PCAP_INCLUDE_DIRS})
|
||||
set(CMAKE_REQUIRED_LIBRARIES ${PCAP_LIBRARIES})
|
||||
check_function_exists("pcap_breakloop" HAVE_PCAP_BREAKLOOP)
|
||||
check_function_exists("pcap_datalink_name_to_val" HAVE_PCAP_DATALINK_NAME_TO_VAL)
|
||||
check_function_exists("pcap_datalink_val_to_name" HAVE_PCAP_DATALINK_VAL_TO_NAME)
|
||||
check_function_exists("pcap_findalldevs" HAVE_PCAP_FINDALLDEVS)
|
||||
check_function_exists("pcap_freecode" HAVE_PCAP_FREECODE)
|
||||
check_function_exists("pcap_get_selectable_fd" HAVE_PCAP_GET_SELECTABLE_FD)
|
||||
check_function_exists("pcap_lib_version" HAVE_PCAP_LIB_VERSION)
|
||||
check_function_exists("pcap_list_datalinks" HAVE_PCAP_LIST_DATALINKS)
|
||||
check_function_exists("pcap_open_dead" HAVE_PCAP_OPEN_DEAD)
|
||||
check_function_exists("pcap_set_datalink" HAVE_PCAP_SET_DATALINK)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(PCAP DEFAULT_MSG PCAP_INCLUDE_DIRS PCAP_LIBRARIES)
|
||||
|
||||
if(PCAP_FOUND AND NOT TARGET Pcap::pcap)
|
||||
add_library(Pcap::pcap SHARED IMPORTED)
|
||||
set_target_properties(Pcap::pcap PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${PCAP_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${PCAP_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${PCAP_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(
|
||||
PCAP_LIBRARIES
|
||||
PCAP_INCLUDE_DIRS
|
||||
)
|
97
cmake/Modules/FindPUGIXML.cmake
Normal file
97
cmake/Modules/FindPUGIXML.cmake
Normal file
@ -0,0 +1,97 @@
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
# GNSS-SDR is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# GNSS-SDR is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# Find the pugixml XML parsing library.
|
||||
#
|
||||
# Sets the usual variables expected for find_package scripts:
|
||||
#
|
||||
# PUGIXML_INCLUDE_DIR - header location
|
||||
# PUGIXML_LIBRARIES - library to link against
|
||||
# PUGIXML_FOUND - true if pugixml was found.
|
||||
#
|
||||
# Provides the following imported target:
|
||||
# Pugixml::pugixml
|
||||
#
|
||||
|
||||
find_path(PUGIXML_INCLUDE_DIR
|
||||
NAMES pugixml.hpp
|
||||
PATHS ${PUGIXML_HOME}/include
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
/usr/local/include/pugixml-1.9
|
||||
/opt/local/include
|
||||
${PUGIXML_ROOT}/include
|
||||
$ENV{PUGIXML_ROOT}/include
|
||||
${PUGIXML_ROOT}/include/pugixml-1.9
|
||||
$ENV{PUGIXML_ROOT}/include/pugixml-1.9
|
||||
)
|
||||
|
||||
find_library(PUGIXML_LIBRARY
|
||||
NAMES pugixml
|
||||
PATHS ${PUGIXML_HOME}/lib
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
/usr/lib/aarch64-linux-gnu
|
||||
/usr/lib/arm-linux-gnueabi
|
||||
/usr/lib/arm-linux-gnueabihf
|
||||
/usr/lib/i386-linux-gnu
|
||||
/usr/lib/mips-linux-gnu
|
||||
/usr/lib/mips64el-linux-gnuabi64
|
||||
/usr/lib/mipsel-linux-gnu
|
||||
/usr/lib/powerpc64le-linux-gnu
|
||||
/usr/lib/s390x-linux-gnu
|
||||
/usr/local/lib
|
||||
/usr/local/lib/pugixml-1.9
|
||||
/opt/local/lib
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
/usr/local/lib64
|
||||
${PUGIXML_ROOT}/lib
|
||||
$ENV{PUGIXML_ROOT}/lib
|
||||
${PUGIXML_ROOT}/lib64
|
||||
$ENV{PUGIXML_ROOT}/lib64
|
||||
${PUGIXML_ROOT}/lib/pugixml-1.9
|
||||
$ENV{PUGIXML_ROOT}/lib/pugixml-1.9
|
||||
${PUGIXML_ROOT}/lib64/pugixml-1.9
|
||||
$ENV{PUGIXML_ROOT}/lib64/pugixml-1.9
|
||||
)
|
||||
|
||||
# Support the REQUIRED and QUIET arguments, and set PUGIXML_FOUND if found.
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(PUGIXML DEFAULT_MSG PUGIXML_LIBRARY
|
||||
PUGIXML_INCLUDE_DIR)
|
||||
|
||||
if(PUGIXML_FOUND)
|
||||
set(PUGIXML_LIBRARIES ${PUGIXML_LIBRARY})
|
||||
if(NOT PUGIXML_FIND_QUIETLY)
|
||||
message(STATUS "PugiXML include = ${PUGIXML_INCLUDE_DIR}")
|
||||
message(STATUS "PugiXML library = ${PUGIXML_LIBRARY}")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "PugiXML not found.")
|
||||
endif()
|
||||
|
||||
mark_as_advanced(PUGIXML_LIBRARY PUGIXML_INCLUDE_DIR)
|
||||
|
||||
if(PUGIXML_FOUND AND NOT TARGET Pugixml::pugixml)
|
||||
add_library(Pugixml::pugixml SHARED IMPORTED)
|
||||
set_target_properties(Pugixml::pugixml PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${PUGIXML_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${PUGIXML_INCLUDE_DIR}"
|
||||
INTERFACE_LINK_LIBRARIES "${PUGIXML_LIBRARY}"
|
||||
)
|
||||
endif()
|
@ -15,32 +15,47 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
INCLUDE(FindPkgConfig)
|
||||
PKG_CHECK_MODULES(PC_TELEORBIT teleorbit)
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(PC_TELEORBIT teleorbit)
|
||||
|
||||
FIND_PATH(
|
||||
TELEORBIT_INCLUDE_DIRS
|
||||
find_path(TELEORBIT_INCLUDE_DIRS
|
||||
NAMES teleorbit/api.h
|
||||
HINTS $ENV{TELEORBIT_DIR}/include
|
||||
${PC_TELEORBIT_INCLUDEDIR}
|
||||
${PC_TELEORBIT_INCLUDEDIR}
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/include
|
||||
/usr/local/include
|
||||
/usr/include
|
||||
${TELEORBIT_ROOT}/include
|
||||
$ENV{TELEORBIT_ROOT}/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(
|
||||
TELEORBIT_LIBRARIES
|
||||
find_library(TELEORBIT_LIBRARIES
|
||||
NAMES gnuradio-teleorbit
|
||||
HINTS $ENV{TELEORBIT_DIR}/lib
|
||||
${PC_TELEORBIT_LIBDIR}
|
||||
${PC_TELEORBIT_LIBDIR}
|
||||
PATHS ${CMAKE_INSTALL_PREFIX}/lib
|
||||
${CMAKE_INSTALL_PREFIX}/lib64
|
||||
/usr/local/lib
|
||||
/usr/local/lib64
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
${TELEORBIT_ROOT}/lib
|
||||
$ENV{TELEORBIT_ROOT}/lib
|
||||
${TELEORBIT_ROOT}/lib64
|
||||
$ENV{TELEORBIT_ROOT}/lib64
|
||||
)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(TELEORBIT DEFAULT_MSG TELEORBIT_LIBRARIES TELEORBIT_INCLUDE_DIRS)
|
||||
MARK_AS_ADVANCED(TELEORBIT_LIBRARIES TELEORBIT_INCLUDE_DIRS)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(TELEORBIT DEFAULT_MSG TELEORBIT_LIBRARIES TELEORBIT_INCLUDE_DIRS)
|
||||
|
||||
if(TELEORBIT_FOUND AND NOT TARGET Gnuradio::teleorbit)
|
||||
add_library(Gnuradio::teleorbit SHARED IMPORTED)
|
||||
set_target_properties(Gnuradio::teleorbit PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${TELEORBIT_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${TELEORBIT_INCLUDE_DIRS};${TELEORBIT_INCLUDE_DIRS}/teleorbit"
|
||||
INTERFACE_LINK_LIBRARIES "${TELEORBIT_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(TELEORBIT_LIBRARIES TELEORBIT_INCLUDE_DIRS)
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -15,28 +15,32 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
#
|
||||
# Provides the following imported target:
|
||||
# Iio::iio
|
||||
#
|
||||
|
||||
########################################################################
|
||||
# Find the library for the USRP Hardware Driver
|
||||
########################################################################
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(PC_UHD uhd)
|
||||
|
||||
INCLUDE(FindPkgConfig)
|
||||
PKG_CHECK_MODULES(PC_UHD uhd)
|
||||
|
||||
FIND_PATH(
|
||||
UHD_INCLUDE_DIRS
|
||||
find_path(UHD_INCLUDE_DIRS
|
||||
NAMES uhd/config.hpp
|
||||
HINTS $ENV{UHD_DIR}/include
|
||||
${PC_UHD_INCLUDEDIR}
|
||||
${PC_UHD_INCLUDEDIR}
|
||||
PATHS /usr/local/include
|
||||
/usr/include
|
||||
${GNURADIO_INSTALL_PREFIX}/include
|
||||
${UHD_ROOT}/include
|
||||
$ENV{UHD_ROOT}/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(
|
||||
UHD_LIBRARIES
|
||||
find_library(UHD_LIBRARIES
|
||||
NAMES uhd
|
||||
HINTS $ENV{UHD_DIR}/lib
|
||||
${PC_UHD_LIBDIR}
|
||||
${PC_UHD_LIBDIR}
|
||||
PATHS /usr/local/lib
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
/usr/lib/i386-linux-gnu
|
||||
@ -64,8 +68,23 @@ FIND_LIBRARY(
|
||||
/usr/lib64
|
||||
/usr/lib
|
||||
${GNURADIO_INSTALL_PREFIX}/lib
|
||||
${UHD_ROOT}/lib
|
||||
$ENV{UHD_ROOT}/lib
|
||||
${UHD_ROOT}/lib64
|
||||
$ENV{UHD_ROOT}/lib64
|
||||
)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(UHD DEFAULT_MSG UHD_LIBRARIES UHD_INCLUDE_DIRS)
|
||||
MARK_AS_ADVANCED(UHD_LIBRARIES UHD_INCLUDE_DIRS)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(UHD DEFAULT_MSG UHD_LIBRARIES UHD_INCLUDE_DIRS)
|
||||
|
||||
if(UHD_FOUND AND NOT TARGET Uhd::uhd)
|
||||
add_library(Uhd::uhd SHARED IMPORTED)
|
||||
set_target_properties(Uhd::uhd PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${UHD_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${UHD_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${UHD_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(UHD_LIBRARIES UHD_INCLUDE_DIRS)
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -15,25 +15,30 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
#
|
||||
# Provides the following imported target:
|
||||
# Volk::volk
|
||||
#
|
||||
|
||||
########################################################################
|
||||
# Find VOLK (Vector-Optimized Library of Kernels)
|
||||
########################################################################
|
||||
|
||||
INCLUDE(FindPkgConfig)
|
||||
PKG_CHECK_MODULES(PC_VOLK volk)
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(PC_VOLK volk)
|
||||
|
||||
FIND_PATH(
|
||||
VOLK_INCLUDE_DIRS
|
||||
find_path(VOLK_INCLUDE_DIRS
|
||||
NAMES volk/volk.h
|
||||
HINTS $ENV{VOLK_DIR}/include
|
||||
${PC_VOLK_INCLUDEDIR}
|
||||
PATHS /usr/local/include
|
||||
/usr/include
|
||||
${CMAKE_INSTALL_PREFIX}/include
|
||||
${VOLK_ROOT}/include
|
||||
$ENV{VOLK_ROOT}/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(
|
||||
VOLK_LIBRARIES
|
||||
find_library(VOLK_LIBRARIES
|
||||
NAMES volk
|
||||
HINTS $ENV{VOLK_DIR}/lib
|
||||
${PC_VOLK_LIBDIR}
|
||||
@ -65,9 +70,22 @@ FIND_LIBRARY(
|
||||
/usr/lib/alpha-linux-gnu
|
||||
/usr/lib64
|
||||
${CMAKE_INSTALL_PREFIX}/lib
|
||||
${VOLK_ROOT}/lib
|
||||
$ENV{VOLK_ROOT}/lib
|
||||
${VOLK_ROOT}/lib64
|
||||
$ENV{VOLK_ROOT}/lib64
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(VOLK DEFAULT_MSG VOLK_LIBRARIES VOLK_INCLUDE_DIRS)
|
||||
mark_as_advanced(VOLK_LIBRARIES VOLK_INCLUDE_DIRS VOLK_VERSION)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(VOLK DEFAULT_MSG VOLK_LIBRARIES VOLK_INCLUDE_DIRS)
|
||||
MARK_AS_ADVANCED(VOLK_LIBRARIES VOLK_INCLUDE_DIRS VOLK_VERSION)
|
||||
if(VOLK_FOUND AND NOT TARGET Volk::volk)
|
||||
add_library(Volk::volk SHARED IMPORTED)
|
||||
set_target_properties(Volk::volk PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${VOLK_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${VOLK_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${VOLK_LIBRARIES}"
|
||||
)
|
||||
endif()
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -15,35 +15,56 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
#
|
||||
# Provides the following imported target:
|
||||
# Volkgnsssdr::volkgnsssdr
|
||||
#
|
||||
|
||||
|
||||
########################################################################
|
||||
# Find VOLK (Vector-Optimized Library of Kernels) GNSS-SDR library
|
||||
########################################################################
|
||||
|
||||
INCLUDE(FindPkgConfig)
|
||||
PKG_CHECK_MODULES(PC_VOLK_GNSSSDR volk_gnsssdr)
|
||||
include(FindPkgConfig)
|
||||
pkg_check_modules(PC_VOLK_GNSSSDR volk_gnsssdr)
|
||||
|
||||
FIND_PATH(
|
||||
VOLK_GNSSSDR_INCLUDE_DIRS
|
||||
find_path(VOLK_GNSSSDR_INCLUDE_DIRS
|
||||
NAMES volk_gnsssdr/volk_gnsssdr.h
|
||||
HINTS $ENV{VOLK_GNSSSDR_DIR}/include
|
||||
${PC_VOLK_GNSSSDR_INCLUDEDIR}
|
||||
${PC_VOLK_GNSSSDR_INCLUDEDIR}
|
||||
PATHS /usr/local/include
|
||||
/usr/include
|
||||
${GNURADIO_INSTALL_PREFIX}/include
|
||||
${VOLKGNSSSDR_ROOT}/include
|
||||
$ENV{VOLKGNSSSDR_ROOT}/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(
|
||||
VOLK_GNSSSDR_LIBRARIES
|
||||
find_library(VOLK_GNSSSDR_LIBRARIES
|
||||
NAMES volk_gnsssdr
|
||||
HINTS $ENV{VOLK_GNSSSDR_DIR}/lib
|
||||
${PC_VOLK_GNSSSDR_LIBDIR}
|
||||
${PC_VOLK_GNSSSDR_LIBDIR}
|
||||
PATHS /usr/local/lib
|
||||
/usr/local/lib64
|
||||
/usr/lib
|
||||
/usr/lib64
|
||||
${GNURADIO_INSTALL_PREFIX}/lib
|
||||
${VOLKGNSSSDR_ROOT}/lib
|
||||
$ENV{VOLKGNSSSDR_ROOT}/lib
|
||||
${VOLKGNSSSDR_ROOT}/lib64
|
||||
$ENV{VOLKGNSSSDR_ROOT}/lib64
|
||||
)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(VOLK_GNSSSDR DEFAULT_MSG VOLK_GNSSSDR_LIBRARIES VOLK_GNSSSDR_INCLUDE_DIRS)
|
||||
MARK_AS_ADVANCED(VOLK_GNSSSDR_LIBRARIES VOLK_GNSSSDR_INCLUDE_DIRS)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(VOLKGNSSSDR DEFAULT_MSG VOLK_GNSSSDR_LIBRARIES VOLK_GNSSSDR_INCLUDE_DIRS)
|
||||
mark_as_advanced(VOLK_GNSSSDR_LIBRARIES VOLK_GNSSSDR_INCLUDE_DIRS)
|
||||
|
||||
|
||||
if(VOLKGNSSSDR_FOUND AND NOT TARGET Volkgnsssdr::volkgnsssdr)
|
||||
add_library(Volkgnsssdr::volkgnsssdr SHARED IMPORTED)
|
||||
set_target_properties(Volkgnsssdr::volkgnsssdr PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${VOLK_GNSSSDR_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${VOLK_GNSSSDR_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${VOLK_GNSSSDR_LIBRARIES}"
|
||||
)
|
||||
endif()
|
219
cmake/Modules/GnsssdrBuildTypes.cmake
Normal file
219
cmake/Modules/GnsssdrBuildTypes.cmake
Normal file
@ -0,0 +1,219 @@
|
||||
# Copyright (C) 2011-2018 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
# GNSS-SDR is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# GNSS-SDR is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
if(DEFINED __INCLUDED_GNSSSDR_BUILD_TYPES_CMAKE)
|
||||
return()
|
||||
endif()
|
||||
set(__INCLUDED_GNSSSDR_BUILD_TYPES_CMAKE TRUE)
|
||||
|
||||
# Standard CMake Build Types and their basic CFLAGS:
|
||||
# - None: nothing set
|
||||
# - Debug: -O2 -g
|
||||
# - Release: -O3
|
||||
# - RelWithDebInfo: -O3 -g
|
||||
# - MinSizeRel: -Os
|
||||
|
||||
# Additional Build Types, defined below:
|
||||
# - NoOptWithASM: -O0 -g -save-temps
|
||||
# - O2WithASM: -O2 -g -save-temps
|
||||
# - O3WithASM: -O3 -g -save-temps
|
||||
|
||||
# Defines the list of acceptable cmake build types. When adding a new
|
||||
# build type below, make sure to add it to this list.
|
||||
list(APPEND AVAIL_BUILDTYPES
|
||||
None Debug Release RelWithDebInfo MinSizeRel
|
||||
Coverage NoOptWithASM O2WithASM O3WithASM ASAN
|
||||
)
|
||||
|
||||
########################################################################
|
||||
# GNSSSDR_CHECK_BUILD_TYPE(build type)
|
||||
#
|
||||
# Use this to check that the build type set in CMAKE_BUILD_TYPE on the
|
||||
# commandline is one of the valid build types used by this project. It
|
||||
# checks the value set in the cmake interface against the list of
|
||||
# known build types in AVAIL_BUILDTYPES. If the build type is found,
|
||||
# the function exits immediately. If nothing is found by the end of
|
||||
# checking all available build types, we exit with an error and list
|
||||
# the avialable build types.
|
||||
########################################################################
|
||||
function(GNSSSDR_CHECK_BUILD_TYPE settype)
|
||||
string(TOUPPER ${settype} _settype)
|
||||
foreach(btype ${AVAIL_BUILDTYPES})
|
||||
string(TOUPPER ${btype} _btype)
|
||||
if(${_settype} STREQUAL ${_btype})
|
||||
return() # found it; exit cleanly
|
||||
endif()
|
||||
endforeach()
|
||||
# Build type not found; error out
|
||||
message(FATAL_ERROR "Build type '${settype}' not valid, must be one of: ${AVAIL_BUILDTYPES}")
|
||||
endfunction()
|
||||
|
||||
|
||||
########################################################################
|
||||
# For GCC and Clang, we can set a build type:
|
||||
#
|
||||
# -DCMAKE_BUILD_TYPE=Coverage
|
||||
#
|
||||
# This type uses no optimization (-O0), outputs debug symbols (-g) and
|
||||
# outputs all intermediary files the build system produces, including
|
||||
# all assembly (.s) files. Look in the build directory for these
|
||||
# files.
|
||||
# NOTE: This is not defined on Windows systems.
|
||||
########################################################################
|
||||
if(NOT WIN32)
|
||||
set(CMAKE_CXX_FLAGS_COVERAGE "-Wall -pedantic -pthread -g -O0 -fprofile-arcs -ftest-coverage" CACHE STRING
|
||||
"Flags used by the C++ compiler during Coverage builds." FORCE)
|
||||
set(CMAKE_C_FLAGS_COVERAGE "-Wall -pedantic -pthread -g -O0 -fprofile-arcs -ftest-coverage" CACHE STRING
|
||||
"Flags used by the C compiler during Coverage builds." FORCE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS_COVERAGE
|
||||
"-W" CACHE STRING
|
||||
"Flags used for linking binaries during Coverage builds." FORCE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE
|
||||
"-W" CACHE STRING
|
||||
"Flags used by the shared lib linker during Coverage builds." FORCE)
|
||||
|
||||
mark_as_advanced(
|
||||
CMAKE_CXX_FLAGS_COVERAGE
|
||||
CMAKE_C_FLAGS_COVERAGE
|
||||
CMAKE_EXE_LINKER_FLAGS_COVERAGE
|
||||
CMAKE_SHARED_LINKER_FLAGS_COVERAGE)
|
||||
endif()
|
||||
|
||||
|
||||
########################################################################
|
||||
# For GCC and Clang, we can set a build type:
|
||||
#
|
||||
# -DCMAKE_BUILD_TYPE=NoOptWithASM
|
||||
#
|
||||
# This type uses no optimization (-O0), outputs debug symbols (-g) and
|
||||
# outputs all intermediary files the build system produces, including
|
||||
# all assembly (.s) files. Look in the build directory for these
|
||||
# files.
|
||||
# NOTE: This is not defined on Windows systems.
|
||||
########################################################################
|
||||
if(NOT WIN32)
|
||||
set(CMAKE_CXX_FLAGS_NOOPTWITHASM "-Wall -save-temps -g -O0" CACHE STRING
|
||||
"Flags used by the C++ compiler during NoOptWithASM builds." FORCE)
|
||||
set(CMAKE_C_FLAGS_NOOPTWITHASM "-Wall -save-temps -g -O0" CACHE STRING
|
||||
"Flags used by the C compiler during NoOptWithASM builds." FORCE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS_NOOPTWITHASM
|
||||
"-W" CACHE STRING
|
||||
"Flags used for linking binaries during NoOptWithASM builds." FORCE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_NOOPTWITHASM
|
||||
"-W" CACHE STRING
|
||||
"Flags used by the shared lib linker during NoOptWithASM builds." FORCE)
|
||||
|
||||
mark_as_advanced(
|
||||
CMAKE_CXX_FLAGS_NOOPTWITHASM
|
||||
CMAKE_C_FLAGS_NOOPTWITHASM
|
||||
CMAKE_EXE_LINKER_FLAGS_NOOPTWITHASM
|
||||
CMAKE_SHARED_LINKER_FLAGS_NOOPTWITHASM)
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
########################################################################
|
||||
# For GCC and Clang, we can set a build type:
|
||||
#
|
||||
# -DCMAKE_BUILD_TYPE=O2WithASM
|
||||
#
|
||||
# This type uses level 2 optimization (-O2), outputs debug symbols
|
||||
# (-g) and outputs all intermediary files the build system produces,
|
||||
# including all assembly (.s) files. Look in the build directory for
|
||||
# these files.
|
||||
# NOTE: This is not defined on Windows systems.
|
||||
########################################################################
|
||||
|
||||
if(NOT WIN32)
|
||||
set(CMAKE_CXX_FLAGS_O2WITHASM "-Wall -save-temps -g -O2" CACHE STRING
|
||||
"Flags used by the C++ compiler during O2WithASM builds." FORCE)
|
||||
set(CMAKE_C_FLAGS_O2WITHASM "-Wall -save-temps -g -O2" CACHE STRING
|
||||
"Flags used by the C compiler during O2WithASM builds." FORCE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS_O2WITHASM
|
||||
"-W" CACHE STRING
|
||||
"Flags used for linking binaries during O2WithASM builds." FORCE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_O2WITHASM
|
||||
"-W" CACHE STRING
|
||||
"Flags used by the shared lib linker during O2WithASM builds." FORCE)
|
||||
|
||||
mark_as_advanced(
|
||||
CMAKE_CXX_FLAGS_O2WITHASM
|
||||
CMAKE_C_FLAGS_O2WITHASM
|
||||
CMAKE_EXE_LINKER_FLAGS_O2WITHASM
|
||||
CMAKE_SHARED_LINKER_FLAGS_O2WITHASM)
|
||||
endif()
|
||||
|
||||
|
||||
########################################################################
|
||||
# For GCC and Clang, we can set a build type:
|
||||
#
|
||||
# -DCMAKE_BUILD_TYPE=O3WithASM
|
||||
#
|
||||
# This type uses level 3 optimization (-O3), outputs debug symbols
|
||||
# (-g) and outputs all intermediary files the build system produces,
|
||||
# including all assembly (.s) files. Look in the build directory for
|
||||
# these files.
|
||||
# NOTE: This is not defined on Windows systems.
|
||||
########################################################################
|
||||
|
||||
if(NOT WIN32)
|
||||
set(CMAKE_CXX_FLAGS_O3WITHASM "-Wall -save-temps -g -O3" CACHE STRING
|
||||
"Flags used by the C++ compiler during O3WithASM builds." FORCE)
|
||||
set(CMAKE_C_FLAGS_O3WITHASM "-Wall -save-temps -g -O3" CACHE STRING
|
||||
"Flags used by the C compiler during O3WithASM builds." FORCE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS_O3WITHASM
|
||||
"-W" CACHE STRING
|
||||
"Flags used for linking binaries during O3WithASM builds." FORCE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_O3WITHASM
|
||||
"-W" CACHE STRING
|
||||
"Flags used by the shared lib linker during O3WithASM builds." FORCE)
|
||||
|
||||
mark_as_advanced(
|
||||
CMAKE_CXX_FLAGS_O3WITHASM
|
||||
CMAKE_C_FLAGS_O3WITHASM
|
||||
CMAKE_EXE_LINKER_FLAGS_O3WITHASM
|
||||
CMAKE_SHARED_LINKER_FLAGS_O3WITHASM)
|
||||
endif()
|
||||
|
||||
|
||||
########################################################################
|
||||
# For GCC and Clang, we can set a build type:
|
||||
#
|
||||
# -DCMAKE_BUILD_TYPE=ASAN
|
||||
#
|
||||
# This type creates an address sanitized build (-fsanitize=address)
|
||||
# and defaults to the DebugParanoid linker flags.
|
||||
# NOTE: This is not defined on Windows systems.
|
||||
########################################################################
|
||||
if(NOT WIN32)
|
||||
set(CMAKE_CXX_FLAGS_ASAN "-Wall -Wextra -g -O2 -fsanitize=address -fno-omit-frame-pointer" CACHE STRING
|
||||
"Flags used by the C++ compiler during Address Sanitized builds." FORCE)
|
||||
set(CMAKE_C_FLAGS_ASAN "-Wall -Wextra -g -O2 -fsanitize=address -fno-omit-frame-pointer" CACHE STRING
|
||||
"Flags used by the C compiler during Address Sanitized builds." FORCE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS_ASAN
|
||||
"-W" CACHE STRING
|
||||
"Flags used for linking binaries during Address Sanitized builds." FORCE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_ASAN
|
||||
"-W" CACHE STRING
|
||||
"Flags used by the shared lib linker during Address Sanitized builds." FORCE)
|
||||
|
||||
mark_as_advanced(
|
||||
CMAKE_CXX_FLAGS_ASAN
|
||||
CMAKE_C_FLAGS_ASAN
|
||||
CMAKE_EXE_LINKER_FLAGS_ASAN
|
||||
CMAKE_SHARED_LINKER_ASAN)
|
||||
endif()
|
@ -15,54 +15,6 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
########################################################################
|
||||
# Setup the python interpreter:
|
||||
# This allows the user to specify a specific interpreter,
|
||||
# or finds the interpreter via the built-in cmake module.
|
||||
########################################################################
|
||||
#this allows the user to override PYTHON_EXECUTABLE
|
||||
if(PYTHON_EXECUTABLE)
|
||||
|
||||
set(PYTHONINTERP_FOUND TRUE)
|
||||
|
||||
#otherwise if not set, try to automatically find it
|
||||
else(PYTHON_EXECUTABLE)
|
||||
|
||||
#use the built-in find script
|
||||
set(Python_ADDITIONAL_VERSIONS 3.4 3.5 3.6)
|
||||
find_package(PythonInterp 2)
|
||||
|
||||
#and if that fails use the find program routine
|
||||
if(NOT PYTHONINTERP_FOUND)
|
||||
find_program(PYTHON_EXECUTABLE NAMES python python2 python2.7 python3)
|
||||
if(PYTHON_EXECUTABLE)
|
||||
set(PYTHONINTERP_FOUND TRUE)
|
||||
endif(PYTHON_EXECUTABLE)
|
||||
endif(NOT PYTHONINTERP_FOUND)
|
||||
|
||||
endif(PYTHON_EXECUTABLE)
|
||||
|
||||
if (CMAKE_CROSSCOMPILING)
|
||||
set(QA_PYTHON_EXECUTABLE "/usr/bin/python")
|
||||
else (CMAKE_CROSSCOMPILING)
|
||||
set(QA_PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE})
|
||||
endif(CMAKE_CROSSCOMPILING)
|
||||
|
||||
#make the path to the executable appear in the cmake gui
|
||||
set(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "python interpreter")
|
||||
set(QA_PYTHON_EXECUTABLE ${QA_PYTHON_EXECUTABLE} CACHE FILEPATH "python interpreter for QA tests")
|
||||
|
||||
#make sure we can use -B with python (introduced in 2.6)
|
||||
if(PYTHON_EXECUTABLE)
|
||||
execute_process(
|
||||
COMMAND ${PYTHON_EXECUTABLE} -B -c ""
|
||||
OUTPUT_QUIET ERROR_QUIET
|
||||
RESULT_VARIABLE PYTHON_HAS_DASH_B_RESULT
|
||||
)
|
||||
if(PYTHON_HAS_DASH_B_RESULT EQUAL 0)
|
||||
set(PYTHON_DASH_B "-B")
|
||||
endif()
|
||||
endif(PYTHON_EXECUTABLE)
|
||||
|
||||
########################################################################
|
||||
# Check for the existence of a python module:
|
||||
@ -71,25 +23,97 @@ endif(PYTHON_EXECUTABLE)
|
||||
# - cmd an additional command to run
|
||||
# - have the result variable to set
|
||||
########################################################################
|
||||
macro(GNSSSDR_PYTHON_CHECK_MODULE desc mod cmd have)
|
||||
message(STATUS "Python checking for ${desc}")
|
||||
macro(GNSSSDR_PYTHON_CHECK_MODULE_RAW desc python_code have)
|
||||
execute_process(
|
||||
COMMAND ${PYTHON_EXECUTABLE} -c "
|
||||
#########################################
|
||||
try: import ${mod}
|
||||
except:
|
||||
try: ${mod}
|
||||
except: exit(-1)
|
||||
try: assert ${cmd}
|
||||
except: exit(-1)
|
||||
#########################################"
|
||||
RESULT_VARIABLE ${have}
|
||||
COMMAND ${PYTHON_EXECUTABLE} -c "${python_code}"
|
||||
OUTPUT_QUIET ERROR_QUIET
|
||||
RESULT_VARIABLE return_code
|
||||
)
|
||||
if(${have} EQUAL 0)
|
||||
if(return_code EQUAL 0)
|
||||
message(STATUS "Python checking for ${desc} - found")
|
||||
set(${have} TRUE)
|
||||
else(${have} EQUAL 0)
|
||||
else()
|
||||
message(STATUS "Python checking for ${desc} - not found")
|
||||
set(${have} FALSE)
|
||||
endif(${have} EQUAL 0)
|
||||
endmacro(GNSSSDR_PYTHON_CHECK_MODULE)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(GNSSSDR_PYTHON_CHECK_MODULE desc mod cmd have)
|
||||
gnsssdr_python_check_module_raw(
|
||||
"${desc}" "
|
||||
#########################################
|
||||
try:
|
||||
import ${mod}
|
||||
assert ${cmd}
|
||||
except (ImportError, AssertionError): exit(-1)
|
||||
except: pass
|
||||
#########################################"
|
||||
"${have}")
|
||||
endmacro()
|
||||
|
||||
|
||||
########################################################################
|
||||
# Setup the python interpreter:
|
||||
# This allows the user to specify a specific interpreter,
|
||||
# or finds the interpreter via the built-in cmake module.
|
||||
########################################################################
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||
if(PYTHON_EXECUTABLE)
|
||||
message(STATUS "User set python executable ${PYTHON_EXECUTABLE}")
|
||||
string(FIND "${PYTHON_EXECUTABLE}" "python3" IS_PYTHON3)
|
||||
if(IS_PYTHON3 EQUAL -1)
|
||||
find_package(PythonInterp ${GNSSSDR_PYTHON_MIN_VERSION} REQUIRED)
|
||||
else()
|
||||
find_package(PythonInterp ${GNSSSDR_PYTHON3_MIN_VERSION} REQUIRED)
|
||||
endif()
|
||||
gnsssdr_python_check_module("python >= ${GNSSSDR_PYTHON_MIN_VERSION}" sys "sys.version.split()[0] >= '${GNSSSDR_PYTHON_MIN_VERSION}'" PYTHON_MIN_VER_FOUND)
|
||||
gnsssdr_python_check_module("mako >= ${GNSSSDR_MAKO_MIN_VERSION}" mako "mako.__version__ >= '${GNSSSDR_MAKO_MIN_VERSION}'" MAKO_FOUND)
|
||||
gnsssdr_python_check_module("six - python 2 and 3 compatibility library" six "True" SIX_FOUND)
|
||||
else()
|
||||
message(STATUS "PYTHON_EXECUTABLE not set - trying by default python2")
|
||||
message(STATUS "Use -DPYTHON_EXECUTABLE=/path/to/python3 to build for python3.")
|
||||
find_package(PythonInterp ${GNSSSDR_PYTHON_MIN_VERSION})
|
||||
if(NOT PYTHONINTERP_FOUND)
|
||||
message(STATUS "python2 not found - trying with python3")
|
||||
find_package(PythonInterp ${GNSSSDR_PYTHON3_MIN_VERSION} REQUIRED)
|
||||
endif()
|
||||
gnsssdr_python_check_module("python >= ${GNSSSDR_PYTHON_MIN_VERSION}" sys "sys.version.split()[0] >= '${GNSSSDR_PYTHON_MIN_VERSION}'" PYTHON_MIN_VER_FOUND)
|
||||
gnsssdr_python_check_module("mako >= ${GNSSSDR_MAKO_MIN_VERSION}" mako "mako.__version__ >= '${GNSSSDR_MAKO_MIN_VERSION}'" MAKO_FOUND)
|
||||
gnsssdr_python_check_module("six - python 2 and 3 compatibility library" six "True" SIX_FOUND)
|
||||
endif()
|
||||
find_package(PythonLibs ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} EXACT)
|
||||
else()
|
||||
find_package(Python3 COMPONENTS Interpreter)
|
||||
if(Python3_FOUND)
|
||||
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
|
||||
set(PYTHON_VERSION_MAJOR ${Python3_VERSION_MAJOR})
|
||||
gnsssdr_python_check_module("python >= ${GNSSSDR_PYTHON_MIN_VERSION}" sys "sys.version.split()[0] >= '${GNSSSDR_PYTHON_MIN_VERSION}'" PYTHON_MIN_VER_FOUND)
|
||||
gnsssdr_python_check_module("mako >= ${GNSSSDR_MAKO_MIN_VERSION}" mako "mako.__version__ >= '${GNSSSDR_MAKO_MIN_VERSION}'" MAKO_FOUND)
|
||||
gnsssdr_python_check_module("six - python 2 and 3 compatibility library" six "True" SIX_FOUND)
|
||||
endif()
|
||||
if(NOT Python3_FOUND OR NOT MAKO_FOUND OR NOT SIX_FOUND)
|
||||
find_package(Python2 COMPONENTS Interpreter)
|
||||
if(Python2_FOUND)
|
||||
set(PYTHON_EXECUTABLE ${Python2_EXECUTABLE})
|
||||
set(PYTHON_VERSION_MAJOR ${Python2_VERSION_MAJOR})
|
||||
gnsssdr_python_check_module("python >= ${GNSSSDR_PYTHON_MIN_VERSION}" sys "sys.version.split()[0] >= '${GNSSSDR_PYTHON_MIN_VERSION}'" PYTHON_MIN_VER_FOUND)
|
||||
gnsssdr_python_check_module("mako >= ${GNSSSDR_MAKO_MIN_VERSION}" mako "mako.__version__ >= '${GNSSSDR_MAKO_MIN_VERSION}'" MAKO_FOUND)
|
||||
gnsssdr_python_check_module("six - python 2 and 3 compatibility library" six "True" SIX_FOUND)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(${PYTHON_VERSION_MAJOR} VERSION_EQUAL 3)
|
||||
set(PYTHON3 TRUE)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
set(QA_PYTHON_EXECUTABLE "/usr/bin/python")
|
||||
else()
|
||||
set(QA_PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE})
|
||||
endif()
|
||||
|
||||
# make the path to the executable appear in the cmake gui
|
||||
set(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE} CACHE FILEPATH "python interpreter")
|
||||
set(QA_PYTHON_EXECUTABLE ${QA_PYTHON_EXECUTABLE} CACHE FILEPATH "python interpreter for QA tests")
|
||||
|
@ -16,14 +16,14 @@
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
##############################################################################
|
||||
# check if the compiler defines the architecture as ARM and set the
|
||||
# check if the compiler defines the architecture as ARM and set the
|
||||
# version, if found.
|
||||
#
|
||||
# - Anthony Arnold
|
||||
##############################################################################
|
||||
|
||||
if (__TEST_FOR_ARM_INCLUDED)
|
||||
return ()
|
||||
if(__TEST_FOR_ARM_INCLUDED)
|
||||
return()
|
||||
endif()
|
||||
set(__TEST_FOR_ARM_INCLUDED TRUE)
|
||||
|
||||
@ -31,27 +31,27 @@ set(__TEST_FOR_ARM_INCLUDED TRUE)
|
||||
# output variable if found.
|
||||
function(check_arm_version ppdef input_string version output_var)
|
||||
string(REGEX MATCH "${ppdef}" _VERSION_MATCH "${input_string}")
|
||||
if (NOT _VERSION_MATCH STREQUAL "")
|
||||
if(NOT _VERSION_MATCH STREQUAL "")
|
||||
set(${output_var} "${version}" PARENT_SCOPE)
|
||||
endif(NOT _VERSION_MATCH STREQUAL "")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
message(STATUS "Checking for ARM")
|
||||
|
||||
set (IS_ARM NO)
|
||||
set (ARM_VERSION "")
|
||||
set(IS_ARM NO)
|
||||
set(ARM_VERSION "")
|
||||
|
||||
if (CMAKE_COMPILER_IS_GNUCXX)
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
execute_process(COMMAND echo "int main(){}"
|
||||
COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -dM -E -
|
||||
OUTPUT_VARIABLE TEST_FOR_ARM_RESULTS)
|
||||
|
||||
string(REGEX MATCH "__arm" ARM_FOUND "${TEST_FOR_ARM_RESULTS}")
|
||||
if(ARM_FOUND STREQUAL "")
|
||||
string(REGEX MATCH "__aarch64" ARM_FOUND "${TEST_FOR_ARM_RESULTS}")
|
||||
endif(ARM_FOUND STREQUAL "")
|
||||
string(REGEX MATCH "__aarch64" ARM_FOUND "${TEST_FOR_ARM_RESULTS}")
|
||||
endif()
|
||||
|
||||
if (NOT ARM_FOUND STREQUAL "")
|
||||
if(NOT ARM_FOUND STREQUAL "")
|
||||
set(IS_ARM YES)
|
||||
message(STATUS "ARM system detected")
|
||||
|
||||
@ -83,22 +83,21 @@ if (CMAKE_COMPILER_IS_GNUCXX)
|
||||
check_arm_version("__ARM_ARCH_8A" ${TEST_FOR_ARM_RESULTS} "armv8-a" ARM_VERSION)
|
||||
|
||||
# anything else just define as arm
|
||||
if (ARM_VERSION STREQUAL "")
|
||||
if(ARM_VERSION STREQUAL "")
|
||||
message(STATUS "Couldn't detect ARM version. Setting to 'arm'")
|
||||
set(ARM_VERSION "arm")
|
||||
else (ARM_VERSION STREQUAL "")
|
||||
else()
|
||||
message(STATUS "ARM version ${ARM_VERSION} detected")
|
||||
endif (ARM_VERSION STREQUAL "")
|
||||
|
||||
else (NOT ARM_FOUND STREQUAL "")
|
||||
message(STATUS "System is not ARM")
|
||||
endif(NOT ARM_FOUND STREQUAL "")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "System is not ARM")
|
||||
endif()
|
||||
|
||||
else (CMAKE_COMPILE_IS_GNUCXX)
|
||||
else()
|
||||
# TODO: Other compilers
|
||||
message(STATUS "Not detecting ARM on non-GNUCXX compiler. Defaulting to false")
|
||||
message(STATUS "If you are compiling for ARM, set IS_ARM=ON manually")
|
||||
endif(CMAKE_COMPILER_IS_GNUCXX)
|
||||
endif()
|
||||
|
||||
set(IS_ARM ${IS_ARM} CACHE BOOL "Compiling for ARM")
|
||||
set(ARM_VERSION ${ARM_VERSION} CACHE STRING "ARM version")
|
||||
|
@ -22,21 +22,20 @@
|
||||
# - Anthony Arnold
|
||||
###############################################################################
|
||||
|
||||
|
||||
function (test_for_sse h_file result_var name)
|
||||
if (NOT DEFINED ${result_var})
|
||||
function(test_for_sse h_file result_var name)
|
||||
if(NOT DEFINED ${result_var})
|
||||
execute_process(COMMAND echo "#include <${h_file}>"
|
||||
COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -c -x c++ -
|
||||
RESULT_VARIABLE COMPILE_RESULT
|
||||
OUTPUT_QUIET ERROR_QUIET)
|
||||
COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} -c -x c++ -
|
||||
RESULT_VARIABLE COMPILE_RESULT
|
||||
OUTPUT_QUIET ERROR_QUIET)
|
||||
set(detected 0)
|
||||
if (COMPILE_RESULT EQUAL 0)
|
||||
if(COMPILE_RESULT EQUAL 0)
|
||||
message(STATUS "Detected ${name}")
|
||||
set(detected 1)
|
||||
endif(COMPILE_RESULT EQUAL 0)
|
||||
endif()
|
||||
set(${result_var} ${detected} CACHE INTERNAL "${name} Available")
|
||||
endif (NOT DEFINED ${result_var})
|
||||
endfunction(test_for_sse)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
message(STATUS "Testing for SIMD extensions")
|
||||
|
||||
|
@ -18,20 +18,20 @@
|
||||
##########################################################
|
||||
# Toolchain file for Open Embedded
|
||||
##########################################################
|
||||
set( CMAKE_SYSTEM_NAME Linux )
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
|
||||
string(REGEX MATCH "sysroots/([a-zA-Z0-9]+)" CMAKE_SYSTEM_PROCESSOR $ENV{SDKTARGETSYSROOT})
|
||||
string(REGEX REPLACE "sysroots/" "" CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR})
|
||||
|
||||
set( CMAKE_CXX_FLAGS $ENV{CXXFLAGS} CACHE STRING "" FORCE )
|
||||
set( CMAKE_C_FLAGS $ENV{CFLAGS} CACHE STRING "" FORCE ) #same flags for C sources
|
||||
set( CMAKE_LDFLAGS_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE ) #same flags for C sources
|
||||
set( CMAKE_LIBRARY_PATH $ENV{OECORE_TARGET_SYSROOT}/usr/lib )
|
||||
set(CMAKE_CXX_FLAGS $ENV{CXXFLAGS} CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_FLAGS $ENV{CFLAGS} CACHE STRING "" FORCE) # same flags for C sources
|
||||
set(CMAKE_LDFLAGS_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE) # same flags for C sources
|
||||
set(CMAKE_LIBRARY_PATH $ENV{OECORE_TARGET_SYSROOT}/usr/lib)
|
||||
|
||||
set( CMAKE_FIND_ROOT_PATH $ENV{OECORE_TARGET_SYSROOT} $ENV{OECORE_NATIVE_SYSROOT} )
|
||||
set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
|
||||
set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
|
||||
set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
|
||||
set(CMAKE_FIND_ROOT_PATH $ENV{OECORE_TARGET_SYSROOT} $ENV{OECORE_NATIVE_SYSROOT})
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
||||
set ( ORC_INCLUDE_DIRS $ENV{OECORE_TARGET_SYSROOT}/usr/include/orc-0.4 )
|
||||
set ( ORC_LIBRARY_DIRS $ENV{OECORE_TARGET_SYSROOT}/usr/lib )
|
||||
set(ORC_INCLUDE_DIRS $ENV{OECORE_TARGET_SYSROOT}/usr/include/orc-0.4)
|
||||
set(ORC_LIBRARY_DIRS $ENV{OECORE_TARGET_SYSROOT}/usr/lib)
|
||||
|
@ -17,22 +17,22 @@
|
||||
|
||||
if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
endif()
|
||||
|
||||
file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
|
||||
string(REGEX REPLACE "\n" ";" files "${files}")
|
||||
foreach(file ${files})
|
||||
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
|
||||
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
exec_program(
|
||||
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
|
||||
execute_process(
|
||||
COMMAND @CMAKE_COMMAND@ -E remove \"$ENV{DESTDIR}${file}\"
|
||||
OUTPUT_VARIABLE rm_out
|
||||
RETURN_VALUE rm_retval
|
||||
)
|
||||
RESULT_VARIABLE rm_retval
|
||||
)
|
||||
if(NOT "${rm_retval}" STREQUAL 0)
|
||||
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
|
||||
endif(NOT "${rm_retval}" STREQUAL 0)
|
||||
else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
|
||||
endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
endforeach(file)
|
||||
endif()
|
||||
endforeach()
|
||||
|
@ -39,7 +39,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=217
|
||||
GNSS-SDR.SUPL_MNS=7
|
||||
GNSS-SDR.SUPL_MNC=7
|
||||
GNSS-SDR.SUPL_LAC=861
|
||||
GNSS-SDR.SUPL_CI=40184
|
||||
|
||||
@ -182,8 +182,6 @@ Resampler.implementation=Pass_Through
|
||||
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler
|
||||
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
|
||||
Acquisition.item_type=gr_complex
|
||||
;#if: Signal intermediate frequency in [Hz]
|
||||
Acquisition.if=0
|
||||
;#sampled_ms: Signal block duration for the acquisition signal detection [ms]
|
||||
Acquisition.sampled_ms=1
|
||||
;#threshold: Acquisition threshold
|
||||
|
63
conf/gnss-sdr-kalman-bayes.conf
Normal file
63
conf/gnss-sdr-kalman-bayes.conf
Normal file
@ -0,0 +1,63 @@
|
||||
[GNSS-SDR]
|
||||
|
||||
;######### GLOBAL OPTIONS ##################
|
||||
;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [samples per second].
|
||||
GNSS-SDR.internal_fs_sps=2000000
|
||||
GNSS-SDR.internal_fs_hz=2000000
|
||||
|
||||
;######### SIGNAL_SOURCE CONFIG ############
|
||||
SignalSource.implementation=File_Signal_Source
|
||||
SignalSource.filename=/home/glamountain/gnss-sdr/data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat
|
||||
SignalSource.item_type=ishort
|
||||
SignalSource.sampling_frequency=4000000
|
||||
SignalSource.freq=1575420000
|
||||
SignalSource.samples=0
|
||||
|
||||
;######### SIGNAL_CONDITIONER CONFIG ############
|
||||
SignalConditioner.implementation=Signal_Conditioner
|
||||
DataTypeAdapter.implementation=Ishort_To_Complex
|
||||
InputFilter.implementation=Pass_Through
|
||||
InputFilter.item_type=gr_complex
|
||||
Resampler.implementation=Direct_Resampler
|
||||
Resampler.sample_freq_in=4000000
|
||||
Resampler.sample_freq_out=2000000
|
||||
Resampler.item_type=gr_complex
|
||||
|
||||
;######### CHANNELS GLOBAL CONFIG ############
|
||||
Channels_1C.count=8
|
||||
Channels.in_acquisition=1
|
||||
Channel.signal=1C
|
||||
|
||||
;######### ACQUISITION GLOBAL CONFIG ############
|
||||
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
|
||||
Acquisition_1C.item_type=gr_complex
|
||||
Acquisition_1C.threshold=0.008
|
||||
Acquisition_1C.doppler_max=10000
|
||||
Acquisition_1C.doppler_step=250
|
||||
Acquisition_1C.dump=false
|
||||
Acquisition_1C.dump_filename=../data/kalman/acq_dump
|
||||
|
||||
;######### TRACKING GLOBAL CONFIG ############
|
||||
Tracking_1C.implementation=GPS_L1_CA_KF_Tracking
|
||||
Tracking_1C.item_type=gr_complex
|
||||
Tracking_1C.pll_bw_hz=40.0;
|
||||
Tracking_1C.dll_bw_hz=4.0;
|
||||
Tracking_1C.order=3;
|
||||
Tracking_1C.dump=true
|
||||
Tracking_1C.dump_filename=../data/kalman/epl_tracking_ch_
|
||||
Tracking_1C.bce_run = true;
|
||||
Tracking_1C.p_transient = 0;
|
||||
Tracking_1C.s_transient = 100;
|
||||
|
||||
;######### TELEMETRY DECODER GPS CONFIG ############
|
||||
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
|
||||
|
||||
;######### OBSERVABLES CONFIG ############
|
||||
Observables.implementation=GPS_L1_CA_Observables
|
||||
|
||||
;######### PVT CONFIG ############
|
||||
PVT.implementation=GPS_L1_CA_PVT
|
||||
PVT.averaging_depth=100
|
||||
PVT.flag_averaging=true
|
||||
PVT.output_rate_ms=10
|
||||
PVT.display_rate_ms=500
|
@ -23,7 +23,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
121
conf/gnss-sdr_BDS_B1I_byte.conf
Normal file
121
conf/gnss-sdr_BDS_B1I_byte.conf
Normal file
@ -0,0 +1,121 @@
|
||||
; This is a GNSS-SDR configuration file
|
||||
; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/
|
||||
|
||||
; You can define your own receiver and invoke it by doing
|
||||
; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf
|
||||
;
|
||||
|
||||
[GNSS-SDR]
|
||||
|
||||
;######### GLOBAL OPTIONS ##################
|
||||
;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [samples per second].
|
||||
GNSS-SDR.internal_fs_sps=25000000
|
||||
|
||||
;######### CONTROL_THREAD CONFIG ############
|
||||
ControlThread.wait_for_flowgraph=false
|
||||
|
||||
;######### SIGNAL_SOURCE CONFIG ############
|
||||
SignalSource.implementation=File_Signal_Source
|
||||
SignalSource.filename=/home/dmiralles/Documents/GNSS-Metadata-Standard/install/BdsB1IStr01.dat
|
||||
SignalSource.item_type=byte
|
||||
SignalSource.sampling_frequency=25000000
|
||||
SignalSource.samples=0
|
||||
SignalSource.repeat=false
|
||||
SignalSource.dump=false
|
||||
SignalSource.enable_throttle_control=false
|
||||
|
||||
;######### SIGNAL_CONDITIONER CONFIG ############
|
||||
SignalConditioner.implementation=Signal_Conditioner
|
||||
DataTypeAdapter.implementation=Byte_To_Short
|
||||
InputFilter.implementation=Freq_Xlating_Fir_Filter
|
||||
InputFilter.input_item_type=short
|
||||
InputFilter.output_item_type=gr_complex
|
||||
InputFilter.taps_item_type=float
|
||||
InputFilter.number_of_taps=5
|
||||
InputFilter.number_of_bands=2
|
||||
InputFilter.band1_begin=0.0
|
||||
InputFilter.band1_end=0.70
|
||||
InputFilter.band2_begin=0.80
|
||||
InputFilter.band2_end=1.0
|
||||
InputFilter.ampl1_begin=1.0
|
||||
InputFilter.ampl1_end=1.0
|
||||
InputFilter.ampl2_begin=0.0
|
||||
InputFilter.ampl2_end=0.0
|
||||
InputFilter.band1_error=1.0
|
||||
InputFilter.band2_error=1.0
|
||||
InputFilter.filter_type=bandpass
|
||||
InputFilter.grid_density=16
|
||||
InputFilter.sampling_frequency=25000000
|
||||
InputFilter.IF=6250000
|
||||
Resampler.implementation=Pass_Through
|
||||
Resampler.sample_freq_in=25000000
|
||||
Resampler.sample_freq_out=25000000
|
||||
Resampler.item_type=gr_complex
|
||||
|
||||
|
||||
;######### CHANNELS GLOBAL CONFIG ############
|
||||
Channels_B1.count=10
|
||||
Channels.in_acquisition=1
|
||||
Channel.signal=B1
|
||||
|
||||
Channel0.satellite = 6;
|
||||
Channel1.satellite = 8;
|
||||
Channel2.satellite = 9;
|
||||
Channel3.satellite = 13;
|
||||
Channel4.satellite = 17;
|
||||
Channel5.satellite = 1;
|
||||
Channel6.satellite = 2;
|
||||
Channel7.satellite = 3;
|
||||
Channel8.satellite = 4;
|
||||
Channel9.satellite = 5;
|
||||
|
||||
;######### ACQUISITION GLOBAL CONFIG ############
|
||||
Acquisition_B1.implementation=BEIDOU_B1I_PCPS_Acquisition
|
||||
Acquisition_B1.item_type=gr_complex
|
||||
Acquisition_B1.coherent_integration_time_ms=1
|
||||
Acquisition_B1.threshold=0.0038
|
||||
;Acquisition_B1.pfa=0.0000001;
|
||||
Acquisition_B1.doppler_max=15000
|
||||
Acquisition_B1.doppler_step=100
|
||||
Acquisition_B1.dump=true
|
||||
Acquisition_B1.dump_filename=./bds_acq
|
||||
Acquisition_B1.blocking=false;
|
||||
Acquisition_B1.use_CFAR_algorithm=true;
|
||||
Acquisition_B1.bit_transition_flag = false;
|
||||
|
||||
|
||||
;######### TRACKING GLOBAL CONFIG ############
|
||||
Tracking_B1.implementation=BEIDOU_B1I_DLL_PLL_Tracking
|
||||
Tracking_B1.item_type=gr_complex
|
||||
Tracking_B1.pll_bw_hz=25.0;
|
||||
Tracking_B1.dll_bw_hz=2.50;
|
||||
Tracking_B1.dump=true;
|
||||
Tracking_B1.dump_filename=./epl_tracking_ch_
|
||||
|
||||
|
||||
;######### TELEMETRY DECODER GPS CONFIG ############
|
||||
TelemetryDecoder_B1.implementation=BEIDOU_B1I_Telemetry_Decoder
|
||||
TelemetryDecoder_B1.dump=false
|
||||
|
||||
|
||||
;######### OBSERVABLES CONFIG ############
|
||||
Observables.implementation=Hybrid_Observables
|
||||
Observables.dump=true
|
||||
Observables.dump_filename=./observables.dat
|
||||
|
||||
|
||||
;######### PVT CONFIG ############
|
||||
PVT.implementation=RTKLIB_PVT
|
||||
PVT.positioning_mode=Single ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
|
||||
PVT.iono_model=OFF ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
|
||||
PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
|
||||
PVT.output_rate_ms=100
|
||||
PVT.display_rate_ms=500
|
||||
PVT.dump_filename=./PVT
|
||||
PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea;
|
||||
PVT.flag_nmea_tty_port=false;
|
||||
PVT.nmea_dump_devname=/dev/pts/4
|
||||
PVT.flag_rtcm_server=false
|
||||
PVT.flag_rtcm_tty_port=false
|
||||
PVT.rtcm_dump_devname=/dev/pts/1
|
||||
PVT.dump=true
|
100
conf/gnss-sdr_GLONASS_L1_ibyte.conf
Normal file
100
conf/gnss-sdr_GLONASS_L1_ibyte.conf
Normal file
@ -0,0 +1,100 @@
|
||||
; You can define your own receiver and invoke it by doing
|
||||
; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf
|
||||
;
|
||||
|
||||
[GNSS-SDR]
|
||||
|
||||
;######### GLOBAL OPTIONS ##################
|
||||
;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [Hz].
|
||||
GNSS-SDR.internal_fs_sps=6625000
|
||||
|
||||
;######### CONTROL_THREAD CONFIG ############
|
||||
ControlThread.wait_for_flowgraph=false
|
||||
|
||||
;######### SIGNAL_SOURCE CONFIG ############
|
||||
SignalSource.implementation=File_Signal_Source
|
||||
SignalSource.filename=/home/dmiralles/Documents/GSOC/GSOC2017/gnss-sdr/data/dmirallesNT1065_L2_20160831_fs6625e6_60e3_schar_1H.bin
|
||||
SignalSource.item_type=ibyte
|
||||
SignalSource.sampling_frequency=6625000
|
||||
SignalSource.freq=1602000000
|
||||
SignalSource.samples=0
|
||||
SignalSource.repeat=false
|
||||
SignalSource.sample_type=iq
|
||||
SignalSource.seconds_to_skip=0
|
||||
SignalSource.dump=false
|
||||
SignalSource.dump_filename=../data/signal_source.dat
|
||||
SignalSource.enable_throttle_control=false
|
||||
|
||||
|
||||
;######### SIGNAL_CONDITIONER CONFIG ############
|
||||
SignalConditioner.implementation=Signal_Conditioner
|
||||
|
||||
;DataTypeAdapter.implementation=Ishort_To_Complex
|
||||
DataTypeAdapter.implementation=Ibyte_To_Complex
|
||||
InputFilter.implementation=Pass_Through
|
||||
;InputFilter.input_item_type=gr_complex
|
||||
;InputFilter.output_item_type=gr_complex
|
||||
InputFilter.item_type=gr_complex
|
||||
;Resampler.implementation=Pass_Through
|
||||
;Resampler.item_type=gr_complex
|
||||
Resampler.implementation=Pass_Through
|
||||
;Resampler.sample_freq_in=4000000
|
||||
;Resampler.sample_freq_out=2000000
|
||||
;Resampler.item_type=gr_complex
|
||||
Resampler.item_type=gr_complex
|
||||
|
||||
;######### CHANNELS GLOBAL CONFIG ############
|
||||
Channels_1R.count=8 ;Assuming here that identifier `1r=R` defines GLONASS SP signals
|
||||
Channels.in_acquisition=1
|
||||
Channel.signal=1R
|
||||
;Channel.item_type=cshort
|
||||
|
||||
|
||||
;######### ACQUISITION GLOBAL CONFIG ############
|
||||
Acquisition_1R.dump=false
|
||||
Acquisition_1R.dump_filename=./acq_dump.dat
|
||||
Acquisition_1R.item_type=cshort
|
||||
Acquisition_1R.sampled_ms=1
|
||||
Acquisition_1R.implementation=GLONASS_L1_CA_PCPS_Acquisition
|
||||
Acquisition_1R.threshold=0.008
|
||||
;Acquisition_1C.pfa=0.000001
|
||||
Acquisition_1R.doppler_max=10000
|
||||
Acquisition_1R.doppler_step=250
|
||||
Acquisition_1R.tong_init_val=2
|
||||
Acquisition_1R.tong_max_val=10
|
||||
Acquisition_1R.tong_max_dwells=20
|
||||
|
||||
;######### TRACKING GLOBAL CONFIG ############
|
||||
Tracking_1R.implementation=GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking
|
||||
Tracking_1R.item_type=cshort
|
||||
Tracking_1R.dump=false
|
||||
Tracking_1R.dump_filename=../data/epl_tracking_ch_
|
||||
Tracking_1R.pll_bw_hz=40.0;
|
||||
Tracking_1R.dll_bw_hz=4.0;
|
||||
Tracking_1R.order=3;
|
||||
|
||||
;######### TELEMETRY DECODER GPS CONFIG ############
|
||||
TelemetryDecoder_1R.implementation=GLONASS_L1_CA_Telemetry_Decoder
|
||||
TelemetryDecoder_1R.dump=false
|
||||
|
||||
;######### OBSERVABLES CONFIG ############
|
||||
Observables.implementation=Hybrid_Observables
|
||||
Observables.dump=false
|
||||
Observables.dump_filename=./observables.dat
|
||||
|
||||
|
||||
;######### PVT CONFIG ############
|
||||
PVT.implementation=RTKLIB_PVT
|
||||
PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
|
||||
PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
|
||||
PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
|
||||
PVT.output_rate_ms=100
|
||||
PVT.display_rate_ms=500
|
||||
PVT.dump_filename=./PVT
|
||||
PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea;
|
||||
PVT.flag_nmea_tty_port=false;
|
||||
PVT.nmea_dump_devname=/dev/pts/4
|
||||
PVT.flag_rtcm_server=false
|
||||
PVT.flag_rtcm_tty_port=false
|
||||
PVT.rtcm_dump_devname=/dev/pts/1
|
||||
PVT.dump=false
|
103
conf/gnss-sdr_GPS_L1_2ch_udp.conf
Normal file
103
conf/gnss-sdr_GPS_L1_2ch_udp.conf
Normal file
@ -0,0 +1,103 @@
|
||||
; You can define your own receiver and invoke it by doing
|
||||
; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf
|
||||
;
|
||||
|
||||
[GNSS-SDR]
|
||||
|
||||
;######### GLOBAL OPTIONS ##################
|
||||
;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [Sps].
|
||||
GNSS-SDR.internal_fs_sps=13250000 ;//66.25/5
|
||||
;GNSS-SDR.internal_fs_sps=6625000 ;//66.25/10
|
||||
;GNSS-SDR.internal_fs_sps=3312500 ;//66.25/20
|
||||
;GNSS-SDR.internal_fs_sps=2650000 ;//66.25/25
|
||||
|
||||
;######### SIGNAL_SOURCE CONFIG ############
|
||||
SignalSource.implementation=Custom_UDP_Signal_Source
|
||||
SignalSource.item_type=gr_complex
|
||||
SignalSource.origin_address=0.0.0.0
|
||||
SignalSource.capture_device=eth0
|
||||
SignalSource.port=1234
|
||||
SignalSource.payload_bytes=1472
|
||||
;SignalSource.sample_type=cbyte
|
||||
SignalSource.sample_type=c4bits
|
||||
SignalSource.IQ_swap=false
|
||||
SignalSource.RF_channels=1
|
||||
SignalSource.channels_in_udp=2
|
||||
SignalSource.dump=false
|
||||
SignalSource.dump_filename=./signal_source.dat
|
||||
|
||||
|
||||
;######### SIGNAL_CONDITIONER CONFIG ############
|
||||
SignalConditioner.implementation=Pass_Through
|
||||
;SignalConditioner0.implementation=Pass_Through
|
||||
;SignalConditioner1.implementation=Pass_Through
|
||||
|
||||
;######### CHANNELS GLOBAL CONFIG ############
|
||||
Channels_1C.count=8
|
||||
Channels.in_acquisition=1
|
||||
|
||||
;# CHANNEL CONNECTION
|
||||
Channel.signal=1C
|
||||
Channel0.RF_channel_ID=0
|
||||
Channel1.RF_channel_ID=0
|
||||
Channel2.RF_channel_ID=0
|
||||
Channel3.RF_channel_ID=0
|
||||
Channel4.RF_channel_ID=0
|
||||
Channel5.RF_channel_ID=0
|
||||
Channel6.RF_channel_ID=0
|
||||
Channel7.RF_channel_ID=0
|
||||
Channel8.RF_channel_ID=1
|
||||
Channel9.RF_channel_ID=1
|
||||
|
||||
;Channel0.signal=1C
|
||||
;Channel1.RF_channel_ID=1
|
||||
;Channel1.signal=1C
|
||||
|
||||
;######### ACQUISITION GLOBAL CONFIG ############
|
||||
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
|
||||
Acquisition_1C.item_type=gr_complex
|
||||
Acquisition_1C.threshold=17
|
||||
Acquisition_1C.use_CFAR_algorithm=false
|
||||
Acquisition_1C.blocking=false
|
||||
Acquisition_1C.doppler_max=5000
|
||||
Acquisition_1C.doppler_step=250
|
||||
Acquisition_1C.dump=false
|
||||
Acquisition_1C.dump_filename=./acq_dump.dat
|
||||
|
||||
|
||||
;######### TRACKING GLOBAL CONFIG ############
|
||||
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
|
||||
Tracking_1C.item_type=gr_complex
|
||||
Tracking_1C.dump=false
|
||||
Tracking_1C.dump_filename=./tracking_ch_
|
||||
Tracking_1C.pll_bw_hz=35.0;
|
||||
Tracking_1C.dll_bw_hz=2.0;
|
||||
Tracking_1C.early_late_space_chips=0.5;
|
||||
|
||||
|
||||
;######### TELEMETRY DECODER GPS CONFIG ############
|
||||
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
|
||||
TelemetryDecoder_1C.dump=false
|
||||
|
||||
|
||||
;######### OBSERVABLES CONFIG ############
|
||||
Observables.implementation=Hybrid_Observables
|
||||
Observables.dump=false
|
||||
Observables.dump_filename=./observables.dat
|
||||
|
||||
|
||||
;######### PVT CONFIG ############
|
||||
PVT.implementation=RTKLIB_PVT
|
||||
PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
|
||||
PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
|
||||
PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
|
||||
PVT.output_rate_ms=100
|
||||
PVT.display_rate_ms=500
|
||||
PVT.dump_filename=./PVT
|
||||
PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea;
|
||||
PVT.flag_nmea_tty_port=false;
|
||||
PVT.nmea_dump_devname=/dev/pts/4
|
||||
PVT.flag_rtcm_server=false
|
||||
PVT.flag_rtcm_tty_port=false
|
||||
PVT.rtcm_dump_devname=/dev/pts/1
|
||||
PVT.dump=false
|
@ -52,7 +52,6 @@ Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
|
||||
Acquisition_1C.item_type=gr_complex
|
||||
Acquisition_1C.threshold=0.01
|
||||
;Acquisition_1C.pfa=0.00001
|
||||
Acquisition_1C.if=0
|
||||
Acquisition_1C.doppler_max=10000
|
||||
Acquisition_1C.doppler_step=250
|
||||
Acquisition_1C.dump=false;
|
||||
@ -62,7 +61,6 @@ Acquisition_1C.dump_filename=/archive/gps_acquisition.dat
|
||||
;######### TRACKING GLOBAL CONFIG ############
|
||||
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
|
||||
Tracking_1C.item_type=gr_complex
|
||||
Tracking_1C.if=60000
|
||||
Tracking_1C.early_late_space_chips=0.5
|
||||
Tracking_1C.pll_bw_hz=25.0;
|
||||
Tracking_1C.dll_bw_hz=3.0;
|
||||
|
@ -65,7 +65,6 @@ Channel.signal=1C
|
||||
;######### ACQUISITION GLOBAL CONFIG ############
|
||||
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler
|
||||
Acquisition_1C.item_type=gr_complex
|
||||
Acquisition_1C.if=0
|
||||
Acquisition_1C.sampled_ms=1
|
||||
Acquisition_1C.threshold=0.015
|
||||
Acquisition_1C.doppler_max=10000
|
||||
@ -78,7 +77,6 @@ Acquisition_1C.dump_filename=./acq_dump.dat
|
||||
;######### TRACKING GLOBAL CONFIG ############
|
||||
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
|
||||
Tracking_1C.item_type=gr_complex
|
||||
Tracking_1C.if=0
|
||||
Tracking_1C.pll_bw_hz=40.0;
|
||||
Tracking_1C.dll_bw_hz=2.0;
|
||||
Tracking_1C.order=3;
|
||||
|
@ -24,7 +24,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -23,7 +23,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -21,7 +21,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/
|
||||
|
||||
; Sample configuration file for IFEN SX-NSR software receiver front-end
|
||||
; http://www.ifen.com/products/sx-scientific-gnss-solutions/nsr-software-receiver.html
|
||||
; https://www.ifen.com/products/sx3-gnss-software-receiver/
|
||||
; This sample configuration is able to process directly .sream binary files
|
||||
; You can define your own receiver and invoke it by doing
|
||||
; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf
|
||||
@ -25,7 +25,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
211
conf/gnss-sdr_GPS_L1_nsr_kf.conf
Normal file
211
conf/gnss-sdr_GPS_L1_nsr_kf.conf
Normal file
@ -0,0 +1,211 @@
|
||||
; Default configuration file
|
||||
; You can define your own receiver and invoke it by doing
|
||||
; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf
|
||||
;
|
||||
|
||||
[GNSS-SDR]
|
||||
|
||||
;######### GLOBAL OPTIONS ##################
|
||||
;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [samples per second].
|
||||
;GNSS-SDR.internal_fs_sps=6826700
|
||||
GNSS-SDR.internal_fs_sps=2560000
|
||||
;GNSS-SDR.internal_fs_sps=4096000
|
||||
;GNSS-SDR.internal_fs_sps=5120000
|
||||
|
||||
;######### SIGNAL_SOURCE CONFIG ############
|
||||
;#implementation: Use [File_Signal_Source] [Nsr_File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental)
|
||||
SignalSource.implementation=Nsr_File_Signal_Source
|
||||
|
||||
;#filename: path to file with the captured GNSS signal samples to be processed
|
||||
SignalSource.filename=/home/javier/signals/ifen/E1L1_FE0_Band0.stream ; <- PUT YOUR FILE HERE
|
||||
|
||||
;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version.
|
||||
SignalSource.item_type=byte
|
||||
|
||||
;#sampling_frequency: Original Signal sampling frequency in [Hz]
|
||||
SignalSource.sampling_frequency=20480000
|
||||
|
||||
;#freq: RF front-end center frequency in [Hz]
|
||||
SignalSource.freq=1575420000
|
||||
|
||||
;#samples: Number of samples to be processed. Notice that 0 indicates the entire file.
|
||||
SignalSource.samples=0
|
||||
|
||||
;#repeat: Repeat the processing file. Disable this option in this version
|
||||
SignalSource.repeat=false
|
||||
|
||||
;#dump: Dump the Signal source data to a file. Disable this option in this version
|
||||
SignalSource.dump=false
|
||||
|
||||
SignalSource.dump_filename=../data/signal_source.dat
|
||||
|
||||
|
||||
;#enable_throttle_control: Enabling this option tells the signal source to keep the delay between samples in post processing.
|
||||
; it helps to not overload the CPU, but the processing time will be longer.
|
||||
SignalSource.enable_throttle_control=false
|
||||
|
||||
|
||||
;######### SIGNAL_CONDITIONER CONFIG ############
|
||||
;## It holds blocks to change data type, filter and resample input data.
|
||||
|
||||
;#implementation: Use [Pass_Through] or [Signal_Conditioner]
|
||||
;#[Pass_Through] disables this block and the [DataTypeAdapter], [InputFilter] and [Resampler] blocks
|
||||
;#[Signal_Conditioner] enables this block. Then you have to configure [DataTypeAdapter], [InputFilter] and [Resampler] blocks
|
||||
SignalConditioner.implementation=Signal_Conditioner
|
||||
|
||||
;######### DATA_TYPE_ADAPTER CONFIG ############
|
||||
;## Changes the type of input data.
|
||||
;#implementation: [Pass_Through] disables this block
|
||||
DataTypeAdapter.implementation=Pass_Through
|
||||
DataTypeAdapter.item_type=float
|
||||
|
||||
;######### INPUT_FILTER CONFIG ############
|
||||
;## Filter the input data. Can be combined with frequency translation for IF signals
|
||||
|
||||
;#implementation: Use [Pass_Through] or [Fir_Filter] or [Freq_Xlating_Fir_Filter]
|
||||
;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation
|
||||
;# that shifts IF down to zero Hz.
|
||||
|
||||
InputFilter.implementation=Freq_Xlating_Fir_Filter
|
||||
|
||||
;#dump: Dump the filtered data to a file.
|
||||
InputFilter.dump=false
|
||||
|
||||
;#dump_filename: Log path and filename.
|
||||
InputFilter.dump_filename=../data/input_filter.dat
|
||||
|
||||
;#The following options are used in the filter design of Fir_Filter and Freq_Xlating_Fir_Filter implementation.
|
||||
;#These options are based on parameters of gnuradio's function: gr_remez.
|
||||
;#These function calculates the optimal (in the Chebyshev/minimax sense) FIR filter inpulse
|
||||
;#reponse given a set of band edges, the desired reponse on those bands,
|
||||
;#and the weight given to the error in those bands.
|
||||
|
||||
;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version.
|
||||
InputFilter.input_item_type=float
|
||||
|
||||
;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version.
|
||||
InputFilter.output_item_type=gr_complex
|
||||
|
||||
;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version.
|
||||
InputFilter.taps_item_type=float
|
||||
|
||||
;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time
|
||||
InputFilter.number_of_taps=5
|
||||
|
||||
;#number_of _bands: Number of frequency bands in the filter.
|
||||
InputFilter.number_of_bands=2
|
||||
|
||||
;#bands: frequency at the band edges [ b1 e1 b2 e2 b3 e3 ...].
|
||||
;#Frequency is in the range [0, 1], with 1 being the Nyquist frequency (Fs/2)
|
||||
;#The number of band_begin and band_end elements must match the number of bands
|
||||
|
||||
InputFilter.band1_begin=0.0
|
||||
InputFilter.band1_end=0.45
|
||||
InputFilter.band2_begin=0.55
|
||||
InputFilter.band2_end=1.0
|
||||
|
||||
;#ampl: desired amplitude at the band edges [ a(b1) a(e1) a(b2) a(e2) ...].
|
||||
;#The number of ampl_begin and ampl_end elements must match the number of bands
|
||||
|
||||
InputFilter.ampl1_begin=1.0
|
||||
InputFilter.ampl1_end=1.0
|
||||
InputFilter.ampl2_begin=0.0
|
||||
InputFilter.ampl2_end=0.0
|
||||
|
||||
;#band_error: weighting applied to each band (usually 1).
|
||||
;#The number of band_error elements must match the number of bands
|
||||
InputFilter.band1_error=1.0
|
||||
InputFilter.band2_error=1.0
|
||||
|
||||
;#filter_type: one of "bandpass", "hilbert" or "differentiator"
|
||||
InputFilter.filter_type=bandpass
|
||||
|
||||
;#grid_density: determines how accurately the filter will be constructed.
|
||||
;The minimum value is 16; higher values are slower to compute the filter.
|
||||
InputFilter.grid_density=16
|
||||
|
||||
;# Original sampling frequency stored in the signal file
|
||||
InputFilter.sampling_frequency=20480000
|
||||
|
||||
;#The following options are used only in Freq_Xlating_Fir_Filter implementation.
|
||||
;#InputFilter.IF is the intermediate frequency (in Hz) shifted down to zero Hz
|
||||
|
||||
InputFilter.IF=5499998.47412109
|
||||
|
||||
;# Decimation factor after the frequency tranaslating block
|
||||
InputFilter.decimation_factor=8
|
||||
|
||||
|
||||
;######### RESAMPLER CONFIG ############
|
||||
;## Resamples the input data.
|
||||
|
||||
;#implementation: Use [Pass_Through] or [Direct_Resampler]
|
||||
;#[Pass_Through] disables this block
|
||||
;#[Direct_Resampler] enables a resampler that implements a nearest neigbourhood interpolation
|
||||
Resampler.implementation=Pass_Through
|
||||
|
||||
;######### CHANNELS GLOBAL CONFIG ############
|
||||
;#count: Number of available GPS satellite channels.
|
||||
Channels_1C.count=8
|
||||
Channels.in_acquisition=1
|
||||
#Channel.signal=1C
|
||||
|
||||
|
||||
;######### ACQUISITION GLOBAL CONFIG ############
|
||||
Acquisition_1C.dump=false
|
||||
Acquisition_1C.dump_filename=./acq_dump.dat
|
||||
Acquisition_1C.item_type=gr_complex
|
||||
Acquisition_1C.if=0
|
||||
Acquisition_1C.sampled_ms=1
|
||||
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
|
||||
;#use_CFAR_algorithm: If enabled, acquisition estimates the input signal power to implement CFAR detection algorithms
|
||||
;#notice that this affects the Acquisition threshold range!
|
||||
Acquisition_1C.use_CFAR_algorithm=false;
|
||||
;#threshold: Acquisition threshold
|
||||
Acquisition_1C.threshold=10
|
||||
;Acquisition_1C.pfa=0.01
|
||||
Acquisition_1C.doppler_max=5000
|
||||
Acquisition_1C.doppler_step=100
|
||||
|
||||
|
||||
;######### TRACKING GPS CONFIG ############
|
||||
Tracking_1C.implementation=GPS_L1_CA_KF_Tracking
|
||||
Tracking_1C.item_type=gr_complex
|
||||
Tracking_1C.if=0
|
||||
Tracking_1C.dump=true
|
||||
Tracking_1C.dump_filename=../data/epl_tracking_ch_
|
||||
Tracking_1C.pll_bw_hz=15.0;
|
||||
Tracking_1C.dll_bw_hz=2.0;
|
||||
Tracking_1C.order=3;
|
||||
|
||||
|
||||
;######### TELEMETRY DECODER GPS CONFIG ############
|
||||
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
|
||||
TelemetryDecoder_1C.dump=false
|
||||
TelemetryDecoder_1C.decimation_factor=1;
|
||||
|
||||
;######### OBSERVABLES CONFIG ############
|
||||
;#implementation:
|
||||
Observables.implementation=Hybrid_Observables
|
||||
|
||||
;#dump: Enable or disable the Observables internal binary data file logging [true] or [false]
|
||||
Observables.dump=false
|
||||
|
||||
;#dump_filename: Log path and filename.
|
||||
Observables.dump_filename=./observables.dat
|
||||
|
||||
;######### PVT CONFIG ############
|
||||
PVT.implementation=RTKLIB_PVT
|
||||
PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
|
||||
PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
|
||||
PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
|
||||
PVT.output_rate_ms=100
|
||||
PVT.display_rate_ms=500
|
||||
PVT.dump_filename=./PVT
|
||||
PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea;
|
||||
PVT.flag_nmea_tty_port=false;
|
||||
PVT.nmea_dump_devname=/dev/pts/4
|
||||
PVT.flag_rtcm_server=false
|
||||
PVT.flag_rtcm_tty_port=false
|
||||
PVT.rtcm_dump_devname=/dev/pts/1
|
||||
PVT.dump=true
|
@ -2,7 +2,7 @@
|
||||
; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/
|
||||
|
||||
; Sample configuration file for IFEN SX-NSR software receiver front-end
|
||||
; http://www.ifen.com/products/sx-scientific-gnss-solutions/nsr-software-receiver.html
|
||||
; https://www.ifen.com/products/sx3-gnss-software-receiver/
|
||||
; This sample configuration is able to process directly .sream binary files
|
||||
; You can define your own receiver and invoke it by doing
|
||||
; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf
|
||||
@ -25,7 +25,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
@ -105,7 +105,6 @@ Channel.signal=1C
|
||||
;######### GPS ACQUISITION CONFIG ############
|
||||
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
|
||||
Acquisition_1C.item_type=gr_complex
|
||||
Acquisition_1C.if=0
|
||||
Acquisition_1C.sampled_ms=1
|
||||
Acquisition_1C.threshold=0.0075
|
||||
;Acquisition_1C.pfa=0.01
|
||||
@ -118,7 +117,6 @@ Acquisition_1C.dump_filename=./acq_dump.dat
|
||||
;######### TRACKING GPS CONFIG ############
|
||||
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
|
||||
Tracking_1C.item_type=gr_complex
|
||||
Tracking_1C.if=0
|
||||
Tracking_1C.pll_bw_hz=45.0;
|
||||
Tracking_1C.dll_bw_hz=2.0;
|
||||
Tracking_1C.order=3;
|
||||
|
@ -24,7 +24,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -24,7 +24,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5_1C
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -24,7 +24,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -23,7 +23,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -23,7 +23,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.internal_fs_sps=32000000
|
||||
;GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
;GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
;GNSS-SDR.SUPL_MCC=244
|
||||
;GNSS-SDR.SUPL_MNS=5
|
||||
;GNSS-SDR.SUPL_MNC=5
|
||||
;GNSS-SDR.SUPL_LAC=0x59e2
|
||||
;GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -21,7 +21,7 @@ GNSS-SDR.internal_fs_sps=50000000
|
||||
;GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
;GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
;GNSS-SDR.SUPL_MCC=244
|
||||
;GNSS-SDR.SUPL_MNS=5
|
||||
;GNSS-SDR.SUPL_MNC=5
|
||||
;GNSS-SDR.SUPL_LAC=0x59e2
|
||||
;GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -14,7 +14,7 @@ GNSS-SDR.internal_fs_sps=20000000
|
||||
|
||||
;######### SIGNAL_SOURCE CONFIG ############
|
||||
SignalSource.implementation=File_Signal_Source
|
||||
SignalSource.filename=/datalogger/signals/Fraunhofer/L125_III1b_210s_L1.bin ; <- PUT YOUR FILE HERE
|
||||
SignalSource.filename=/media/javier/Extreme 500/fraunhofer/L125_III1b_210s_L1.bin ; <- PUT YOUR FILE HERE
|
||||
SignalSource.item_type=byte
|
||||
SignalSource.sampling_frequency=20000000
|
||||
SignalSource.samples=0
|
||||
@ -46,12 +46,20 @@ Resampler.dump_filename=../data/resampler.dat
|
||||
|
||||
|
||||
;######### CHANNELS GLOBAL CONFIG ############
|
||||
Channels_1C.count=8
|
||||
Channels_1B.count=8
|
||||
Channels_1C.count=10
|
||||
Channels_1B.count=10
|
||||
Channels.in_acquisition=1
|
||||
|
||||
;#signal:
|
||||
;# "1C" GPS L1 C/A
|
||||
;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL)
|
||||
;# "1G" GLONASS L1 C/A
|
||||
;# "2S" GPS L2 L2C (M)
|
||||
;# "5X" GALILEO E5a I+Q
|
||||
;# "L5" GPS L5
|
||||
|
||||
;#if the option is disabled by default is assigned "1C" GPS L1 C/A
|
||||
Channel0.signal=1C
|
||||
Channel1.signal=1C
|
||||
Channel2.signal=1C
|
||||
Channel3.signal=1C
|
||||
@ -67,16 +75,19 @@ Channel12.signal=1B
|
||||
Channel13.signal=1B
|
||||
Channel14.signal=1B
|
||||
Channel15.signal=1B
|
||||
|
||||
Channel16.signal=1B
|
||||
Channel17.signal=1B
|
||||
Channel18.signal=1B
|
||||
Channel19.signal=1B
|
||||
|
||||
;######### GPS ACQUISITION CONFIG ############
|
||||
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
|
||||
Acquisition_1C.item_type=gr_complex
|
||||
Acquisition_1C.coherent_integration_time_ms=1
|
||||
Acquisition_1C.threshold=0.0060
|
||||
;Acquisition_1C.pfa=0.01
|
||||
Acquisition_1C.doppler_max=10000
|
||||
Acquisition_1C.doppler_step=500
|
||||
Acquisition_1C.threshold=18
|
||||
Acquisition_1C.use_CFAR_algorithm=false
|
||||
Acquisition_1C.blocking=true
|
||||
Acquisition_1C.doppler_max=5000
|
||||
Acquisition_1C.doppler_step=250
|
||||
Acquisition_1C.dump=false
|
||||
Acquisition_1C.dump_filename=./acq_dump.dat
|
||||
|
||||
@ -84,21 +95,23 @@ Acquisition_1C.dump_filename=./acq_dump.dat
|
||||
;######### GALILEO ACQUISITION CONFIG ############
|
||||
Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition
|
||||
Acquisition_1B.item_type=gr_complex
|
||||
Acquisition_1B.coherent_integration_time_ms=4
|
||||
;Acquisition_1B.threshold=0
|
||||
Acquisition_1B.pfa=0.0000008
|
||||
Acquisition_1B.doppler_max=15000
|
||||
Acquisition_1B.threshold=25
|
||||
Acquisition_1B.use_CFAR_algorithm=false
|
||||
Acquisition_1B.blocking=true
|
||||
Acquisition_1B.doppler_max=5000
|
||||
Acquisition_1B.doppler_step=125
|
||||
Acquisition_1B.dump=false
|
||||
Acquisition_1B.dump_filename=./acq_dump.dat
|
||||
|
||||
|
||||
;######### TRACKING GPS CONFIG ############
|
||||
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
|
||||
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_C_Aid_Tracking
|
||||
Tracking_1C.item_type=gr_complex
|
||||
Tracking_1C.pll_bw_hz=45.0;
|
||||
Tracking_1C.dll_bw_hz=4.0;
|
||||
Tracking_1C.order=3;
|
||||
Tracking_1C.extend_correlation_ms=1
|
||||
Tracking_1C.pll_bw_hz=40;
|
||||
Tracking_1C.pll_bw_narrow_hz=30;
|
||||
Tracking_1C.dll_bw_hz=2.0;
|
||||
Tracking_1C.dll_bw_narrow_hz=1.5;
|
||||
Tracking_1C.order=2;
|
||||
Tracking_1C.dump=false
|
||||
Tracking_1C.dump_filename=../data/epl_tracking_ch_
|
||||
|
||||
@ -107,7 +120,7 @@ Tracking_1C.dump_filename=../data/epl_tracking_ch_
|
||||
Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking
|
||||
Tracking_1B.item_type=gr_complex
|
||||
Tracking_1B.pll_bw_hz=15.0;
|
||||
Tracking_1B.dll_bw_hz=2.0;
|
||||
Tracking_1B.dll_bw_hz=3.0;
|
||||
Tracking_1B.order=3;
|
||||
Tracking_1B.early_late_space_chips=0.15;
|
||||
Tracking_1B.very_early_late_space_chips=0.6;
|
||||
@ -126,6 +139,7 @@ TelemetryDecoder_1B.dump=false
|
||||
|
||||
|
||||
;######### OBSERVABLES CONFIG ############
|
||||
;#implementation:
|
||||
Observables.implementation=Hybrid_Observables
|
||||
Observables.dump=false
|
||||
Observables.dump_filename=./observables.dat
|
||||
@ -133,13 +147,14 @@ Observables.dump_filename=./observables.dat
|
||||
|
||||
;######### PVT CONFIG ############
|
||||
PVT.implementation=RTKLIB_PVT
|
||||
PVT.positioning_mode=PPP_Static ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
|
||||
PVT.positioning_mode=Single ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic
|
||||
PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX
|
||||
PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
|
||||
PVT.output_rate_ms=100;
|
||||
PVT.output_rate_ms=10;
|
||||
PVT.display_rate_ms=500;
|
||||
PVT.dump=false
|
||||
PVT.elevation_mask=15;
|
||||
PVT.flag_rtcm_server=false
|
||||
PVT.flag_rtcm_tty_port=false
|
||||
PVT.rtcm_dump_devname=/dev/pts/1
|
||||
PVT.dump=false
|
||||
PVT.dump_filename=./PVT
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -14,7 +14,7 @@ GNSS-SDR.internal_fs_sps=2560000
|
||||
|
||||
;######### SIGNAL_SOURCE CONFIG ############
|
||||
SignalSource.implementation=Nsr_File_Signal_Source
|
||||
SignalSource.filename=/media/javier/SISTEMA/signals/ifen/E1L1_FE0_Band0.stream ; <- PUT YOUR FILE HERE
|
||||
SignalSource.filename=/home/javier/signals/ifen/E1L1_FE0_Band0.stream ; <- PUT YOUR FILE HERE
|
||||
SignalSource.item_type=byte
|
||||
SignalSource.sampling_frequency=20480000
|
||||
SignalSource.samples=0
|
||||
@ -61,8 +61,8 @@ InputFilter.dump_filename=../data/input_filter.dat
|
||||
Resampler.implementation=Pass_Through
|
||||
|
||||
;######### CHANNELS GLOBAL CONFIG ############
|
||||
Channels_1C.count=8
|
||||
Channels_1B.count=0
|
||||
Channels_1C.count=10
|
||||
Channels_1B.count=10
|
||||
Channels.in_acquisition=1
|
||||
|
||||
;#signal:
|
||||
@ -82,22 +82,26 @@ Channel4.signal=1C
|
||||
Channel5.signal=1C
|
||||
Channel6.signal=1C
|
||||
Channel7.signal=1C
|
||||
Channel8.signal=1B
|
||||
Channel9.signal=1B
|
||||
Channel8.signal=1C
|
||||
Channel9.signal=1C
|
||||
Channel10.signal=1B
|
||||
Channel11.signal=1B
|
||||
Channel12.signal=1B
|
||||
Channel13.signal=1B
|
||||
Channel14.signal=1B
|
||||
Channel15.signal=1B
|
||||
Channel16.signal=1B
|
||||
Channel17signal=1B
|
||||
Channel18.signal=1B
|
||||
Channel19.signal=1B
|
||||
|
||||
|
||||
;######### GPS ACQUISITION CONFIG ############
|
||||
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
|
||||
Acquisition_1C.item_type=gr_complex
|
||||
Acquisition_1C.coherent_integration_time_ms=1
|
||||
Acquisition_1C.threshold=0.0075
|
||||
;Acquisition_1C.pfa=0.01
|
||||
Acquisition_1C.threshold=25
|
||||
Acquisition_1C.use_CFAR_algorithm=false
|
||||
Acquisition_1C.blocking=true
|
||||
Acquisition_1C.doppler_max=5000
|
||||
Acquisition_1C.doppler_step=250
|
||||
Acquisition_1C.dump=false
|
||||
@ -107,32 +111,31 @@ Acquisition_1C.dump_filename=./acq_dump.dat
|
||||
;######### GALILEO ACQUISITION CONFIG ############
|
||||
Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition
|
||||
Acquisition_1B.item_type=gr_complex
|
||||
Acquisition_1B.coherent_integration_time_ms=4
|
||||
;Acquisition_1B.threshold=0
|
||||
Acquisition_1B.pfa=0.0000002
|
||||
Acquisition_1B.doppler_max=15000
|
||||
Acquisition_1B.doppler_step=125
|
||||
Acquisition_1B.threshold=25
|
||||
Acquisition_1B.use_CFAR_algorithm=false
|
||||
Acquisition_1B.blocking=true
|
||||
Acquisition_1B.doppler_max=5000
|
||||
Acquisition_1B.doppler_step=250
|
||||
Acquisition_1B.dump=false
|
||||
Acquisition_1B.dump_filename=./acq_dump.dat
|
||||
|
||||
|
||||
;######### TRACKING GPS CONFIG ############
|
||||
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_C_Aid_Tracking
|
||||
Tracking_1C.item_type=gr_complex
|
||||
Tracking_1C.extend_correlation_ms=1
|
||||
Tracking_1C.pll_bw_hz=40;
|
||||
Tracking_1C.pll_bw_narrow_hz=20;
|
||||
Tracking_1C.pll_bw_narrow_hz=30;
|
||||
Tracking_1C.dll_bw_hz=2.0;
|
||||
Tracking_1C.dll_bw_narrow_hz=1.0;
|
||||
Tracking_1C.order=3;
|
||||
Tracking_1C.dump=true
|
||||
Tracking_1C.dll_bw_narrow_hz=1.5;
|
||||
Tracking_1C.order=2;
|
||||
Tracking_1C.dump=false
|
||||
Tracking_1C.dump_filename=../data/epl_tracking_ch_
|
||||
|
||||
|
||||
;######### TRACKING GALILEO CONFIG ############
|
||||
Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking
|
||||
Tracking_1B.item_type=gr_complex
|
||||
Tracking_1B.pll_bw_hz=15.0;
|
||||
Tracking_1B.pll_bw_hz=20.0;
|
||||
Tracking_1B.dll_bw_hz=2.0;
|
||||
Tracking_1B.order=3;
|
||||
Tracking_1B.early_late_space_chips=0.15;
|
||||
@ -165,6 +168,7 @@ PVT.iono_model=Broadcast ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate
|
||||
PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad
|
||||
PVT.output_rate_ms=10;
|
||||
PVT.display_rate_ms=500;
|
||||
PVT.elevation_mask=20;
|
||||
PVT.flag_rtcm_server=false
|
||||
PVT.flag_rtcm_tty_port=false
|
||||
PVT.rtcm_dump_devname=/dev/pts/1
|
||||
|
@ -97,7 +97,6 @@ Tracking_1C.dump_filename=../data/epl_tracking_ch_
|
||||
;######### TRACKING GALILEO CONFIG ############
|
||||
Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking
|
||||
Tracking_1B.item_type=gr_complex
|
||||
Tracking_1B.if=0
|
||||
Tracking_1B.track_pilot=true
|
||||
Tracking_1B.pll_bw_hz=4.0;
|
||||
Tracking_1B.dll_bw_hz=0.5;
|
||||
|
@ -21,7 +21,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
@ -188,7 +188,6 @@ Acquisition_1C.dump_filename=./acq_dump.dat
|
||||
;######### TRACKING GLOBAL CONFIG ############
|
||||
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
|
||||
Tracking_1C.item_type=gr_complex
|
||||
Tracking_1C.if=0
|
||||
Tracking_1C.dump=false
|
||||
Tracking_1C.dump_filename=../data/epl_tracking_ch_
|
||||
Tracking_1C.pll_bw_hz=40.0;
|
||||
@ -199,7 +198,6 @@ Tracking_1C.early_late_space_chips=0.5;
|
||||
;# GPS L2C M
|
||||
Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition
|
||||
Acquisition_2S.item_type=gr_complex
|
||||
Acquisition_2S.if=0
|
||||
Acquisition_2S.threshold=0.0005
|
||||
;Acquisition_2S.pfa=0.001
|
||||
Acquisition_2S.doppler_max=5000
|
||||
@ -211,7 +209,6 @@ Acquisition_2S.dump_filename=./acq_dump.dat
|
||||
|
||||
Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking
|
||||
Tracking_2S.item_type=gr_complex
|
||||
Tracking_2S.if=0
|
||||
Tracking_2S.pll_bw_hz=1.5;
|
||||
Tracking_2S.dll_bw_hz=0.3;
|
||||
Tracking_2S.order=3;
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.SUPL_1C_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_1C_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_1C_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -22,7 +22,7 @@ GNSS-SDR.SUPL_gps_ephemeris_port=7275
|
||||
GNSS-SDR.SUPL_gps_acquisition_server=supl.google.com
|
||||
GNSS-SDR.SUPL_gps_acquisition_port=7275
|
||||
GNSS-SDR.SUPL_MCC=244
|
||||
GNSS-SDR.SUPL_MNS=5
|
||||
GNSS-SDR.SUPL_MNC=5
|
||||
GNSS-SDR.SUPL_LAC=0x59e2
|
||||
GNSS-SDR.SUPL_CI=0x31b0
|
||||
|
||||
|
@ -9,4 +9,4 @@ Before submitting your pull request, please make sure the following is done:
|
||||
6. You have forked the [gnss-sdr upstream repository](https://github.com/gnss-sdr/gnss-sdr) and have created your branch from `next` (or any other currently living branch in the upstream repository).
|
||||
7. Please include a description of your changes here.
|
||||
|
||||
**Please feel free to delete this line and the above text once you have read it and in case you want to go on with your pull request.**
|
||||
**Please feel free to delete this line and the above text once you have read it and in case you want to go on with your pull request, and explain your intend below.**
|
||||
|
157
docs/changelog
157
docs/changelog
@ -1,33 +1,69 @@
|
||||
## [Unreleased](https://github.com/gnss-sdr/gnss-sdr/tree/next)
|
||||
|
||||
Next release will have several improvements, addition of new features and bug fixes in many dimensions:
|
||||
### Improvements in Efficiency
|
||||
|
||||
- Applied clang-tidy checks and fixes related to performance.
|
||||
|
||||
### Improvements in Interoperability:
|
||||
|
||||
- Added the BeiDou B1I receiver chain.
|
||||
- Fix bug in GLONASS dual frequency receiver.
|
||||
|
||||
### Improvements in Maintainability:
|
||||
|
||||
- Usage of clang-tidy integrated into CMake scripts. New option -DENABLE_CLANG_TIDY=ON executes clang-tidy along with compilation. Requires clang compiler.
|
||||
- Applied clang-tidy checks and fixes related to readability.
|
||||
|
||||
### Improvements in Portability:
|
||||
|
||||
- CMake scripts now follow a modern approach (targets and properties) but still work in 2.8.12
|
||||
|
||||
|
||||
## Improvements in Reliability
|
||||
|
||||
- Applied clang-tidy checks and fixes related to High Integrity C++.
|
||||
|
||||
|
||||
## [0.0.10](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.10)
|
||||
|
||||
This release has several improvements in different dimensions, addition of new features and bug fixes:
|
||||
|
||||
### Improvements in Accuracy:
|
||||
|
||||
- Part of the RTKLIB core libraries has been integrated into GNSS-SDR. There is now a single PVT block implementation which makes use of RTKLIB to deliver PVT solutions, including Single and PPP navigation modes.
|
||||
- Part of the RTKLIB core library has been integrated into GNSS-SDR. There is now a single PVT block implementation which makes use of RTKLIB to deliver PVT solutions, including Single and PPP navigation modes.
|
||||
- Fixed CN0 estimation for other correlation times than 1 ms.
|
||||
- Improved computation of tracking parameters and GNSS observables.
|
||||
- Other minor bug fixes.
|
||||
|
||||
|
||||
### Improvements in Availability:
|
||||
|
||||
- Internal Finite State Machines rewritten for improved continuity in delivering position fixes. This fixes a bug that was stalling the receiver after about six hours of continuous operation.
|
||||
- Redesign of the time counter for enhanced continuity.
|
||||
- Improved flow graph in multi-system configurations: the receiver does not get stalled anymore if no signal is found from the first system.
|
||||
- Improved acquisition and tracking sensitivity.
|
||||
- Added mechanisms for Assisted GNSS, thus shortening the Time-To-First-Fix. Provision of data via XML files or via SUPL v1.0. Documented at https://gnss-sdr.org/docs/sp-blocks/global-parameters/
|
||||
- Other minor bug fixes.
|
||||
|
||||
|
||||
### Improvements in Efficiency:
|
||||
|
||||
- Added the possibility of non-blocking acquisition, which works well when using real-time data from a RF front-end.
|
||||
- Complex codes have been replaced by real codes, alleviating the computational burden.
|
||||
- New kernels: volk_gnsssdr_16i_xn_resampler_16i_xn.h, volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h, volk_gnsssdr_32f_xn_resampler_32f_xn.h, volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h
|
||||
- Some AVX2 kernels added to the volk_gnsssdr library.
|
||||
- Several performance improvements.
|
||||
- Added the possibility of non-blocking acquisition, which works well when using real-time data from an RF front-end.
|
||||
- Improved flow graph in multi-band configurations: satellites acquired in one band are immediately searched in others.
|
||||
- Complex local codes have been replaced by real codes, alleviating the computational burden.
|
||||
- New volk_gnsssdr kernels: volk_gnsssdr_16i_xn_resampler_16i_xn.h, volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h, volk_gnsssdr_32f_xn_resampler_32f_xn.h, volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h
|
||||
- Some AVX2 implementations added to the volk_gnsssdr library.
|
||||
- Improvement in C++ usage: Use of const container calls when result is immediately converted to a const iterator. Using these members removes an implicit conversion from iterator to const_iterator.
|
||||
- Output printers can be shut down, with some savings in memory and storage requirements.
|
||||
- A number of code optimizations here and there.
|
||||
|
||||
|
||||
### Improvements in Flexibility:
|
||||
|
||||
- A number of new parameters have been exposed in the configuration.
|
||||
- Possibility to choose Pilot or Data tracking where available.
|
||||
- Enabled extended coherent integration times.
|
||||
- A number of new parameters have been exposed to the configuration system.
|
||||
- Possibility to choose Pilot or Data component for tracking of GPS L5 and Galileo E5a signals.
|
||||
- Enabled extended coherent integration times for signal tracking.
|
||||
- Configurable coherent and/or non-coherent signal acquisition.
|
||||
- Some configuration parameters can now be overridden by commandline flags for easier use in scripts.
|
||||
|
||||
|
||||
@ -37,78 +73,108 @@ Next release will have several improvements, addition of new features and bug fi
|
||||
- Added the GLONASS L1 SP receiver chain.
|
||||
- Added the GLONASS L2 SP receiver chain.
|
||||
- Improvements in the Galileo E5a and GPS L2C receiver chains.
|
||||
- Added four more signal sources: "Fmcomms2_Signal_Source", "Plutosdr_Signal Source", "Spir_GSS6450_File_Signal_Source" and "Labsat_Signal_Source".
|
||||
- Updated list of available GNSS satellites.
|
||||
- Added five more signal sources: "Fmcomms2_Signal_Source" (requires gr-iio), "Plutosdr_Signal Source" (requires gr-iio), "Spir_GSS6450_File_Signal_Source", "Labsat_Signal_Source" and "Custom_UDP_Signal_Source" (requires libpcap). Documented in https://gnss-sdr.org/docs/sp-blocks/signal-source/
|
||||
- Improved support for BladeRF, HackRF and RTL-SDR front-ends.
|
||||
- Added tools for the interaction with front-ends based on the AD9361 chipset.
|
||||
- Intermediate results are now saved in .mat binary format, readable from Matlab/Octave and from Python via h5py.
|
||||
- Intermediate results are now saved in MAT-file format (.mat), readable from Matlab/Octave and from Python via h5py.
|
||||
- Added the GPX output format.
|
||||
- Fixed a bug in the format of NMEA sentences when latitude or longitude minutes were >10
|
||||
- Improvements in the RTCM server.
|
||||
- Improvements in the generation of RINEX files.
|
||||
- Improvements in the generation of KML files.
|
||||
- Improvements in the NMEA output. The receiver can produce GPGGA, GPRMC, GPGSA, GPGSV, GAGSA and GAGSV sentences.
|
||||
- Improvements in the RTCM server stability.
|
||||
- Improvements in the correctness of generated RINEX files.
|
||||
- The receiver can read and make use of Galileo almanac XML files published by the European GNSS Service Centre at https://www.gsc-europa.eu/system-status/almanac-data
|
||||
- Own-defined XML schemas for navigation data published at https://github.com/gnss-sdr/gnss-sdr/tree/next/docs/xml-schemas
|
||||
- Added program rinex2assist to convert RINEX navigation files into XML files usable for Assisted GNSS. Only available building from source. See https://github.com/gnss-sdr/gnss-sdr/tree/next/src/utils/rinex2assist
|
||||
|
||||
|
||||
### Improvements in Maintainability:
|
||||
|
||||
- C-style casts have been replaced by C++ casts. C-style casts are difficult to search for. C++ casts provide compile time checking ability and express programmers' intent better, so they are safer and clearer.
|
||||
- The override special identifier is now used when overriding a virtual function. This helps the compiler to check for type changes in the base class.
|
||||
- Use of const container calls when result is immediately converted to a const iterator. Using these members removes an implicit conversion from iterator to const_iterator.
|
||||
- Improved control over minimum required versions for core dependencies.
|
||||
- Automated code formating with clang-format.
|
||||
- Application of the coding style guide in several source files, improving readability.
|
||||
- The software builds with C++11, C++14 and C++17 standards.
|
||||
- Setup of a Continuous Integration system that checks building in a wide range of Linux distributions.
|
||||
- Setup of a Continuous Integration system that checks building and runs QA code in a wide range of GNU/Linux distributions (Arch Linux, CentOS, Debian, Fedora, OpenSUSE, Ubuntu) and releases. See https://gitlab.com/gnss-sdr/gnss-sdr
|
||||
- Creation of multi-system processing blocks, drastically reducing code duplication and maintainability time.
|
||||
- Automated code formatting with clang-format. This tool is widely available and easy to integrate into many code editors, and it also can be used from the command line. It cuts time spent on adhering to the project's code formatting style.
|
||||
- Improvement in C++ usage: C-style casts have been replaced by C++ casts. C-style casts are difficult to search for. C++ casts provide compile time checking ability and express programmers' intent better, so they are safer and clearer.
|
||||
- Improvement in C++ usage: The override special identifier is now used when overriding a virtual function. This helps the compiler to check for type changes in the base class, making the detection of errors easier.
|
||||
- Improvement in C++ usage: A number of unused includes have been removed. Order of includes set to: local (in-source) headers, then library headers, then system headers. This helps to detect missing includes.
|
||||
- Improvement in C++ usage: Enhanced const correctness. Misuses of those variables are detected by the compiler.
|
||||
- Improved code with clang-tidy and generation of a compile_commands.json file containing the exact compiler calls for all translation units of the project in machine-readable form if clang-tidy is detected.
|
||||
- Applied some style rules to CMake scripts.
|
||||
- Minimal versions of dependencies identified and detected.
|
||||
|
||||
|
||||
### Improvements in Portability:
|
||||
|
||||
- The <ctime> library has been replaced by the more modern and portable <chrono>.
|
||||
- The <stdio.h> library has been replaced by the more modern and portable <fstream> for file handling.
|
||||
- C++ libraries preferred over C libraries (e.g., <cctype> instead of <type.h>).
|
||||
- A number of unused includes have been removed.
|
||||
- The software can now be built using GCC or LLVM/Clang compilers on GNU/Linux.
|
||||
- Several CMake scripts improvements, more verbose outputs in case of errors. Building configuration has been documented in https://gnss-sdr.org/docs/tutorials/configuration-options-building-time/
|
||||
- Improved SDK for cross-compilation in embedded devices. Documented in https://gnss-sdr.org/docs/tutorials/cross-compiling/
|
||||
- Improved control over minimum required versions for core dependencies.
|
||||
- The software builds with C++11, C++14 and C++17 standards.
|
||||
- The software can now be built using GCC >= 4.7.2 or LLVM/Clang >= 3.4.0 compilers on GNU/Linux, and with Clang/AppleClang on MacOS.
|
||||
- The Ninja build system can be used in replacement of make.
|
||||
- The volk_gnsssdr library can be built using Python 2.7 or Python 3.6.
|
||||
- Several CMake scripts improvements.
|
||||
- BLAS and LAPACK libraries are mandatory on ARM devices.
|
||||
- The volk_gnsssdr library can be built using Python 2.7+ or Python 3.6+.
|
||||
- The volk_gnsssdr library is now ready for AArch64 NEON instructions.
|
||||
- Improved detection of required and optional dependencies in many GNU/Linux distributions and processor architectures.
|
||||
- Improvement in C++ usage: The <ctime> library has been replaced by the more modern and portable <chrono> (except for the interaction with RTKLIB).
|
||||
- Improvement in C++ usage: The <stdio.h> library has been replaced by the more modern and portable <fstream> for file handling.
|
||||
- Improvement in C++ usage: C++ libraries preferred over C libraries (e.g., <cctype> instead of <ctype.h>, <cmath> instead of <math.h>).
|
||||
- Fix compatibility with Boost 1.67 (closes Debian bug #911882 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911882)
|
||||
- Fixes required by Debian packaging.
|
||||
- Fixes required by Macports packaging.
|
||||
- A downside in portability: BLAS and LAPACK libraries are now required even in ARM devices.
|
||||
- A downside in portability: the matio library >= 1.5.3 is a new required dependency. If not found, it is downloaded and built automatically at building time, but this requires libtool, automake and hdf5 already installed in the system.
|
||||
- A downside in portability: the PugiXML library is a new required dependency. If not found, it is downloaded and built automatically at building time.
|
||||
|
||||
|
||||
### Improvements in Reliability:
|
||||
|
||||
- Introduced 3 new Input Filter implementations for pulsed and narrowband interference mitigation: `Pulse_Blanking_Filter`, `Notch_Filter` and `Notch_Filter_Lite`.
|
||||
- Enhanced const correctness.
|
||||
- rand() function replaced by <random> library.
|
||||
- strlen and strncpy have been replaced by safer C++ counterparts.
|
||||
- Introduced 3 new Input Filter implementations for pulsed and narrowband interference mitigation: `Pulse_Blanking_Filter`, `Notch_Filter` and `Notch_Filter_Lite`. Documented in https://gnss-sdr.org/docs/sp-blocks/input-filter/
|
||||
- Improved flow graph stability.
|
||||
- Introduction of high-integrity C++ practices into the source code and included in the coding style guide. See https://gnss-sdr.org/coding-style/
|
||||
- Fixed a number of defects detected by Coverity Scan.
|
||||
- Some destructors have been fixed, avoiding a segmentation fault when exiting the program.
|
||||
- Introduction of high-integrity C++ practices into the coding style guide.
|
||||
- Website switched from http to https. Links in source code switched when available.
|
||||
- Improvement of QA code and addition of a number of new tests. Documented at https://gnss-sdr.org/docs/tutorials/testing-software-receiver-2/
|
||||
- Improvement in C++ usage: rand() function replaced by <random> library.
|
||||
- Improvement in C++ usage: strlen and strncpy have been replaced by safer C++ counterparts.
|
||||
- Improvement in C++ usage: Some destructors have been fixed, avoiding segmentation faults when exiting the program.
|
||||
- Website switched from http to https. Links in the source tree switched when available.
|
||||
|
||||
|
||||
### Improvements in Reproducibility:
|
||||
|
||||
- Setup of a Continuous Reproducibility system at GitLab for the automatic reproduction of experiments. The concept was introduced in https://ieeexplore.ieee.org/document/8331069/
|
||||
- Setup of a Continuous Reproducibility system at GitLab for the automatic reproduction of experiments. The concept was introduced in https://ieeexplore.ieee.org/document/8331069/ Example added in the src/utils/reproducibility/ieee-access18/ folder.
|
||||
- Fixes of Lintian warnings related to build reproducibility.
|
||||
|
||||
|
||||
### Improvements in Scalability:
|
||||
|
||||
- Improvements in multi-system, multi-band receiver configurations. The receiver now accepts any number of channels in the three available bands.
|
||||
- Improvements in multi-system, multi-band receiver configurations. The receiver now accepts any number of channels and systems in the three available bands.
|
||||
- All possible combinations of signals and integration times are now accepted by the Observables block.
|
||||
|
||||
|
||||
### Improvements in Testability:
|
||||
|
||||
- Several Unit Tests added.
|
||||
- Several Unit Tests added. Documentation of testing concepts and available tests at https://gnss-sdr.org/docs/tutorials/testing-software-receiver/
|
||||
- New extra unit test AcquisitionPerformanceTest checks the performance of Acquisition blocks.
|
||||
- New extra unit test TrackingPullInTest checks acquisition to tracking transition.
|
||||
- New extra unit test HybridObservablesTest checks the generation of observables.
|
||||
- Improved system testing: position_test accepts a wide list of parameters and can be used with external files.
|
||||
- Receiver channels can now be fixed to a given satellite.
|
||||
- Testing integrated in a Continuous Reproducibility system (see above).
|
||||
- Improved CTest support in volk_gnsssdr.
|
||||
|
||||
|
||||
### Improvements in Usability:
|
||||
|
||||
- All Observables block implementations have been collapsed in a universal implementation for all kinds of GNSS signals, making it easier to configure.
|
||||
- All PVT block implementations have been collapsed in a universal implementation for all kinds of GNSS signals, making it easier to configure.
|
||||
- Misleading parameter name GNSS-SDR.internal_fs_hz has been replaced by GNSS-SDR.internal_fs_sps. The old parameter name is still read. If found, a warning is provided to the user.
|
||||
- Updated and improved documentation.
|
||||
- All Observables block implementations have been merged into a single implementation for all kinds of GNSS signals, making it easier to configure.
|
||||
- All PVT block implementations have been merged into a single implementation for all kinds of GNSS signals, making it easier to configure.
|
||||
- Misleading parameter name GNSS-SDR.internal_fs_hz has been replaced by GNSS-SDR.internal_fs_sps. The old parameter name is still read. If found, a warning is provided to the user. The old name will be removed in future releases.
|
||||
- Updated and improved online documentation of processing blocks at https://gnss-sdr.org/docs/sp-blocks/
|
||||
- Improved documentation of required dependency packages in several GNU/Linux distributions.
|
||||
- Dump and output files can now be stored anywhere.
|
||||
- Parameter names with the same role have been harmonized within different block implementations.
|
||||
- Added a changelog, a code of conduct, a contributing guide and a pull-request template in the source tree.
|
||||
- Added colors to the commandline user interface.
|
||||
- Updated manfiles.
|
||||
- Updated examples of configuration files under the conf/ folder.
|
||||
|
||||
|
||||
|
||||
See the definitions of concepts and metrics at https://gnss-sdr.org/design-forces/
|
||||
@ -116,7 +182,6 @@ See the definitions of concepts and metrics at https://gnss-sdr.org/design-force
|
||||
|
||||
|
||||
|
||||
|
||||
## [0.0.9](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.9)
|
||||
|
||||
DOI: https://doi.org/10.5281/zenodo.291371
|
||||
|
@ -21,7 +21,7 @@
|
||||
# that follow. The default is UTF-8 which is also the encoding used for all
|
||||
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
|
||||
# iconv built into libc) for the transcoding. See
|
||||
# http://www.gnu.org/software/libiconv for the list of possible encodings.
|
||||
# https://www.gnu.org/software/libiconv for the list of possible encodings.
|
||||
|
||||
DOXYFILE_ENCODING = UTF-8
|
||||
|
||||
@ -551,7 +551,7 @@ LAYOUT_FILE =
|
||||
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
|
||||
# the reference definitions. This must be a list of .bib files. The .bib
|
||||
# extension is automatically appended if omitted. This requires the bibtex tool
|
||||
# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
|
||||
# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
|
||||
# For LaTeX the style of the bibliography can be controlled using
|
||||
# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
|
||||
# search path. See also \cite for info how to create references.
|
||||
@ -623,7 +623,7 @@ INPUT = @top_srcdir@/src @top_srcdir@/docs/doxygen/other
|
||||
# This tag can be used to specify the character encoding of the source files
|
||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
||||
# also the default input encoding. Doxygen uses libiconv (or the iconv built
|
||||
# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
|
||||
# into libc) for the transcoding. See https://www.gnu.org/software/libiconv for
|
||||
# the list of possible encodings.
|
||||
|
||||
INPUT_ENCODING = UTF-8
|
||||
@ -796,7 +796,7 @@ SOURCE_TOOLTIPS = YES
|
||||
# If the USE_HTAGS tag is set to YES then the references to source code
|
||||
# will point to the HTML generated by the htags(1) tool instead of doxygen
|
||||
# built-in source browser. The htags tool is part of GNU's global source
|
||||
# tagging system (see http://www.gnu.org/software/global/global.html). You
|
||||
# tagging system (see https://www.gnu.org/software/global/global.html). You
|
||||
# will need version 4.8.6 or higher.
|
||||
|
||||
USE_HTAGS = NO
|
||||
@ -875,7 +875,7 @@ HTML_STYLESHEET =
|
||||
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
|
||||
# Doxygen will adjust the colors in the stylesheet and background images
|
||||
# according to this color. Hue is specified as an angle on a colorwheel,
|
||||
# see http://en.wikipedia.org/wiki/Hue for more information.
|
||||
# see https://en.wikipedia.org/wiki/Hue for more information.
|
||||
# For instance the value 0 represents red, 60 is yellow, 120 is green,
|
||||
# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
|
||||
# The allowed range is 0 to 359.
|
||||
@ -925,8 +925,6 @@ HTML_DYNAMIC_SECTIONS = NO
|
||||
# directory and running "make install" will install the docset in
|
||||
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
|
||||
# it at startup.
|
||||
# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
|
||||
# for more information.
|
||||
|
||||
GENERATE_DOCSET = NO
|
||||
|
||||
@ -1123,7 +1121,7 @@ FORMULA_FONTSIZE = 10
|
||||
FORMULA_TRANSPARENT = YES
|
||||
|
||||
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
|
||||
# (see http://www.mathjax.org) which uses client side Javascript for the
|
||||
# (see https://www.mathjax.org) which uses client side Javascript for the
|
||||
# rendering instead of using prerendered bitmaps. Use this if you do not
|
||||
# have LaTeX installed or if you want to formulas look prettier in the HTML
|
||||
# output. When enabled you also need to install MathJax separately and
|
||||
@ -1133,7 +1131,7 @@ USE_MATHJAX = @GNSSSDR_USE_MATHJAX@
|
||||
|
||||
# When MathJax is enabled you can set the default output format to be used for
|
||||
# the MathJax output. See the MathJax site (see:
|
||||
# http://docs.mathjax.org/en/latest/output.html) for more details.
|
||||
# https://docs.mathjax.org/en/latest/output.html) for more details.
|
||||
# Possible values are: HTML-CSS (which is slower, but has the best
|
||||
# compatibility), NativeMML (i.e. MathML) and SVG.
|
||||
# The default value is: HTML-CSS.
|
||||
@ -1149,7 +1147,7 @@ MATHJAX_FORMAT = HTML-CSS
|
||||
# MathJax, but it is strongly recommended to install a local copy of MathJax
|
||||
# before deployment.
|
||||
|
||||
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
||||
MATHJAX_RELPATH = https://cdnjs.com/libraries/mathjax/
|
||||
|
||||
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
|
||||
# extension names that should be enabled during MathJax rendering. For example
|
||||
@ -1160,7 +1158,7 @@ MATHJAX_EXTENSIONS =
|
||||
|
||||
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
|
||||
# of code that will be used on startup of the MathJax code. See the MathJax site
|
||||
# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
|
||||
# (see: https://docs.mathjax.org/en/latest/output.html) for more details. For an
|
||||
# example see the documentation.
|
||||
# This tag requires that the tag USE_MATHJAX is set to YES.
|
||||
|
||||
@ -1194,7 +1192,7 @@ SERVER_BASED_SEARCH = NO
|
||||
#
|
||||
# Doxygen ships with an example indexer (doxyindexer) and search engine
|
||||
# (doxysearch.cgi) which are based on the open source search engine library
|
||||
# Xapian (see: http://xapian.org/).
|
||||
# Xapian (see: https://xapian.org/).
|
||||
#
|
||||
# See the section "External Indexing and Searching" for details.
|
||||
# The default value is: NO.
|
||||
@ -1207,7 +1205,7 @@ EXTERNAL_SEARCH = NO
|
||||
#
|
||||
# Doxygen ships with an example indexer (doxyindexer) and search engine
|
||||
# (doxysearch.cgi) which are based on the open source search engine library
|
||||
# Xapian (see: http://xapian.org/). See the section "External Indexing and
|
||||
# Xapian (see: https://xapian.org/). See the section "External Indexing and
|
||||
# Searching" for details.
|
||||
# This tag requires that the tag SEARCHENGINE is set to YES.
|
||||
|
||||
@ -1358,7 +1356,7 @@ LATEX_SOURCE_CODE = NO
|
||||
|
||||
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
|
||||
# bibliography, e.g. plainnat, or ieeetr. See
|
||||
# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
|
||||
# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
|
||||
# The default value is: plain.
|
||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||
|
||||
|
Binary file not shown.
Before ![]() (image error) Size: 91 KiB After ![]() (image error) Size: 92 KiB ![]() ![]() |
@ -1,6 +1,6 @@
|
||||
.\" Manpage for gnss\-sdr.
|
||||
.\" Contact carles.fernandez@cttc.es to correct errors or typos.
|
||||
.TH gnss\-sdr 1 "24 Feb 2018" "0.0.9" "gnss\-sdr man page"
|
||||
.TH gnss\-sdr 1 "12 Dec 2018" "0.0.10" "gnss\-sdr man page"
|
||||
.SH NAME
|
||||
\fBgnss\-sdr\fR \- GNSS Software Defined Receiver.
|
||||
.SH SYNOPSIS
|
||||
|
35
docs/xml-schemas/README.md
Normal file
35
docs/xml-schemas/README.md
Normal file
@ -0,0 +1,35 @@
|
||||
# XML Schemas for Assisted GNSS-SDR
|
||||
|
||||
GNSS-SDR can read assistance data from [Extensible Markup Language (XML)](https://www.w3.org/XML/) files for faster [Time-To-First-Fix](https://gnss-sdr.org/design-forces/availability/#time-to-first-fix-ttff), and can store navigation data decoded from GNSS signals in the same format. This folder provides XML Schemas which describe those XML files structure.
|
||||
|
||||
[XSD (XML Schema Definition)](https://www.w3.org/XML/Schema) is a World Wide Web Consortium (W3C) recommendation that specifies how to formally describe the elements in an XML document.
|
||||
|
||||
|
||||
GPS L1 C/A
|
||||
----------
|
||||
|
||||
- [ephemeris_map.xsd](./ephemeris_map.xsd) - GPS NAV message ephemeris parameters.
|
||||
- [iono_model.xsd](./iono_model.xsd) - GPS NAV message ionospheric model parameters.
|
||||
- [utc_model.xsd](./utc_model.xsd) - GPS NAV message UTC model parameters.
|
||||
- [gps_almanac_map.xsd](./gps_almanac_map.xsd) - GPS NAV message almanac.
|
||||
|
||||
|
||||
GPS L2C and L5
|
||||
--------------
|
||||
|
||||
- [cnav_ephemeris_map.xsd](./cnav_ephemeris_map.xsd) - GPS CNAV message ephemeris parameters.
|
||||
|
||||
|
||||
Galileo
|
||||
-------
|
||||
|
||||
- [gal_ephemeris_map.xsd](./gal_ephemeris_map.xsd) - Galileo ephemeris parameters.
|
||||
- [gal_iono_model.xsd](./gal_iono_model.xsd) - Galileo ionospheric model parameters.
|
||||
- [gal_utc_model.xsd](./gal_utc_model.xsd) - Galileo UTC model parameters.
|
||||
- [gal_almanac_map.xsd](./gal_almanac_map.xsd) - Galileo almanac.
|
||||
|
||||
-------
|
||||
|
||||
Please check https://gnss-sdr.org/docs/sp-blocks/global-parameters/ for more information about the usage of XML files in GNSS-SDR.
|
||||
|
||||
You could find useful the utility program [rinex2assist](https://github.com/gnss-sdr/gnss-sdr/tree/next/src/utils/rinex2assist) for the generation of compatible XML files from recent, publicly available RINEX navigation data files.
|
72
docs/xml-schemas/cnav_ephemeris_map.xsd
Normal file
72
docs/xml-schemas/cnav_ephemeris_map.xsd
Normal file
@ -0,0 +1,72 @@
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="boost_serialization">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="GNSS-SDR_cnav_ephemeris_map">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="count"/>
|
||||
<xs:element type="xs:byte" name="item_version"/>
|
||||
<xs:element name="item" maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="first"/>
|
||||
<xs:element name="second">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="i_satellite_PRN"/>
|
||||
<xs:element type="xs:int" name="d_TOW"/>
|
||||
<xs:element type="xs:float" name="d_Crs"/>
|
||||
<xs:element type="xs:float" name="d_M_0"/>
|
||||
<xs:element type="xs:float" name="d_Cuc"/>
|
||||
<xs:element type="xs:float" name="d_e_eccentricity"/>
|
||||
<xs:element type="xs:float" name="d_Cus"/>
|
||||
<xs:element type="xs:int" name="d_Toe1"/>
|
||||
<xs:element type="xs:int" name="d_Toe2"/>
|
||||
<xs:element type="xs:byte" name="d_Toc"/>
|
||||
<xs:element type="xs:float" name="d_Cic"/>
|
||||
<xs:element type="xs:float" name="d_OMEGA0"/>
|
||||
<xs:element type="xs:float" name="d_Cis"/>
|
||||
<xs:element type="xs:float" name="d_i_0"/>
|
||||
<xs:element type="xs:float" name="d_Crc"/>
|
||||
<xs:element type="xs:float" name="d_OMEGA"/>
|
||||
<xs:element type="xs:float" name="d_IDOT"/>
|
||||
<xs:element type="xs:short" name="i_GPS_week"/>
|
||||
<xs:element type="xs:float" name="d_TGD"/>
|
||||
<xs:element type="xs:float" name="d_ISCL1"/>
|
||||
<xs:element type="xs:float" name="d_ISCL2"/>
|
||||
<xs:element type="xs:float" name="d_ISCL5I"/>
|
||||
<xs:element type="xs:float" name="d_ISCL5Q"/>
|
||||
<xs:element type="xs:float" name="d_DELTA_A"/>
|
||||
<xs:element type="xs:float" name="d_A_DOT"/>
|
||||
<xs:element type="xs:float" name="d_DELTA_OMEGA_DOT"/>
|
||||
<xs:element type="xs:float" name="d_A_f0"/>
|
||||
<xs:element type="xs:float" name="d_A_f1"/>
|
||||
<xs:element type="xs:float" name="d_A_f2"/>
|
||||
<xs:element type="xs:byte" name="b_integrity_status_flag"/>
|
||||
<xs:element type="xs:byte" name="b_alert_flag"/>
|
||||
<xs:element type="xs:byte" name="b_antispoofing_flag"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="version" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="version" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="signature"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
78
docs/xml-schemas/ephemeris_map.xsd
Normal file
78
docs/xml-schemas/ephemeris_map.xsd
Normal file
@ -0,0 +1,78 @@
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="boost_serialization">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="GNSS-SDR_ephemeris_map">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="count"/>
|
||||
<xs:element type="xs:byte" name="item_version"/>
|
||||
<xs:element name="item" maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="first"/>
|
||||
<xs:element name="second">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="i_satellite_PRN"/>
|
||||
<xs:element type="xs:int" name="d_TOW"/>
|
||||
<xs:element type="xs:byte" name="d_IODE_SF2"/>
|
||||
<xs:element type="xs:byte" name="d_IODE_SF3"/>
|
||||
<xs:element type="xs:float" name="d_Crs"/>
|
||||
<xs:element type="xs:float" name="d_Delta_n"/>
|
||||
<xs:element type="xs:float" name="d_M_0"/>
|
||||
<xs:element type="xs:float" name="d_Cuc"/>
|
||||
<xs:element type="xs:float" name="d_e_eccentricity"/>
|
||||
<xs:element type="xs:float" name="d_Cus"/>
|
||||
<xs:element type="xs:float" name="d_sqrt_A"/>
|
||||
<xs:element type="xs:int" name="d_Toe"/>
|
||||
<xs:element type="xs:int" name="d_Toc"/>
|
||||
<xs:element type="xs:float" name="d_Cic"/>
|
||||
<xs:element type="xs:float" name="d_OMEGA0"/>
|
||||
<xs:element type="xs:float" name="d_Cis"/>
|
||||
<xs:element type="xs:float" name="d_i_0"/>
|
||||
<xs:element type="xs:float" name="d_Crc"/>
|
||||
<xs:element type="xs:float" name="d_OMEGA"/>
|
||||
<xs:element type="xs:float" name="d_OMEGA_DOT"/>
|
||||
<xs:element type="xs:float" name="d_IDOT"/>
|
||||
<xs:element type="xs:byte" name="i_code_on_L2"/>
|
||||
<xs:element type="xs:short" name="i_GPS_week"/>
|
||||
<xs:element type="xs:byte" name="b_L2_P_data_flag"/>
|
||||
<xs:element type="xs:byte" name="i_SV_accuracy"/>
|
||||
<xs:element type="xs:byte" name="i_SV_health"/>
|
||||
<xs:element type="xs:float" name="d_TGD"/>
|
||||
<xs:element type="xs:byte" name="d_IODC"/>
|
||||
<xs:element type="xs:short" name="i_AODO"/>
|
||||
<xs:element type="xs:byte" name="b_fit_interval_flag"/>
|
||||
<xs:element type="xs:float" name="d_spare1"/>
|
||||
<xs:element type="xs:float" name="d_spare2"/>
|
||||
<xs:element type="xs:float" name="d_A_f0"/>
|
||||
<xs:element type="xs:float" name="d_A_f1"/>
|
||||
<xs:element type="xs:float" name="d_A_f2"/>
|
||||
<xs:element type="xs:byte" name="b_integrity_status_flag"/>
|
||||
<xs:element type="xs:byte" name="b_alert_flag"/>
|
||||
<xs:element type="xs:byte" name="b_antispoofing_flag"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="version" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="version" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="signature"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
56
docs/xml-schemas/gal_almanac_map.xsd
Normal file
56
docs/xml-schemas/gal_almanac_map.xsd
Normal file
@ -0,0 +1,56 @@
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="boost_serialization">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="GNSS-SDR_gal_almanac_map">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="count"/>
|
||||
<xs:element type="xs:byte" name="item_version"/>
|
||||
<xs:element name="item" maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="first"/>
|
||||
<xs:element name="second">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="i_satellite_PRN"/>
|
||||
<xs:element type="xs:int" name="i_Toa"/>
|
||||
<xs:element type="xs:byte" name="i_WNa"/>
|
||||
<xs:element type="xs:byte" name="i_IODa"/>
|
||||
<xs:element type="xs:float" name="d_Delta_i"/>
|
||||
<xs:element type="xs:float" name="d_M_0"/>
|
||||
<xs:element type="xs:float" name="d_e_eccentricity"/>
|
||||
<xs:element type="xs:float" name="d_Delta_sqrt_A"/>
|
||||
<xs:element type="xs:float" name="d_OMEGA0"/>
|
||||
<xs:element type="xs:float" name="d_OMEGA"/>
|
||||
<xs:element type="xs:float" name="d_OMEGA_DOT"/>
|
||||
<xs:element type="xs:float" name="d_A_f0"/>
|
||||
<xs:element type="xs:float" name="d_A_f1"/>
|
||||
<xs:element type="xs:byte" name="E5b_HS"/>
|
||||
<xs:element type="xs:byte" name="E1B_HS"/>
|
||||
<xs:element type="xs:byte" name="E5a_HS"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="version" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="version" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="signature"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
77
docs/xml-schemas/gal_ephemeris_map.xsd
Normal file
77
docs/xml-schemas/gal_ephemeris_map.xsd
Normal file
@ -0,0 +1,77 @@
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="boost_serialization">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="GNSS-SDR_gal_ephemeris_map">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="count"/>
|
||||
<xs:element type="xs:byte" name="item_version"/>
|
||||
<xs:element name="item" maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="first"/>
|
||||
<xs:element name="second">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="i_satellite_PRN"/>
|
||||
<xs:element type="xs:float" name="M0_1"/>
|
||||
<xs:element type="xs:float" name="delta_n_3"/>
|
||||
<xs:element type="xs:float" name="e_1"/>
|
||||
<xs:element type="xs:float" name="A_1"/>
|
||||
<xs:element type="xs:float" name="OMEGA_0_2"/>
|
||||
<xs:element type="xs:float" name="i_0_2"/>
|
||||
<xs:element type="xs:float" name="omega_2"/>
|
||||
<xs:element type="xs:float" name="OMEGA_dot_3"/>
|
||||
<xs:element type="xs:float" name="iDot_2"/>
|
||||
<xs:element type="xs:float" name="C_uc_3"/>
|
||||
<xs:element type="xs:float" name="C_us_3"/>
|
||||
<xs:element type="xs:float" name="C_rc_3"/>
|
||||
<xs:element type="xs:float" name="C_rs_3"/>
|
||||
<xs:element type="xs:float" name="C_ic_4"/>
|
||||
<xs:element type="xs:float" name="C_is_4"/>
|
||||
<xs:element type="xs:int" name="t0e_1"/>
|
||||
<xs:element type="xs:int" name="t0c_4"/>
|
||||
<xs:element type="xs:float" name="af0_4"/>
|
||||
<xs:element type="xs:float" name="af1_4"/>
|
||||
<xs:element type="xs:float" name="af2_4"/>
|
||||
<xs:element type="xs:short" name="WN_5"/>
|
||||
<xs:element type="xs:int" name="TOW_5"/>
|
||||
<xs:element type="xs:float" name="Galileo_satClkDrift"/>
|
||||
<xs:element type="xs:float" name="Galileo_dtr"/>
|
||||
<xs:element type="xs:byte" name="flag_all_ephemeris"/>
|
||||
<xs:element type="xs:byte" name="IOD_ephemeris"/>
|
||||
<xs:element type="xs:byte" name="IOD_nav_1"/>
|
||||
<xs:element type="xs:byte" name="SISA_3"/>
|
||||
<xs:element type="xs:byte" name="E5a_HS"/>
|
||||
<xs:element type="xs:byte" name="E5b_HS_5"/>
|
||||
<xs:element type="xs:byte" name="E1B_HS_5"/>
|
||||
<xs:element type="xs:byte" name="E5a_DVS"/>
|
||||
<xs:element type="xs:byte" name="E5b_DVS_5"/>
|
||||
<xs:element type="xs:byte" name="E1B_DVS_5"/>
|
||||
<xs:element type="xs:float" name="BGD_E1E5a_5"/>
|
||||
<xs:element type="xs:float" name="BGD_E1E5b_5"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="version" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="version" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="signature"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
29
docs/xml-schemas/gal_iono_model.xsd
Normal file
29
docs/xml-schemas/gal_iono_model.xsd
Normal file
@ -0,0 +1,29 @@
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="boost_serialization">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="GNSS-SDR_gal_iono_model">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:float" name="ai0_5"/>
|
||||
<xs:element type="xs:float" name="ai1_5"/>
|
||||
<xs:element type="xs:float" name="ai2_5"/>
|
||||
<xs:element type="xs:byte" name="Region1_flag_5"/>
|
||||
<xs:element type="xs:byte" name="Region2_flag_5"/>
|
||||
<xs:element type="xs:byte" name="Region3_flag_5"/>
|
||||
<xs:element type="xs:byte" name="Region4_flag_5"/>
|
||||
<xs:element type="xs:byte" name="Region5_flag_5"/>
|
||||
<xs:element type="xs:int" name="TOW_5"/>
|
||||
<xs:element type="xs:short" name="WN_5"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="signature"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
28
docs/xml-schemas/gal_utc_model.xsd
Normal file
28
docs/xml-schemas/gal_utc_model.xsd
Normal file
@ -0,0 +1,28 @@
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="boost_serialization">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="GNSS-SDR_gal_utc_model">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:float" name="A0_6"/>
|
||||
<xs:element type="xs:float" name="A1_6"/>
|
||||
<xs:element type="xs:byte" name="Delta_tLS_6"/>
|
||||
<xs:element type="xs:int" name="t0t_6"/>
|
||||
<xs:element type="xs:short" name="WNot_6"/>
|
||||
<xs:element type="xs:short" name="WN_LSF_6"/>
|
||||
<xs:element type="xs:byte" name="DN_6"/>
|
||||
<xs:element type="xs:byte" name="Delta_tLSF_6"/>
|
||||
<xs:element type="xs:byte" name="flag_utc_model"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="signature"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
54
docs/xml-schemas/gps_almanac_map.xsd
Normal file
54
docs/xml-schemas/gps_almanac_map.xsd
Normal file
@ -0,0 +1,54 @@
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="boost_serialization">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="GNSS-SDR_gps_almanac_map">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="count"/>
|
||||
<xs:element type="xs:byte" name="item_version"/>
|
||||
<xs:element name="item" maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="first"/>
|
||||
<xs:element name="second">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="i_satellite_PRN"/>
|
||||
<xs:element type="xs:float" name="d_Delta_i"/>
|
||||
<xs:element type="xs:byte" name="i_Toa"/>
|
||||
<xs:element type="xs:byte" name="i_WNa"/>
|
||||
<xs:element type="xs:float" name="d_M_0"/>
|
||||
<xs:element type="xs:float" name="d_e_eccentricity"/>
|
||||
<xs:element type="xs:float" name="d_sqrt_A"/>
|
||||
<xs:element type="xs:float" name="d_OMEGA0"/>
|
||||
<xs:element type="xs:float" name="d_OMEGA"/>
|
||||
<xs:element type="xs:float" name="d_OMEGA_DOT"/>
|
||||
<xs:element type="xs:byte" name="i_SV_health"/>
|
||||
<xs:element type="xs:byte" name="i_AS_status"/>
|
||||
<xs:element type="xs:float" name="d_A_f0"/>
|
||||
<xs:element type="xs:float" name="d_A_f1"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="version" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level" use="optional"/>
|
||||
<xs:attribute type="xs:byte" name="version" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="signature"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
27
docs/xml-schemas/iono_model.xsd
Normal file
27
docs/xml-schemas/iono_model.xsd
Normal file
@ -0,0 +1,27 @@
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="boost_serialization">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="GNSS-SDR_iono_model">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:float" name="d_alpha0"/>
|
||||
<xs:element type="xs:float" name="d_alpha1"/>
|
||||
<xs:element type="xs:float" name="d_alpha2"/>
|
||||
<xs:element type="xs:float" name="d_alpha3"/>
|
||||
<xs:element type="xs:float" name="d_beta0"/>
|
||||
<xs:element type="xs:float" name="d_beta1"/>
|
||||
<xs:element type="xs:float" name="d_beta2"/>
|
||||
<xs:element type="xs:float" name="d_beta3"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="signature"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
28
docs/xml-schemas/utc_model.xsd
Normal file
28
docs/xml-schemas/utc_model.xsd
Normal file
@ -0,0 +1,28 @@
|
||||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="boost_serialization">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="GNSS-SDR_utc_model">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element type="xs:byte" name="valid"/>
|
||||
<xs:element type="xs:float" name="d_A1"/>
|
||||
<xs:element type="xs:float" name="d_A0"/>
|
||||
<xs:element type="xs:int" name="d_t_OT"/>
|
||||
<xs:element type="xs:short" name="i_WN_T"/>
|
||||
<xs:element type="xs:byte" name="d_DeltaT_LS"/>
|
||||
<xs:element type="xs:short" name="i_WN_LSF"/>
|
||||
<xs:element type="xs:byte" name="i_DN"/>
|
||||
<xs:element type="xs:byte" name="d_DeltaT_LSF"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:byte" name="class_id"/>
|
||||
<xs:attribute type="xs:byte" name="tracking_level"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute type="xs:string" name="signature"/>
|
||||
<xs:attribute type="xs:byte" name="version"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
@ -21,5 +21,5 @@ add_subdirectory(core)
|
||||
add_subdirectory(main)
|
||||
if(ENABLE_UNIT_TESTING OR ENABLE_SYSTEM_TESTING)
|
||||
add_subdirectory(tests)
|
||||
endif(ENABLE_UNIT_TESTING OR ENABLE_SYSTEM_TESTING)
|
||||
endif()
|
||||
add_subdirectory(utils)
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2012-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2012-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -16,28 +16,47 @@
|
||||
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
|
||||
set(PVT_ADAPTER_SOURCES
|
||||
rtklib_pvt.cc
|
||||
rtklib_pvt.cc
|
||||
)
|
||||
|
||||
include_directories(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_SOURCE_DIR}/src/core/system_parameters
|
||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||
${CMAKE_SOURCE_DIR}/src/core/receiver
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/PVT/gnuradio_blocks
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/PVT/libs
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/libs/rtklib
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/libs
|
||||
${ARMADILLO_INCLUDE_DIRS}
|
||||
${Boost_INCLUDE_DIRS}
|
||||
${GLOG_INCLUDE_DIRS}
|
||||
${GFlags_INCLUDE_DIRS}
|
||||
${GNURADIO_RUNTIME_INCLUDE_DIRS}
|
||||
set(PVT_ADAPTER_HEADERS
|
||||
rtklib_pvt.h
|
||||
)
|
||||
|
||||
file(GLOB PVT_ADAPTER_HEADERS "*.h")
|
||||
list(SORT PVT_ADAPTER_HEADERS)
|
||||
add_library(pvt_adapters ${PVT_ADAPTER_SOURCES} ${PVT_ADAPTER_HEADERS})
|
||||
source_group(Headers FILES ${PVT_ADAPTER_HEADERS})
|
||||
target_link_libraries(pvt_adapters pvt_gr_blocks ${ARMADILLO_LIBRARIES} ${GNURADIO_RUNTIME_LIBRARIES})
|
||||
|
||||
add_library(pvt_adapters ${PVT_ADAPTER_SOURCES} ${PVT_ADAPTER_HEADERS})
|
||||
|
||||
target_link_libraries(pvt_adapters
|
||||
PUBLIC
|
||||
pvt_gr_blocks
|
||||
core_system_parameters
|
||||
PRIVATE
|
||||
gnss_sdr_flags
|
||||
pvt_libs
|
||||
)
|
||||
|
||||
target_include_directories(pvt_adapters
|
||||
PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||
)
|
||||
|
||||
if(Boost_VERSION LESS 105800)
|
||||
target_compile_definitions(pvt_adapters PRIVATE -DOLD_BOOST=1)
|
||||
endif()
|
||||
|
||||
if(ENABLE_CLANG_TIDY)
|
||||
if(CLANG_TIDY_EXE)
|
||||
set_target_properties(pvt_adapters
|
||||
PROPERTIES
|
||||
CXX_CLANG_TIDY "${DO_CLANG_TIDY}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set_property(TARGET pvt_adapters
|
||||
APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
)
|
||||
|
@ -32,111 +32,108 @@
|
||||
#include "rtklib_pvt.h"
|
||||
#include "configuration_interface.h"
|
||||
#include "gnss_sdr_flags.h"
|
||||
#include <boost/archive/xml_oarchive.hpp>
|
||||
#include <boost/archive/xml_iarchive.hpp>
|
||||
#include <boost/math/common_factor_rt.hpp>
|
||||
#include <boost/serialization/map.hpp>
|
||||
#include "pvt_conf.h"
|
||||
#include <glog/logging.h>
|
||||
#if OLD_BOOST
|
||||
#include <boost/math/common_factor_rt.hpp>
|
||||
namespace bc = boost::math;
|
||||
#else
|
||||
#include <boost/integer/common_factor_rt.hpp>
|
||||
namespace bc = boost::integer;
|
||||
#endif
|
||||
|
||||
|
||||
using google::LogMessage;
|
||||
|
||||
RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
|
||||
std::string role,
|
||||
|
||||
Rtklib_Pvt::Rtklib_Pvt(ConfigurationInterface* configuration,
|
||||
const std::string& role,
|
||||
unsigned int in_streams,
|
||||
unsigned int out_streams) : role_(role),
|
||||
in_streams_(in_streams),
|
||||
out_streams_(out_streams)
|
||||
{
|
||||
Pvt_Conf pvt_output_parameters = Pvt_Conf();
|
||||
// dump parameters
|
||||
std::string default_dump_filename = "./pvt.dat";
|
||||
std::string default_nmea_dump_filename = "./nmea_pvt.nmea";
|
||||
std::string default_nmea_dump_devname = "/dev/tty1";
|
||||
std::string default_rtcm_dump_devname = "/dev/pts/1";
|
||||
DLOG(INFO) << "role " << role;
|
||||
dump_ = configuration->property(role + ".dump", false);
|
||||
dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename);
|
||||
pvt_output_parameters.dump = configuration->property(role + ".dump", false);
|
||||
pvt_output_parameters.dump_filename = configuration->property(role + ".dump_filename", default_dump_filename);
|
||||
pvt_output_parameters.dump_mat = configuration->property(role + ".dump_mat", true);
|
||||
|
||||
// output rate
|
||||
int output_rate_ms = configuration->property(role + ".output_rate_ms", 500);
|
||||
pvt_output_parameters.output_rate_ms = configuration->property(role + ".output_rate_ms", 500);
|
||||
|
||||
// display rate
|
||||
int display_rate_ms = configuration->property(role + ".display_rate_ms", 500);
|
||||
pvt_output_parameters.display_rate_ms = configuration->property(role + ".display_rate_ms", 500);
|
||||
|
||||
// NMEA Printer settings
|
||||
bool flag_nmea_tty_port = configuration->property(role + ".flag_nmea_tty_port", false);
|
||||
std::string nmea_dump_filename = configuration->property(role + ".nmea_dump_filename", default_nmea_dump_filename);
|
||||
pvt_output_parameters.flag_nmea_tty_port = configuration->property(role + ".flag_nmea_tty_port", false);
|
||||
pvt_output_parameters.nmea_dump_filename = configuration->property(role + ".nmea_dump_filename", default_nmea_dump_filename);
|
||||
std::string nmea_dump_devname = configuration->property(role + ".nmea_dump_devname", default_nmea_dump_devname);
|
||||
|
||||
// RINEX version
|
||||
int rinex_version = configuration->property(role + ".rinex_version", 3);
|
||||
if (FLAGS_RINEX_version.compare("3.01") == 0)
|
||||
pvt_output_parameters.rinex_version = configuration->property(role + ".rinex_version", 3);
|
||||
if (FLAGS_RINEX_version == "3.01")
|
||||
{
|
||||
rinex_version = 3;
|
||||
pvt_output_parameters.rinex_version = 3;
|
||||
}
|
||||
else if (FLAGS_RINEX_version.compare("3.02") == 0)
|
||||
else if (FLAGS_RINEX_version == "3.02")
|
||||
{
|
||||
rinex_version = 3;
|
||||
pvt_output_parameters.rinex_version = 3;
|
||||
}
|
||||
else if (FLAGS_RINEX_version.compare("3") == 0)
|
||||
else if (FLAGS_RINEX_version == "3")
|
||||
{
|
||||
rinex_version = 3;
|
||||
pvt_output_parameters.rinex_version = 3;
|
||||
}
|
||||
else if (FLAGS_RINEX_version.compare("2.11") == 0)
|
||||
else if (FLAGS_RINEX_version == "2.11")
|
||||
{
|
||||
rinex_version = 2;
|
||||
pvt_output_parameters.rinex_version = 2;
|
||||
}
|
||||
else if (FLAGS_RINEX_version.compare("2.10") == 0)
|
||||
else if (FLAGS_RINEX_version == "2.10")
|
||||
{
|
||||
rinex_version = 2;
|
||||
pvt_output_parameters.rinex_version = 2;
|
||||
}
|
||||
else if (FLAGS_RINEX_version.compare("2") == 0)
|
||||
else if (FLAGS_RINEX_version == "2")
|
||||
{
|
||||
rinex_version = 2;
|
||||
pvt_output_parameters.rinex_version = 2;
|
||||
}
|
||||
pvt_output_parameters.rinexobs_rate_ms = bc::lcm(configuration->property(role + ".rinexobs_rate_ms", 1000), pvt_output_parameters.output_rate_ms);
|
||||
pvt_output_parameters.rinexnav_rate_ms = bc::lcm(configuration->property(role + ".rinexnav_rate_ms", 6000), pvt_output_parameters.output_rate_ms);
|
||||
|
||||
// RTCM Printer settings
|
||||
bool flag_rtcm_tty_port = configuration->property(role + ".flag_rtcm_tty_port", false);
|
||||
std::string rtcm_dump_devname = configuration->property(role + ".rtcm_dump_devname", default_rtcm_dump_devname);
|
||||
bool flag_rtcm_server = configuration->property(role + ".flag_rtcm_server", false);
|
||||
unsigned short rtcm_tcp_port = configuration->property(role + ".rtcm_tcp_port", 2101);
|
||||
unsigned short rtcm_station_id = configuration->property(role + ".rtcm_station_id", 1234);
|
||||
pvt_output_parameters.flag_rtcm_tty_port = configuration->property(role + ".flag_rtcm_tty_port", false);
|
||||
pvt_output_parameters.rtcm_dump_devname = configuration->property(role + ".rtcm_dump_devname", default_rtcm_dump_devname);
|
||||
pvt_output_parameters.flag_rtcm_server = configuration->property(role + ".flag_rtcm_server", false);
|
||||
pvt_output_parameters.rtcm_tcp_port = configuration->property(role + ".rtcm_tcp_port", 2101);
|
||||
pvt_output_parameters.rtcm_station_id = configuration->property(role + ".rtcm_station_id", 1234);
|
||||
// RTCM message rates: least common multiple with output_rate_ms
|
||||
int rtcm_MT1019_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1019_rate_ms", 5000), output_rate_ms);
|
||||
int rtcm_MT1020_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1020_rate_ms", 5000), output_rate_ms);
|
||||
int rtcm_MT1045_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1045_rate_ms", 5000), output_rate_ms);
|
||||
int rtcm_MSM_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MSM_rate_ms", 1000), output_rate_ms);
|
||||
int rtcm_MT1077_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1077_rate_ms", rtcm_MSM_rate_ms), output_rate_ms);
|
||||
int rtcm_MT1087_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1087_rate_ms", rtcm_MSM_rate_ms), output_rate_ms);
|
||||
int rtcm_MT1097_rate_ms = boost::math::lcm(configuration->property(role + ".rtcm_MT1097_rate_ms", rtcm_MSM_rate_ms), output_rate_ms);
|
||||
std::map<int, int> rtcm_msg_rate_ms;
|
||||
rtcm_msg_rate_ms[1019] = rtcm_MT1019_rate_ms;
|
||||
rtcm_msg_rate_ms[1020] = rtcm_MT1020_rate_ms;
|
||||
rtcm_msg_rate_ms[1045] = rtcm_MT1045_rate_ms;
|
||||
int rtcm_MT1019_rate_ms = bc::lcm(configuration->property(role + ".rtcm_MT1019_rate_ms", 5000), pvt_output_parameters.output_rate_ms);
|
||||
int rtcm_MT1020_rate_ms = bc::lcm(configuration->property(role + ".rtcm_MT1020_rate_ms", 5000), pvt_output_parameters.output_rate_ms);
|
||||
int rtcm_MT1045_rate_ms = bc::lcm(configuration->property(role + ".rtcm_MT1045_rate_ms", 5000), pvt_output_parameters.output_rate_ms);
|
||||
int rtcm_MSM_rate_ms = bc::lcm(configuration->property(role + ".rtcm_MSM_rate_ms", 1000), pvt_output_parameters.output_rate_ms);
|
||||
int rtcm_MT1077_rate_ms = bc::lcm(configuration->property(role + ".rtcm_MT1077_rate_ms", rtcm_MSM_rate_ms), pvt_output_parameters.output_rate_ms);
|
||||
int rtcm_MT1087_rate_ms = bc::lcm(configuration->property(role + ".rtcm_MT1087_rate_ms", rtcm_MSM_rate_ms), pvt_output_parameters.output_rate_ms);
|
||||
int rtcm_MT1097_rate_ms = bc::lcm(configuration->property(role + ".rtcm_MT1097_rate_ms", rtcm_MSM_rate_ms), pvt_output_parameters.output_rate_ms);
|
||||
//std::map<int, int> rtcm_msg_rate_ms;
|
||||
pvt_output_parameters.rtcm_msg_rate_ms[1019] = rtcm_MT1019_rate_ms;
|
||||
pvt_output_parameters.rtcm_msg_rate_ms[1020] = rtcm_MT1020_rate_ms;
|
||||
pvt_output_parameters.rtcm_msg_rate_ms[1045] = rtcm_MT1045_rate_ms;
|
||||
for (int k = 1071; k < 1078; k++) // All GPS MSM
|
||||
{
|
||||
rtcm_msg_rate_ms[k] = rtcm_MT1077_rate_ms;
|
||||
pvt_output_parameters.rtcm_msg_rate_ms[k] = rtcm_MT1077_rate_ms;
|
||||
}
|
||||
for (int k = 1081; k < 1088; k++) // All GLONASS MSM
|
||||
{
|
||||
rtcm_msg_rate_ms[k] = rtcm_MT1087_rate_ms;
|
||||
pvt_output_parameters.rtcm_msg_rate_ms[k] = rtcm_MT1087_rate_ms;
|
||||
}
|
||||
for (int k = 1091; k < 1098; k++) // All Galileo MSM
|
||||
{
|
||||
rtcm_msg_rate_ms[k] = rtcm_MT1097_rate_ms;
|
||||
pvt_output_parameters.rtcm_msg_rate_ms[k] = rtcm_MT1097_rate_ms;
|
||||
}
|
||||
// getting names from the config file, if available
|
||||
// default filename for assistance data
|
||||
const std::string eph_default_xml_filename = "./gps_ephemeris.xml";
|
||||
const std::string utc_default_xml_filename = "./gps_utc_model.xml";
|
||||
const std::string iono_default_xml_filename = "./gps_iono.xml";
|
||||
const std::string ref_time_default_xml_filename = "./gps_ref_time.xml";
|
||||
const std::string ref_location_default_xml_filename = "./gps_ref_location.xml";
|
||||
eph_xml_filename_ = configuration->property("GNSS-SDR.SUPL_gps_ephemeris_xml", eph_default_xml_filename);
|
||||
//std::string utc_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_utc_model.xml", utc_default_xml_filename);
|
||||
//std::string iono_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_iono_xml", iono_default_xml_filename);
|
||||
//std::string ref_time_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_ref_time_xml", ref_time_default_xml_filename);
|
||||
//std::string ref_location_xml_filename = configuration_->property("GNSS-SDR.SUPL_gps_ref_location_xml", ref_location_default_xml_filename);
|
||||
|
||||
// Infer the type of receiver
|
||||
/*
|
||||
@ -170,6 +167,15 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
|
||||
* 26 | GPS L1 C/A + GLONASS L1 C/A
|
||||
* 27 | Galileo E1B + GLONASS L1 C/A
|
||||
* 28 | GPS L2C + GLONASS L1 C/A
|
||||
*
|
||||
*
|
||||
* Skipped previous values to avoid overlapping
|
||||
* 50 | Beidou B1I
|
||||
* 51 | Beidou B1I + GPS L1 C/A
|
||||
* 52 | Beidou B1I + Galileo E1B
|
||||
* 53 | Beidou B1I + GLONASS L1 C/A
|
||||
* 54 | Beidou B1I + GPS L1 C/A + Galileo E1B
|
||||
* 55 | Beidou B1I + GPS L1 C/A + GLONASS L1 C/A + Galileo E1B
|
||||
*/
|
||||
int gps_1C_count = configuration->property("Channels_1C.count", 0);
|
||||
int gps_2S_count = configuration->property("Channels_2S.count", 0);
|
||||
@ -179,53 +185,176 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
|
||||
int gal_E5b_count = configuration->property("Channels_7X.count", 0);
|
||||
int glo_1G_count = configuration->property("Channels_1G.count", 0);
|
||||
int glo_2G_count = configuration->property("Channels_2G.count", 0);
|
||||
int bds_B1_count = configuration->property("Channels_B1.count", 0);
|
||||
|
||||
unsigned int type_of_receiver = 0;
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 1; // L1
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 2;
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 3; // L5
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 4; // E1
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 5; // E5a
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 6;
|
||||
}
|
||||
if ((gps_1C_count != 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 7;
|
||||
}
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 8; // L1+L5
|
||||
}
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 9; // L1+E1
|
||||
}
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 10;
|
||||
}
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 11;
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 12;
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count != 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 13; // L5+E5a
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 14;
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 15;
|
||||
}
|
||||
//if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) pvt_output_parameters.type_of_receiver = 16;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 17;
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 18;
|
||||
}
|
||||
//if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) pvt_output_parameters.type_of_receiver = 19;
|
||||
//if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) pvt_output_parameters.type_of_receiver = 20;
|
||||
if ((gps_1C_count != 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 21;
|
||||
}
|
||||
//if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count = 0)) pvt_output_parameters.type_of_receiver = 22;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count != 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 23;
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count != 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 24;
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count != 0) && (glo_2G_count != 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 25;
|
||||
}
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 26;
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 27;
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 28;
|
||||
}
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count != 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 29;
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count != 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 30;
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count != 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 31;
|
||||
}
|
||||
|
||||
// *******************WARNING!!!!!!!***********
|
||||
// GPS L5 only configurable for single frequency, single system at the moment!!!!!!
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 1;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 2;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 3;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 4;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 5;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 6;
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count != 0) && (gal_1B_count != 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 32; // L1+E1+L5+E5a
|
||||
}
|
||||
// BeiDou B1I Receiver
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count != 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 50;
|
||||
}
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count != 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 51;
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count != 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 52;
|
||||
}
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0) && (bds_B1_count != 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 53;
|
||||
}
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count != 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 54;
|
||||
}
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0) && (bds_B1_count != 0))
|
||||
{
|
||||
pvt_output_parameters.type_of_receiver = 55;
|
||||
}
|
||||
|
||||
if ((gps_1C_count != 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 7;
|
||||
//if( (gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 8;
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 9;
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 10;
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 11;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 12;
|
||||
//if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 13;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 14;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 15;
|
||||
//if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 16;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 17;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 18;
|
||||
//if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 19;
|
||||
//if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0)) type_of_receiver = 20;
|
||||
if ((gps_1C_count != 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0)) type_of_receiver = 21;
|
||||
//if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count = 0)) type_of_receiver = 22;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count != 0)) type_of_receiver = 23;
|
||||
if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count != 0)) type_of_receiver = 24;
|
||||
if( (gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count != 0) && (glo_2G_count != 0)) type_of_receiver = 25;
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0)) type_of_receiver = 26;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0)) type_of_receiver = 27;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0)) type_of_receiver = 28;
|
||||
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count != 0)) type_of_receiver = 29;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count != 0)) type_of_receiver = 30;
|
||||
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (glo_1G_count == 0) && (glo_2G_count != 0)) type_of_receiver = 31;
|
||||
//RTKLIB PVT solver options
|
||||
// RTKLIB PVT solver options
|
||||
// Settings 1
|
||||
int positioning_mode = -1;
|
||||
std::string default_pos_mode("Single");
|
||||
std::string positioning_mode_str = configuration->property(role + ".positioning_mode", default_pos_mode); /* (PMODE_XXX) see src/algorithms/libs/rtklib/rtklib.h */
|
||||
if (positioning_mode_str.compare("Single") == 0) positioning_mode = PMODE_SINGLE;
|
||||
if (positioning_mode_str.compare("Static") == 0) positioning_mode = PMODE_STATIC;
|
||||
if (positioning_mode_str.compare("Kinematic") == 0) positioning_mode = PMODE_KINEMA;
|
||||
if (positioning_mode_str.compare("PPP_Static") == 0) positioning_mode = PMODE_PPP_STATIC;
|
||||
if (positioning_mode_str.compare("PPP_Kinematic") == 0) positioning_mode = PMODE_PPP_KINEMA;
|
||||
std::string positioning_mode_str = configuration->property(role + ".positioning_mode", default_pos_mode); // (PMODE_XXX) see src/algorithms/libs/rtklib/rtklib.h
|
||||
if (positioning_mode_str == "Single")
|
||||
{
|
||||
positioning_mode = PMODE_SINGLE;
|
||||
}
|
||||
if (positioning_mode_str == "Static")
|
||||
{
|
||||
positioning_mode = PMODE_STATIC;
|
||||
}
|
||||
if (positioning_mode_str == "Kinematic")
|
||||
{
|
||||
positioning_mode = PMODE_KINEMA;
|
||||
}
|
||||
if (positioning_mode_str == "PPP_Static")
|
||||
{
|
||||
positioning_mode = PMODE_PPP_STATIC;
|
||||
}
|
||||
if (positioning_mode_str == "PPP_Kinematic")
|
||||
{
|
||||
positioning_mode = PMODE_PPP_KINEMA;
|
||||
}
|
||||
|
||||
if (positioning_mode == -1)
|
||||
{
|
||||
@ -239,10 +368,22 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
|
||||
|
||||
int num_bands = 0;
|
||||
|
||||
if ((gps_1C_count > 0) || (gal_1B_count > 0) || (glo_1G_count > 0)) num_bands = 1;
|
||||
if (((gps_1C_count > 0) || (gal_1B_count > 0) || (glo_1G_count > 0)) && ((gps_2S_count > 0) || (glo_2G_count > 0))) num_bands = 2;
|
||||
if (((gps_1C_count > 0) || (gal_1B_count > 0) || (glo_1G_count > 0)) && ((gal_E5a_count > 0) || (gal_E5b_count > 0) || (gps_L5_count > 0))) num_bands = 2;
|
||||
if (((gps_1C_count > 0) || (gal_1B_count > 0) || (glo_1G_count > 0)) && ((gps_2S_count > 0) || (glo_2G_count > 0)) && ((gal_E5a_count > 0) || (gal_E5b_count > 0) || (gps_L5_count > 0))) num_bands = 3;
|
||||
if ((gps_1C_count > 0) || (gal_1B_count > 0) || (glo_1G_count > 0) || (bds_B1_count > 0))
|
||||
{
|
||||
num_bands = 1;
|
||||
}
|
||||
if (((gps_1C_count > 0) || (gal_1B_count > 0) || (glo_1G_count > 0)) && ((gps_2S_count > 0) || (glo_2G_count > 0)))
|
||||
{
|
||||
num_bands = 2;
|
||||
}
|
||||
if (((gps_1C_count > 0) || (gal_1B_count > 0) || (glo_1G_count > 0)) && ((gal_E5a_count > 0) || (gal_E5b_count > 0) || (gps_L5_count > 0)))
|
||||
{
|
||||
num_bands = 2;
|
||||
}
|
||||
if (((gps_1C_count > 0) || (gal_1B_count > 0) || (glo_1G_count > 0)) && ((gps_2S_count > 0) || (glo_2G_count > 0)) && ((gal_E5a_count > 0) || (gal_E5b_count > 0) || (gps_L5_count > 0)))
|
||||
{
|
||||
num_bands = 3;
|
||||
}
|
||||
|
||||
int number_of_frequencies = configuration->property(role + ".num_bands", num_bands); /* (1:L1, 2:L1+L2, 3:L1+L2+L5) */
|
||||
if ((number_of_frequencies < 1) || (number_of_frequencies > 3))
|
||||
@ -270,12 +411,30 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
|
||||
std::string default_iono_model("OFF");
|
||||
std::string iono_model_str = configuration->property(role + ".iono_model", default_iono_model); /* (IONOOPT_XXX) see src/algorithms/libs/rtklib/rtklib.h */
|
||||
int iono_model = -1;
|
||||
if (iono_model_str.compare("OFF") == 0) iono_model = IONOOPT_OFF;
|
||||
if (iono_model_str.compare("Broadcast") == 0) iono_model = IONOOPT_BRDC;
|
||||
if (iono_model_str.compare("SBAS") == 0) iono_model = IONOOPT_SBAS;
|
||||
if (iono_model_str.compare("Iono-Free-LC") == 0) iono_model = IONOOPT_IFLC;
|
||||
if (iono_model_str.compare("Estimate_STEC") == 0) iono_model = IONOOPT_EST;
|
||||
if (iono_model_str.compare("IONEX") == 0) iono_model = IONOOPT_TEC;
|
||||
if (iono_model_str == "OFF")
|
||||
{
|
||||
iono_model = IONOOPT_OFF;
|
||||
}
|
||||
if (iono_model_str == "Broadcast")
|
||||
{
|
||||
iono_model = IONOOPT_BRDC;
|
||||
}
|
||||
if (iono_model_str == "SBAS")
|
||||
{
|
||||
iono_model = IONOOPT_SBAS;
|
||||
}
|
||||
if (iono_model_str == "Iono-Free-LC")
|
||||
{
|
||||
iono_model = IONOOPT_IFLC;
|
||||
}
|
||||
if (iono_model_str == "Estimate_STEC")
|
||||
{
|
||||
iono_model = IONOOPT_EST;
|
||||
}
|
||||
if (iono_model_str == "IONEX")
|
||||
{
|
||||
iono_model = IONOOPT_TEC;
|
||||
}
|
||||
if (iono_model == -1)
|
||||
{
|
||||
//warn user and set the default
|
||||
@ -289,11 +448,26 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
|
||||
std::string default_trop_model("OFF");
|
||||
int trop_model = -1;
|
||||
std::string trop_model_str = configuration->property(role + ".trop_model", default_trop_model); /* (TROPOPT_XXX) see src/algorithms/libs/rtklib/rtklib.h */
|
||||
if (trop_model_str.compare("OFF") == 0) trop_model = TROPOPT_OFF;
|
||||
if (trop_model_str.compare("Saastamoinen") == 0) trop_model = TROPOPT_SAAS;
|
||||
if (trop_model_str.compare("SBAS") == 0) trop_model = TROPOPT_SBAS;
|
||||
if (trop_model_str.compare("Estimate_ZTD") == 0) trop_model = TROPOPT_EST;
|
||||
if (trop_model_str.compare("Estimate_ZTD_Grad") == 0) trop_model = TROPOPT_ESTG;
|
||||
if (trop_model_str == "OFF")
|
||||
{
|
||||
trop_model = TROPOPT_OFF;
|
||||
}
|
||||
if (trop_model_str == "Saastamoinen")
|
||||
{
|
||||
trop_model = TROPOPT_SAAS;
|
||||
}
|
||||
if (trop_model_str == "SBAS")
|
||||
{
|
||||
trop_model = TROPOPT_SBAS;
|
||||
}
|
||||
if (trop_model_str == "Estimate_ZTD")
|
||||
{
|
||||
trop_model = TROPOPT_EST;
|
||||
}
|
||||
if (trop_model_str == "Estimate_ZTD_Grad")
|
||||
{
|
||||
trop_model = TROPOPT_ESTG;
|
||||
}
|
||||
if (trop_model == -1)
|
||||
{
|
||||
//warn user and set the default
|
||||
@ -323,9 +497,23 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
|
||||
int earth_tide = configuration->property(role + ".earth_tide", 0);
|
||||
|
||||
int nsys = 0;
|
||||
if ((gps_1C_count > 0) || (gps_2S_count > 0) || (gps_L5_count > 0)) nsys += SYS_GPS;
|
||||
if ((gal_1B_count > 0) || (gal_E5a_count > 0) || (gal_E5b_count > 0)) nsys += SYS_GAL;
|
||||
if ((glo_1G_count > 0) || (glo_2G_count > 0)) nsys += SYS_GLO;
|
||||
if ((gps_1C_count > 0) || (gps_2S_count > 0) || (gps_L5_count > 0))
|
||||
{
|
||||
nsys += SYS_GPS;
|
||||
}
|
||||
if ((gal_1B_count > 0) || (gal_E5a_count > 0) || (gal_E5b_count > 0))
|
||||
{
|
||||
nsys += SYS_GAL;
|
||||
}
|
||||
if ((glo_1G_count > 0) || (glo_2G_count > 0))
|
||||
{
|
||||
nsys += SYS_GLO;
|
||||
}
|
||||
if ((bds_B1_count > 0))
|
||||
{
|
||||
nsys += SYS_BDS;
|
||||
}
|
||||
|
||||
int navigation_system = configuration->property(role + ".navigation_system", nsys); /* (SYS_XXX) see src/algorithms/libs/rtklib/rtklib.h */
|
||||
if ((navigation_system < 1) || (navigation_system > 255)) /* GPS: 1 SBAS: 2 GPS+SBAS: 3 Galileo: 8 Galileo+GPS: 9 GPS+SBAS+Galileo: 11 All: 255 */
|
||||
{
|
||||
@ -338,11 +526,26 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
|
||||
std::string default_gps_ar("Continuous");
|
||||
std::string integer_ambiguity_resolution_gps_str = configuration->property(role + ".AR_GPS", default_gps_ar); /* Integer Ambiguity Resolution mode for GPS (0:off,1:continuous,2:instantaneous,3:fix and hold,4:ppp-ar) */
|
||||
int integer_ambiguity_resolution_gps = -1;
|
||||
if (integer_ambiguity_resolution_gps_str.compare("OFF") == 0) integer_ambiguity_resolution_gps = ARMODE_OFF;
|
||||
if (integer_ambiguity_resolution_gps_str.compare("Continuous") == 0) integer_ambiguity_resolution_gps = ARMODE_CONT;
|
||||
if (integer_ambiguity_resolution_gps_str.compare("Instantaneous") == 0) integer_ambiguity_resolution_gps = ARMODE_INST;
|
||||
if (integer_ambiguity_resolution_gps_str.compare("Fix-and-Hold") == 0) integer_ambiguity_resolution_gps = ARMODE_FIXHOLD;
|
||||
if (integer_ambiguity_resolution_gps_str.compare("PPP-AR") == 0) integer_ambiguity_resolution_gps = ARMODE_PPPAR;
|
||||
if (integer_ambiguity_resolution_gps_str == "OFF")
|
||||
{
|
||||
integer_ambiguity_resolution_gps = ARMODE_OFF;
|
||||
}
|
||||
if (integer_ambiguity_resolution_gps_str == "Continuous")
|
||||
{
|
||||
integer_ambiguity_resolution_gps = ARMODE_CONT;
|
||||
}
|
||||
if (integer_ambiguity_resolution_gps_str == "Instantaneous")
|
||||
{
|
||||
integer_ambiguity_resolution_gps = ARMODE_INST;
|
||||
}
|
||||
if (integer_ambiguity_resolution_gps_str == "Fix-and-Hold")
|
||||
{
|
||||
integer_ambiguity_resolution_gps = ARMODE_FIXHOLD;
|
||||
}
|
||||
if (integer_ambiguity_resolution_gps_str == "PPP-AR")
|
||||
{
|
||||
integer_ambiguity_resolution_gps = ARMODE_PPPAR;
|
||||
}
|
||||
if (integer_ambiguity_resolution_gps == -1)
|
||||
{
|
||||
//warn user and set the default
|
||||
@ -372,7 +575,7 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
|
||||
double min_ratio_to_fix_ambiguity = configuration->property(role + ".min_ratio_to_fix_ambiguity", 3.0); /* Set the integer ambiguity validation threshold for ratio‐test,
|
||||
which uses the ratio of squared residuals of the best integer vector to the second‐best vector. */
|
||||
|
||||
int min_lock_to_fix_ambiguity = configuration->property(role + ".min_lock_to_fix_ambiguity", 0); /* Set the minimum lock count to fix integer ambiguity.
|
||||
int min_lock_to_fix_ambiguity = configuration->property(role + ".min_lock_to_fix_ambiguity", 0); /* Set the minimum lock count to fix integer ambiguity.FLAGS_RINEX_version.
|
||||
If the lock count is less than the value, the ambiguity is excluded from the fixed integer vector. */
|
||||
|
||||
double min_elevation_to_fix_ambiguity = configuration->property(role + ".min_elevation_to_fix_ambiguity", 0.0); /* Set the minimum elevation (deg) to fix integer ambiguity.
|
||||
@ -471,60 +674,105 @@ RtklibPvt::RtklibPvt(ConfigurationInterface* configuration,
|
||||
0, /* initialize by restart */
|
||||
1, /* output single by dgps/float/fix/ppp outage */
|
||||
{"", ""}, /* char rnxopt[2][256] rinex options {rover,base} */
|
||||
{sat_PCV, rec_PCV, phwindup, reject_GPS_IIA, raim_fde}, /* posopt[6] positioning options [0]: satellite and receiver antenna PCV model; [1]: interpolate antenna parameters; [2]: apply phase wind-up correction for PPP modes; [3]: exclude measurements of GPS Block IIA satellites satellite [4]: RAIM FDE (fault detection and exclusion) [5]: handle day-boundary clock jump */
|
||||
{sat_PCV, rec_PCV, phwindup, reject_GPS_IIA, raim_fde}, /* posopt[6] positioning options [0]: satellite and receiver antenna PCV model; [1]: interpolate antenna parameters; [2]: apply phase wind-up correction for PPP modes; [3]: exclude measurements of GPS Block IIA satellites satellite [4]: RAIM FDE (fault detection and exclusion) [5]: handle day-boundary clock jump */
|
||||
0, /* solution sync mode (0:off,1:on) */
|
||||
{{}, {}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
|
||||
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
|
||||
{{}, {}}, /* odisp[2][6*11] ocean tide loading parameters {rov,base} */
|
||||
{{}, {{}, {}}, {{}, {}}, {}, {}}, /* exterr_t exterr extended receiver error model */
|
||||
0, /* disable L2-AR */
|
||||
{} /* char pppopt[256] ppp option "-GAP_RESION=" default gap to reset iono parameters (ep) */
|
||||
};
|
||||
|
||||
rtkinit(&rtk, &rtklib_configuration_options);
|
||||
|
||||
// Outputs
|
||||
bool default_output_enabled = configuration->property(role + ".output_enabled", true);
|
||||
pvt_output_parameters.output_enabled = default_output_enabled;
|
||||
pvt_output_parameters.rinex_output_enabled = configuration->property(role + ".rinex_output_enabled", default_output_enabled);
|
||||
pvt_output_parameters.gpx_output_enabled = configuration->property(role + ".gpx_output_enabled", default_output_enabled);
|
||||
pvt_output_parameters.geojson_output_enabled = configuration->property(role + ".geojson_output_enabled", default_output_enabled);
|
||||
pvt_output_parameters.kml_output_enabled = configuration->property(role + ".kml_output_enabled", default_output_enabled);
|
||||
pvt_output_parameters.xml_output_enabled = configuration->property(role + ".xml_output_enabled", default_output_enabled);
|
||||
pvt_output_parameters.nmea_output_file_enabled = configuration->property(role + ".nmea_output_file_enabled", default_output_enabled);
|
||||
pvt_output_parameters.rtcm_output_file_enabled = configuration->property(role + ".rtcm_output_file_enabled", default_output_enabled);
|
||||
|
||||
std::string default_output_path = configuration->property(role + ".output_path", std::string("."));
|
||||
pvt_output_parameters.output_path = default_output_path;
|
||||
pvt_output_parameters.rinex_output_path = configuration->property(role + ".rinex_output_path", default_output_path);
|
||||
pvt_output_parameters.gpx_output_path = configuration->property(role + ".gpx_output_path", default_output_path);
|
||||
pvt_output_parameters.geojson_output_path = configuration->property(role + ".geojson_output_path", default_output_path);
|
||||
pvt_output_parameters.kml_output_path = configuration->property(role + ".kml_output_path", default_output_path);
|
||||
pvt_output_parameters.xml_output_path = configuration->property(role + ".xml_output_path", default_output_path);
|
||||
pvt_output_parameters.nmea_output_file_path = configuration->property(role + ".nmea_output_file_path", default_output_path);
|
||||
pvt_output_parameters.rtcm_output_file_path = configuration->property(role + ".rtcm_output_file_path", default_output_path);
|
||||
|
||||
// Read PVT MONITOR Configuration
|
||||
pvt_output_parameters.monitor_enabled = configuration->property(role + ".enable_monitor", false);
|
||||
pvt_output_parameters.udp_addresses = configuration->property(role + ".monitor_client_addresses", std::string("127.0.0.1"));
|
||||
pvt_output_parameters.udp_port = configuration->property(role + ".monitor_udp_port", 1234);
|
||||
|
||||
// make PVT object
|
||||
pvt_ = rtklib_make_pvt_cc(in_streams_, dump_, dump_filename_, output_rate_ms, display_rate_ms, flag_nmea_tty_port, nmea_dump_filename, nmea_dump_devname, rinex_version, flag_rtcm_server, flag_rtcm_tty_port, rtcm_tcp_port, rtcm_station_id, rtcm_msg_rate_ms, rtcm_dump_devname, type_of_receiver, rtk);
|
||||
pvt_ = rtklib_make_pvt_cc(in_streams_, pvt_output_parameters, rtk);
|
||||
DLOG(INFO) << "pvt(" << pvt_->unique_id() << ")";
|
||||
}
|
||||
|
||||
|
||||
bool RtklibPvt::save_assistance_to_XML()
|
||||
{
|
||||
LOG(INFO) << "SUPL: Try to save GPS ephemeris to XML file " << eph_xml_filename_;
|
||||
std::map<int, Gps_Ephemeris> eph_map = pvt_->get_GPS_L1_ephemeris_map();
|
||||
|
||||
if (eph_map.size() > 0)
|
||||
if (out_streams_ > 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
std::ofstream ofs(eph_xml_filename_.c_str(), std::ofstream::trunc | std::ofstream::out);
|
||||
boost::archive::xml_oarchive xml(ofs);
|
||||
xml << boost::serialization::make_nvp("GNSS-SDR_ephemeris_map", eph_map);
|
||||
ofs.close();
|
||||
LOG(INFO) << "Saved GPS L1 Ephemeris map data";
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
LOG(WARNING) << e.what();
|
||||
return false;
|
||||
}
|
||||
return true; // return variable (true == succeeded)
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG(WARNING) << "Failed to save Ephemeris, map is empty";
|
||||
return false;
|
||||
LOG(ERROR) << "The PVT block does not have an output stream";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
RtklibPvt::~RtklibPvt()
|
||||
Rtklib_Pvt::~Rtklib_Pvt()
|
||||
{
|
||||
rtkfree(&rtk);
|
||||
save_assistance_to_XML();
|
||||
}
|
||||
|
||||
|
||||
void RtklibPvt::connect(gr::top_block_sptr top_block)
|
||||
bool Rtklib_Pvt::get_latest_PVT(double* longitude_deg,
|
||||
double* latitude_deg,
|
||||
double* height_m,
|
||||
double* ground_speed_kmh,
|
||||
double* course_over_ground_deg,
|
||||
time_t* UTC_time)
|
||||
{
|
||||
return pvt_->get_latest_PVT(longitude_deg,
|
||||
latitude_deg,
|
||||
height_m,
|
||||
ground_speed_kmh,
|
||||
course_over_ground_deg,
|
||||
UTC_time);
|
||||
}
|
||||
|
||||
|
||||
void Rtklib_Pvt::clear_ephemeris()
|
||||
{
|
||||
pvt_->clear_ephemeris();
|
||||
}
|
||||
|
||||
|
||||
std::map<int, Gps_Ephemeris> Rtklib_Pvt::get_gps_ephemeris() const
|
||||
{
|
||||
return pvt_->get_gps_ephemeris_map();
|
||||
}
|
||||
|
||||
|
||||
std::map<int, Galileo_Ephemeris> Rtklib_Pvt::get_galileo_ephemeris() const
|
||||
{
|
||||
return pvt_->get_galileo_ephemeris_map();
|
||||
}
|
||||
|
||||
|
||||
std::map<int, Gps_Almanac> Rtklib_Pvt::get_gps_almanac() const
|
||||
{
|
||||
return pvt_->get_gps_almanac_map();
|
||||
}
|
||||
|
||||
|
||||
std::map<int, Galileo_Almanac> Rtklib_Pvt::get_galileo_almanac() const
|
||||
{
|
||||
return pvt_->get_galileo_almanac_map();
|
||||
}
|
||||
|
||||
|
||||
void Rtklib_Pvt::connect(gr::top_block_sptr top_block)
|
||||
{
|
||||
if (top_block)
|
||||
{ /* top_block is not null */
|
||||
@ -534,7 +782,7 @@ void RtklibPvt::connect(gr::top_block_sptr top_block)
|
||||
}
|
||||
|
||||
|
||||
void RtklibPvt::disconnect(gr::top_block_sptr top_block)
|
||||
void Rtklib_Pvt::disconnect(gr::top_block_sptr top_block)
|
||||
{
|
||||
if (top_block)
|
||||
{ /* top_block is not null */
|
||||
@ -543,13 +791,13 @@ void RtklibPvt::disconnect(gr::top_block_sptr top_block)
|
||||
}
|
||||
|
||||
|
||||
gr::basic_block_sptr RtklibPvt::get_left_block()
|
||||
gr::basic_block_sptr Rtklib_Pvt::get_left_block()
|
||||
{
|
||||
return pvt_;
|
||||
}
|
||||
|
||||
|
||||
gr::basic_block_sptr RtklibPvt::get_right_block()
|
||||
gr::basic_block_sptr Rtklib_Pvt::get_right_block()
|
||||
{
|
||||
return pvt_; // this is a sink, nothing downstream
|
||||
return nullptr; // this is a sink, nothing downstream
|
||||
}
|
||||
|
@ -32,37 +32,49 @@
|
||||
#ifndef GNSS_SDR_RTKLIB_PVT_H_
|
||||
#define GNSS_SDR_RTKLIB_PVT_H_
|
||||
|
||||
#include "galileo_almanac.h"
|
||||
#include "galileo_ephemeris.h"
|
||||
#include "gps_almanac.h"
|
||||
#include "gps_ephemeris.h"
|
||||
#include "pvt_interface.h"
|
||||
#include "rtklib.h"
|
||||
#include "rtklib_pvt_cc.h"
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
* \brief This class implements a PvtInterface for Galileo E1
|
||||
* \brief This class implements a PvtInterface for the RTKLIB PVT block
|
||||
*/
|
||||
class RtklibPvt : public PvtInterface
|
||||
class Rtklib_Pvt : public PvtInterface
|
||||
{
|
||||
public:
|
||||
RtklibPvt(ConfigurationInterface* configuration,
|
||||
std::string role,
|
||||
Rtklib_Pvt(ConfigurationInterface* configuration,
|
||||
const std::string& role,
|
||||
unsigned int in_streams,
|
||||
unsigned int out_streams);
|
||||
|
||||
virtual ~RtklibPvt();
|
||||
virtual ~Rtklib_Pvt();
|
||||
|
||||
inline std::string role() override
|
||||
{
|
||||
return role_;
|
||||
}
|
||||
|
||||
//! Returns "RTKLIB_Pvt"
|
||||
//! Returns "RTKLIB_PVT"
|
||||
inline std::string implementation() override
|
||||
{
|
||||
return "RTKLIB_PVT";
|
||||
}
|
||||
|
||||
void clear_ephemeris() override;
|
||||
std::map<int, Gps_Ephemeris> get_gps_ephemeris() const override;
|
||||
std::map<int, Galileo_Ephemeris> get_galileo_ephemeris() const override;
|
||||
std::map<int, Gps_Almanac> get_gps_almanac() const override;
|
||||
std::map<int, Galileo_Almanac> get_galileo_almanac() const override;
|
||||
|
||||
void connect(gr::top_block_sptr top_block) override;
|
||||
void disconnect(gr::top_block_sptr top_block) override;
|
||||
gr::basic_block_sptr get_left_block() override;
|
||||
@ -79,16 +91,19 @@ public:
|
||||
return sizeof(gr_complex);
|
||||
}
|
||||
|
||||
bool get_latest_PVT(double* longitude_deg,
|
||||
double* latitude_deg,
|
||||
double* height_m,
|
||||
double* ground_speed_kmh,
|
||||
double* course_over_ground_deg,
|
||||
time_t* UTC_time) override;
|
||||
|
||||
private:
|
||||
rtklib_pvt_cc_sptr pvt_;
|
||||
rtk_t rtk;
|
||||
bool dump_;
|
||||
std::string dump_filename_;
|
||||
rtk_t rtk{};
|
||||
std::string role_;
|
||||
unsigned int in_streams_;
|
||||
unsigned int out_streams_;
|
||||
std::string eph_xml_filename_;
|
||||
bool save_assistance_to_XML();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2012-2018 (see AUTHORS file for a list of contributors)
|
||||
# Copyright (C) 2012-2019 (see AUTHORS file for a list of contributors)
|
||||
#
|
||||
# This file is part of GNSS-SDR.
|
||||
#
|
||||
@ -17,25 +17,47 @@
|
||||
#
|
||||
|
||||
set(PVT_GR_BLOCKS_SOURCES
|
||||
rtklib_pvt_cc.cc
|
||||
rtklib_pvt_cc.cc
|
||||
)
|
||||
|
||||
include_directories(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_SOURCE_DIR}/src/core/system_parameters
|
||||
${CMAKE_SOURCE_DIR}/src/core/interfaces
|
||||
${CMAKE_SOURCE_DIR}/src/core/receiver
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/PVT/libs
|
||||
${CMAKE_SOURCE_DIR}/src/algorithms/libs/rtklib
|
||||
${ARMADILLO_INCLUDE_DIRS}
|
||||
${Boost_INCLUDE_DIRS}
|
||||
${GLOG_INCLUDE_DIRS}
|
||||
${GFlags_INCLUDE_DIRS}
|
||||
${GNURADIO_RUNTIME_INCLUDE_DIRS}
|
||||
set(PVT_GR_BLOCKS_HEADERS
|
||||
rtklib_pvt_cc.h
|
||||
)
|
||||
|
||||
file(GLOB PVT_GR_BLOCKS_HEADERS "*.h")
|
||||
list(SORT PVT_GR_BLOCKS_HEADERS)
|
||||
add_library(pvt_gr_blocks ${PVT_GR_BLOCKS_SOURCES} ${PVT_GR_BLOCKS_HEADERS})
|
||||
source_group(Headers FILES ${PVT_GR_BLOCKS_HEADERS})
|
||||
target_link_libraries(pvt_gr_blocks pvt_lib ${ARMADILLO_LIBRARIES})
|
||||
|
||||
add_library(pvt_gr_blocks ${PVT_GR_BLOCKS_SOURCES} ${PVT_GR_BLOCKS_HEADERS})
|
||||
|
||||
target_link_libraries(pvt_gr_blocks
|
||||
PUBLIC
|
||||
pvt_libs
|
||||
core_system_parameters
|
||||
Boost::date_time
|
||||
Gnuradio::pmt
|
||||
Gnuradio::runtime
|
||||
PRIVATE
|
||||
algorithms_libs
|
||||
Gflags::gflags
|
||||
Glog::glog
|
||||
Boost::filesystem
|
||||
Boost::system
|
||||
Boost::serialization
|
||||
)
|
||||
|
||||
if(ENABLE_CLANG_TIDY)
|
||||
if(CLANG_TIDY_EXE)
|
||||
set_target_properties(pvt_gr_blocks
|
||||
PROPERTIES
|
||||
CXX_CLANG_TIDY "${DO_CLANG_TIDY}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(Boost_VERSION LESS 105800)
|
||||
target_compile_definitions(pvt_gr_blocks PRIVATE -DOLD_BOOST=1)
|
||||
endif()
|
||||
|
||||
set_property(TARGET pvt_gr_blocks
|
||||
APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -31,93 +31,84 @@
|
||||
#ifndef GNSS_SDR_RTKLIB_PVT_CC_H
|
||||
#define GNSS_SDR_RTKLIB_PVT_CC_H
|
||||
|
||||
|
||||
#include "nmea_printer.h"
|
||||
#include "kml_printer.h"
|
||||
#include "gpx_printer.h"
|
||||
#include "beidou_dnav_almanac.h"
|
||||
#include "beidou_dnav_ephemeris.h"
|
||||
#include "galileo_almanac.h"
|
||||
#include "galileo_ephemeris.h"
|
||||
#include "geojson_printer.h"
|
||||
#include "gnss_synchro.h"
|
||||
#include "gps_almanac.h"
|
||||
#include "gps_ephemeris.h"
|
||||
#include "gpx_printer.h"
|
||||
#include "kml_printer.h"
|
||||
#include "monitor_pvt_udp_sink.h"
|
||||
#include "nmea_printer.h"
|
||||
#include "pvt_conf.h"
|
||||
#include "rinex_printer.h"
|
||||
#include "rtcm_printer.h"
|
||||
#include "rtklib_solver.h"
|
||||
#include <boost/date_time/gregorian/gregorian.hpp>
|
||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||
#include <gnuradio/sync_block.h>
|
||||
#include <sys/types.h>
|
||||
#include <pmt/pmt.h>
|
||||
#include <chrono>
|
||||
#include <cstdint>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/msg.h>
|
||||
#include <chrono>
|
||||
#include <fstream>
|
||||
#include <sys/types.h>
|
||||
#include <utility>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
|
||||
class rtklib_pvt_cc;
|
||||
|
||||
typedef boost::shared_ptr<rtklib_pvt_cc> rtklib_pvt_cc_sptr;
|
||||
using rtklib_pvt_cc_sptr = boost::shared_ptr<rtklib_pvt_cc>;
|
||||
|
||||
rtklib_pvt_cc_sptr rtklib_make_pvt_cc(unsigned int n_channels,
|
||||
bool dump,
|
||||
std::string dump_filename,
|
||||
int output_rate_ms,
|
||||
int display_rate_ms,
|
||||
bool flag_nmea_tty_port,
|
||||
std::string nmea_dump_filename,
|
||||
std::string nmea_dump_devname,
|
||||
int rinex_version,
|
||||
bool flag_rtcm_server,
|
||||
bool flag_rtcm_tty_port,
|
||||
unsigned short rtcm_tcp_port,
|
||||
unsigned short rtcm_station_id,
|
||||
std::map<int, int> rtcm_msg_rate_ms,
|
||||
std::string rtcm_dump_devname,
|
||||
const unsigned int type_of_receiver,
|
||||
rtk_t& rtk);
|
||||
rtklib_pvt_cc_sptr rtklib_make_pvt_cc(uint32_t nchannels,
|
||||
const Pvt_Conf& conf_,
|
||||
const rtk_t& rtk);
|
||||
|
||||
/*!
|
||||
* \brief This class implements a block that computes the PVT solution with Galileo E1 signals
|
||||
* \brief This class implements a block that computes the PVT solution using the RTKLIB integrated library
|
||||
*/
|
||||
class rtklib_pvt_cc : public gr::sync_block
|
||||
{
|
||||
private:
|
||||
friend rtklib_pvt_cc_sptr rtklib_make_pvt_cc(unsigned int nchannels,
|
||||
bool dump,
|
||||
std::string dump_filename,
|
||||
int output_rate_ms,
|
||||
int display_rate_ms,
|
||||
bool flag_nmea_tty_port,
|
||||
std::string nmea_dump_filename,
|
||||
std::string nmea_dump_devname,
|
||||
int rinex_version,
|
||||
bool flag_rtcm_server,
|
||||
bool flag_rtcm_tty_port,
|
||||
unsigned short rtcm_tcp_port,
|
||||
unsigned short rtcm_station_id,
|
||||
std::map<int, int> rtcm_msg_rate_ms,
|
||||
std::string rtcm_dump_devname,
|
||||
const unsigned int type_of_receiver,
|
||||
rtk_t& rtk);
|
||||
friend rtklib_pvt_cc_sptr rtklib_make_pvt_cc(uint32_t nchannels,
|
||||
const Pvt_Conf& conf_,
|
||||
const rtk_t& rtk);
|
||||
|
||||
void msg_handler_telemetry(pmt::pmt_t msg);
|
||||
void msg_handler_telemetry(const pmt::pmt_t& msg);
|
||||
|
||||
bool d_dump;
|
||||
bool d_dump_mat;
|
||||
bool b_rinex_output_enabled;
|
||||
bool b_rinex_header_written;
|
||||
bool b_rinex_header_updated;
|
||||
double d_rinex_version;
|
||||
int32_t d_rinexobs_rate_ms;
|
||||
int32_t d_rinexnav_rate_ms;
|
||||
|
||||
bool b_rtcm_writing_started;
|
||||
int d_rtcm_MT1045_rate_ms; //!< Galileo Broadcast Ephemeris
|
||||
int d_rtcm_MT1019_rate_ms; //!< GPS Broadcast Ephemeris (orbits)
|
||||
int d_rtcm_MT1020_rate_ms; //!< GLONASS Broadcast Ephemeris (orbits)
|
||||
int d_rtcm_MT1077_rate_ms; //!< The type 7 Multiple Signal Message format for the USA’s GPS system, popular
|
||||
int d_rtcm_MT1087_rate_ms; //!< GLONASS MSM7. The type 7 Multiple Signal Message format for the Russian GLONASS system
|
||||
int d_rtcm_MT1097_rate_ms; //!< Galileo MSM7. The type 7 Multiple Signal Message format for Europe’s Galileo system
|
||||
int d_rtcm_MSM_rate_ms;
|
||||
bool b_rtcm_enabled;
|
||||
int32_t d_rtcm_MT1045_rate_ms; // Galileo Broadcast Ephemeris
|
||||
int32_t d_rtcm_MT1019_rate_ms; // GPS Broadcast Ephemeris (orbits)
|
||||
int32_t d_rtcm_MT1020_rate_ms; // GLONASS Broadcast Ephemeris (orbits)
|
||||
int32_t d_rtcm_MT1077_rate_ms; // The type 7 Multiple Signal Message format for the USA’s GPS system, popular
|
||||
int32_t d_rtcm_MT1087_rate_ms; // GLONASS MSM7. The type 7 Multiple Signal Message format for the Russian GLONASS system
|
||||
int32_t d_rtcm_MT1097_rate_ms; // Galileo MSM7. The type 7 Multiple Signal Message format for Europe’s Galileo system
|
||||
int32_t d_rtcm_MSM_rate_ms;
|
||||
|
||||
int d_last_status_print_seg; //for status printer
|
||||
int32_t d_last_status_print_seg; // for status printer
|
||||
|
||||
unsigned int d_nchannels;
|
||||
uint32_t d_nchannels;
|
||||
std::string d_dump_filename;
|
||||
std::ofstream d_dump_file;
|
||||
|
||||
int d_output_rate_ms;
|
||||
int d_display_rate_ms;
|
||||
int32_t d_output_rate_ms;
|
||||
int32_t d_display_rate_ms;
|
||||
|
||||
std::shared_ptr<Rinex_Printer> rp;
|
||||
std::shared_ptr<Kml_Printer> d_kml_dump;
|
||||
@ -126,22 +117,18 @@ private:
|
||||
std::shared_ptr<GeoJSON_Printer> d_geojson_printer;
|
||||
std::shared_ptr<Rtcm_Printer> d_rtcm_printer;
|
||||
double d_rx_time;
|
||||
double last_pvt_display_T_rx_s;
|
||||
double last_RTCM_1019_output_time;
|
||||
double last_RTCM_1020_output_time;
|
||||
double last_RTCM_1045_output_time;
|
||||
double last_RTCM_1077_output_time;
|
||||
double last_RTCM_1087_output_time;
|
||||
double last_RTCM_1097_output_time;
|
||||
double last_RTCM_MSM_output_time;
|
||||
double last_RINEX_obs_output_time;
|
||||
double last_RINEX_nav_output_time;
|
||||
std::shared_ptr<rtklib_solver> d_ls_pvt;
|
||||
|
||||
bool d_geojson_output_enabled;
|
||||
bool d_gpx_output_enabled;
|
||||
bool d_kml_output_enabled;
|
||||
bool d_nmea_output_file_enabled;
|
||||
|
||||
std::shared_ptr<Rtklib_Solver> d_pvt_solver;
|
||||
|
||||
std::map<int, Gnss_Synchro> gnss_observables_map;
|
||||
bool observables_pairCompare_min(const std::pair<int, Gnss_Synchro>& a, const std::pair<int, Gnss_Synchro>& b);
|
||||
|
||||
unsigned int type_of_rx;
|
||||
uint32_t type_of_rx;
|
||||
|
||||
bool first_fix;
|
||||
key_t sysv_msg_key;
|
||||
@ -154,33 +141,61 @@ private:
|
||||
bool send_sys_v_ttff_msg(ttff_msgbuf ttff);
|
||||
std::chrono::time_point<std::chrono::system_clock> start, end;
|
||||
|
||||
public:
|
||||
rtklib_pvt_cc(unsigned int nchannels,
|
||||
bool dump, std::string dump_filename,
|
||||
int output_rate_ms,
|
||||
int display_rate_ms,
|
||||
bool flag_nmea_tty_port,
|
||||
std::string nmea_dump_filename,
|
||||
std::string nmea_dump_devname,
|
||||
int rinex_version,
|
||||
bool flag_rtcm_server,
|
||||
bool flag_rtcm_tty_port,
|
||||
unsigned short rtcm_tcp_port,
|
||||
unsigned short rtcm_station_id,
|
||||
std::map<int, int> rtcm_msg_rate_ms,
|
||||
std::string rtcm_dump_devname,
|
||||
const unsigned int type_of_receiver,
|
||||
rtk_t& rtk);
|
||||
bool save_gnss_synchro_map_xml(const std::string& file_name); // debug helper function
|
||||
|
||||
/*!
|
||||
* \brief Get latest set of GPS L1 ephemeris from PVT block
|
||||
*
|
||||
* It is used to save the assistance data at the receiver shutdown
|
||||
*/
|
||||
std::map<int, Gps_Ephemeris> get_GPS_L1_ephemeris_map();
|
||||
bool load_gnss_synchro_map_xml(const std::string& file_name); // debug helper function
|
||||
|
||||
bool d_xml_storage;
|
||||
std::string xml_base_path;
|
||||
|
||||
inline std::time_t convert_to_time_t(const boost::posix_time::ptime pt) const
|
||||
{
|
||||
return (pt - boost::posix_time::ptime(boost::gregorian::date(1970, 1, 1))).total_seconds();
|
||||
}
|
||||
|
||||
bool flag_monitor_pvt_enabled;
|
||||
std::unique_ptr<Monitor_Pvt_Udp_Sink> udp_sink_ptr;
|
||||
std::vector<std::string> split_string(const std::string& s, char delim) const;
|
||||
|
||||
public:
|
||||
rtklib_pvt_cc(uint32_t nchannels,
|
||||
const Pvt_Conf& conf_,
|
||||
const rtk_t& rtk);
|
||||
|
||||
~rtklib_pvt_cc(); //!< Default destructor
|
||||
|
||||
/*!
|
||||
* \brief Get latest set of GPS ephemeris from PVT block
|
||||
*
|
||||
*/
|
||||
std::map<int, Gps_Ephemeris> get_gps_ephemeris_map() const;
|
||||
|
||||
std::map<int, Gps_Almanac> get_gps_almanac_map() const;
|
||||
|
||||
std::map<int, Galileo_Ephemeris> get_galileo_ephemeris_map() const;
|
||||
|
||||
std::map<int, Galileo_Almanac> get_galileo_almanac_map() const;
|
||||
|
||||
std::map<int, Beidou_Dnav_Ephemeris> get_beidou_dnav_ephemeris_map() const;
|
||||
|
||||
std::map<int, Beidou_Dnav_Almanac> get_beidou_dnav_almanac_map() const;
|
||||
|
||||
/*!
|
||||
* \brief Clear all ephemeris information and the almanacs for GPS and Galileo
|
||||
*
|
||||
*/
|
||||
void clear_ephemeris();
|
||||
|
||||
/*!
|
||||
* \brief Get the latest Position WGS84 [deg], Ground Velocity, Course over Ground, and UTC Time, if available
|
||||
*/
|
||||
bool get_latest_PVT(double* longitude_deg,
|
||||
double* latitude_deg,
|
||||
double* height_m,
|
||||
double* ground_speed_kmh,
|
||||
double* course_over_ground_deg,
|
||||
time_t* UTC_time) const;
|
||||
|
||||
int work(int noutput_items, gr_vector_const_void_star& input_items,
|
||||
gr_vector_void_star& output_items); //!< PVT Signal Processing
|
||||
};
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user