From 530a56b1594ec77331df026b22051555f4c952df Mon Sep 17 00:00:00 2001 From: joebre Date: Wed, 15 Jan 2025 10:29:48 +0100 Subject: [PATCH] reset unsigned commits Signed-off-by: joebre --- .clang-format | 289 + .clang-tidy | 441 + .github/DCO.txt | 41 + .github/PULL_REQUEST_TEMPLATE.md | 54 + .github/workflows/citation.yml | 31 + .github/workflows/gnss-sdr_archs.yml | 79 + .github/workflows/main.yml | 301 + .github/workflows/volk_gnsssdr_android.yml | 63 + .github/workflows/volk_gnsssdr_archs.yml | 79 + .gitignore | 37 +- AUTHORS | 132 +- CITATION.cff | 345 + CMakeLists.txt | 4464 ++++- CODE_OF_CONDUCT.md | 142 + CONTRIBUTING.md | 207 + COPYING | 8 +- LICENSES/Apache-2.0.txt | 208 + LICENSES/BSD-1-Clause.txt | 18 + LICENSES/BSD-2-Clause.txt | 22 + LICENSES/BSD-3-Clause.txt | 26 + LICENSES/CC-BY-4.0.txt | 324 + LICENSES/GPL-3.0-or-later.txt | 625 + LICENSES/LGPL-3.0-only.txt | 163 + LICENSES/LicenseRef-Apple-Permissive.txt | 36 + LICENSES/MIT.txt | 19 + LICENSES/Zlib.txt | 19 + README.md | 2337 ++- build/.gitignore | 4 - cmake/Modules/AvoidAccelerate.cmake | 62 + cmake/Modules/BuildProtobuf.cmake | 166 + cmake/Modules/CMakeParseArgumentsCopy.cmake | 138 - cmake/Modules/DetectLinuxDistro.cmake | 109 + cmake/Modules/DetectMacOSVersion.cmake | 79 + cmake/Modules/FindCPUFEATURES.cmake | 67 + cmake/Modules/FindFILESYSTEM.cmake | 265 + cmake/Modules/FindGFLAGS.cmake | 151 + cmake/Modules/FindGFORTRAN.cmake | 88 + cmake/Modules/FindGFlags.cmake | 71 - cmake/Modules/FindGLOG.cmake | 182 +- cmake/Modules/FindGMP.cmake | 79 + cmake/Modules/FindGNSSSIMULATOR.cmake | 43 + cmake/Modules/FindGNSSTK.cmake | 149 + cmake/Modules/FindGNUPLOT.cmake | 45 + cmake/Modules/FindGNURADIO.cmake | 397 + cmake/Modules/FindGOOGLETEST.cmake | 82 + cmake/Modules/FindGPERFTOOLS.cmake | 149 + cmake/Modules/FindGPSTK.cmake | 87 - cmake/Modules/FindGRDBFCTTC.cmake | 80 + cmake/Modules/FindGRIIO.cmake | 110 + cmake/Modules/FindGRLIMESDR.cmake | 140 + cmake/Modules/FindGROSMOSDR.cmake | 112 + cmake/Modules/FindGnuradio.cmake | 130 - cmake/Modules/FindGperftools.cmake | 52 - cmake/Modules/FindGrOsmoSDR.cmake | 51 - cmake/Modules/FindLIBAD9361.cmake | 97 + cmake/Modules/FindLIBIIO.cmake | 99 + cmake/Modules/FindLIBUNWIND.cmake | 150 + cmake/Modules/FindLOG4CPP.cmake | 133 + cmake/Modules/FindLibOsmoSDR.cmake | 41 - cmake/Modules/FindMATHJAX2.cmake | 49 + cmake/Modules/FindMATIO.cmake | 168 + cmake/Modules/FindOPENCL.cmake | 210 + cmake/Modules/FindORC.cmake | 153 +- cmake/Modules/FindOpenBLAS.cmake | 25 - cmake/Modules/FindOpenCL.cmake | 99 - cmake/Modules/FindPCAP.cmake | 161 + cmake/Modules/FindPUGIXML.cmake | 120 + cmake/Modules/FindTELEORBIT.cmake | 101 + cmake/Modules/FindTeleorbit.cmake | 29 - cmake/Modules/FindUHD.cmake | 120 +- cmake/Modules/FindVOLK.cmake | 124 + cmake/Modules/FindVOLKGNSSSDR.cmake | 107 + cmake/Modules/FindVolk.cmake | 34 - cmake/Modules/FindVolkGnssSdr.cmake | 32 - cmake/Modules/FindZEROMQ.cmake | 61 + cmake/Modules/GnssSdrPackaging.cmake | 323 - cmake/Modules/GnsssdrBuildTypes.cmake | 210 + cmake/Modules/GnsssdrCrypto.cmake | 191 + cmake/Modules/GnsssdrLibPaths.cmake | 43 + cmake/Modules/SetupPython.cmake | 196 + cmake/Modules/TestForARM.cmake | 83 - cmake/Modules/TestForSSE.cmake | 38 - .../XcodeRemoveWarningDuplicates.cmake | 23 + cmake/Packaging/fixup_deb_permissions.sh.in | 10 - cmake/Packaging/postinst.in | 4 - cmake/Packaging/prerm.in | 14 - cmake/Toolchains/aarch64-linux-gnu.cmake | 39 + cmake/Toolchains/arm-linux-gnueabihf.cmake | 42 + .../arm_cortex_a15_hardfp_native.cmake | 15 + .../arm_cortex_a53_hardfp_native.cmake | 15 + .../arm_cortex_a72_hardfp_native.cmake | 15 + .../arm_cortex_a8_hardfp_native.cmake | 15 + .../arm_cortex_a8_softfp_native.cmake | 15 + .../arm_cortex_a9_hardfp_native.cmake | 15 + cmake/Toolchains/oe-sdk_cross.cmake | 26 + cmake/Toolchains/raspi3.cmake | 15 + cmake/Toolchains/raspi4.cmake | 15 + cmake/Toolchains/zynq-7000.cmake | 36 + cmake/cmake_uninstall.cmake.in | 46 +- .../Beidou/gnss-sdr_BDS_B1I_byte.conf | 127 + .../gnss-sdr_BDS_B3I_GPS_L1_CA_ibyte.conf | 212 + .../Beidou/gnss-sdr_BDS_B3I_byte.conf | 123 + .../Beidou/gnss-sdr_BDS_B3I_ibyte.conf | 132 + .../Beidou/gnss-sdr_BDS_B3I_short.conf | 81 + conf/File_input/GPS/gnss-sdr-L1-gaussian.conf | 67 + .../GPS/gnss-sdr_GPS_L1_CA_ibyte.conf | 94 + conf/File_input/GPS/gnss-sdr_GPS_L1_SPIR.conf | 137 + .../GPS/gnss-sdr_GPS_L1_acq_QuickSync.conf | 108 + .../GPS/gnss-sdr_GPS_L1_gr_complex.conf | 98 + .../GPS/gnss-sdr_GPS_L1_ishort.conf | 102 + ...nnel_GPS_L1_Flexiband_bin_file_III_1a.conf | 184 + ...nnel_GPS_L1_Flexiband_realtime_III_1a.conf | 189 + ...nnel_GPS_L1_Flexiband_realtime_III_1b.conf | 188 + ...annel_GPS_L1_Flexiband_realtime_II_3b.conf | 195 + ...hannel_GPS_L1_Flexiband_realtime_I_1b.conf | 183 + ...l_GPS_L1_L2_Flexiband_realtime_III_1b.conf | 305 + ...Galileo_E1B_Flexiband_bin_file_III_1b.conf | 278 + ...el_GPS_L2_M_Flexiband_bin_file_III_1b.conf | 363 + ...S_L2_M_Flexiband_bin_file_III_1b_real.conf | 258 + .../gnss-sdr_Galileo_E1_acq_QuickSync.conf | 100 + .../Galileo/gnss-sdr_Galileo_E1_ishort.conf | 109 + .../Galileo/gnss-sdr_Galileo_E1_nsr.conf | 127 + .../Galileo/gnss-sdr_Galileo_E5a.conf | 121 + .../gnss-sdr_Galileo_E5a_IFEN_CTTC.conf | 157 + ...r_galileo_E1_extended_correlator_byte.conf | 141 + ...galileo_E1_extended_correlator_labsat.conf | 169 + ...nss-sdr_GLONASS_L1_CA_GPS_L1_CA_ibyte.conf | 142 + .../gnss-sdr_GLONASS_L1_CA_GPS_L2C_ibyte.conf | 143 + .../Glonass/gnss-sdr_GLONASS_L1_CA_ibyte.conf | 82 + .../gnss-sdr_GLONASS_L1_CA_ibyte_coh_trk.conf | 86 + .../Glonass/gnss-sdr_GLONASS_L1_ibyte.conf | 101 + ...nss-sdr_GLONASS_L2_CA_GPS_L1_CA_ibyte.conf | 143 + .../gnss-sdr_GLONASS_L2_CA_GPS_L2C_ibyte.conf | 144 + .../Glonass/gnss-sdr_GLONASS_L2_CA_ibyte.conf | 76 + .../gnss-sdr_GLONASS_L2_CA_ibyte_coh_trk.conf | 86 + .../MultiCons/gnss-sdr_Hybrid_byte.conf | 160 + .../MultiCons/gnss-sdr_Hybrid_byte_sim.conf | 145 + .../MultiCons/gnss-sdr_Hybrid_gr_complex.conf | 131 + .../MultiCons/gnss-sdr_Hybrid_ishort.conf | 161 + .../MultiCons/gnss-sdr_labsat_kf.conf | 185 + ..._all_in_one_Flexiband_bin_file_III_1b.conf | 385 + .../gnss-sdr_multisource_Hybrid_ishort.conf | 169 + .../gnss-sdr_multisource_Hybrid_nsr.conf | 231 + conf/Nsr_input/gnss-sdr_GPS_L1_nsr.conf | 164 + conf/Nsr_input/gnss-sdr_GPS_L1_nsr_gauss.conf | 207 + conf/Nsr_input/gnss-sdr_Hybrid_nsr.conf | 176 + conf/{ => Other}/front-end-cal.conf | 123 +- conf/Other/gnss-sdr_GPS_L1_2ch_udp.conf | 103 + conf/Other/gnss-sdr_GPS_L1_FPGA.conf | 72 + conf/Other/gnss-sdr_GPS_L1_fifo.conf | 56 + .../Other/gnss-sdr_GPS_L1_gr_complex_gpu.conf | 85 + conf/Other/gnss-sdr_GPS_L1_monitor.conf | 89 + .../gnss-sdr_GPS_L1_nsr_twobit_packed.conf | 154 + ...-sdr_GPS_L1_pulse_blanking_gr_complex.conf | 111 + conf/Other/gnss-sdr_GPS_L1_two_bits_cpx.conf | 138 + .../gnss-sdr_GPS_L1_udp_with_monitor.conf | 82 + ...gnss-sdr_GPS_L1_2ch_fmcomms2_realtime.conf | 115 + .../gnss-sdr_GPS_L1_LimeSDR.conf | 129 + .../gnss-sdr_GPS_L1_USRP_X300_realtime.conf | 157 + .../gnss-sdr_GPS_L1_USRP_realtime.conf | 118 + .../gnss-sdr_GPS_L1_bladeRF.conf | 109 + .../gnss-sdr_GPS_L1_fmcomms2_realtime.conf | 134 + .../gnss-sdr_GPS_L1_plutosdr_realtime.conf | 145 + .../gnss-sdr_GPS_L1_rtl_tcp_realtime.conf | 151 + .../gnss-sdr_GPS_L1_rtlsdr_realtime.conf | 153 + .../gnss-sdr_GPS_L2C_USRP1_realtime.conf | 156 + .../gnss-sdr_GPS_L2C_USRP_X300_realtime.conf | 82 +- ...nss-sdr_Galileo_E1_USRP_X300_realtime.conf | 93 + ...lileo_Beidou_Glonass_L1_USRP_realtime.conf | 281 + ...GPS_Galileo_Beidou_L1_hackrf_realtime.conf | 237 + ...ultichannel_GPS_L1_USRP_X300_realtime.conf | 161 + conf/gnss-sdr.conf | 286 +- conf/gnss-sdr_GPS_L1_GN3S_realtime.conf | 393 - conf/gnss-sdr_GPS_L1_SPIR.conf | 343 - conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf | 390 - ...nss-sdr_GPS_L1_USRP_X300_realtime_new.conf | 405 - conf/gnss-sdr_GPS_L1_USRP_realtime.conf | 386 - conf/gnss-sdr_GPS_L1_acq_QuickSync.conf | 385 - conf/gnss-sdr_GPS_L1_gr_complex.conf | 305 - .../gnss-sdr_GPS_L1_gr_complex_optim_trk.conf | 335 - conf/gnss-sdr_GPS_L1_nsr.conf | 307 - conf/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf | 313 - conf/gnss-sdr_GPS_L1_rtlsdr_realtime.conf | 305 - conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf | 209 - conf/gnss-sdr_Galileo_E1_acq_QuickSync.conf | 362 - conf/gnss-sdr_Galileo_E1_nsr.conf | 368 - conf/gnss-sdr_Galileo_E1_short.conf | 297 - conf/gnss-sdr_Galileo_E5a.conf | 414 - conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf | 415 - conf/gnss-sdr_Hybrid_byte.conf | 352 - conf/gnss-sdr_Hybrid_nsr.conf | 345 - conf/gnss-sdr_Hybrid_short.conf | 363 - conf/gnss-sdr_SBAS_short.conf | 338 - ...nnel_GPS_L1_Flexiband_bin_file_III_1a.conf | 346 - ...nnel_GPS_L1_Flexiband_realtime_III_1a.conf | 354 - ...nnel_GPS_L1_Flexiband_realtime_III_1b.conf | 352 - ...annel_GPS_L1_Flexiband_realtime_II_3b.conf | 353 - ...hannel_GPS_L1_Flexiband_realtime_I_1b.conf | 348 - ...l_GPS_L1_L2_Flexiband_realtime_III_1b.conf | 497 - ...Galileo_E1B_Flexiband_realtime_III_1b.conf | 547 - ...ultichannel_GPS_L1_USRP_X300_realtime.conf | 422 - ...el_GPS_L2_M_Flexiband_bin_file_III_1a.conf | 444 - ...el_GPS_L2_M_Flexiband_bin_file_III_1b.conf | 659 - conf/gnss-sdr_multisource_Hybrid_nsr.conf | 493 - conf/gnss-sdr_multisource_Hybrid_short.conf | 479 - conf/old/gnss-sdr_acq_CCCWSR.conf | 391 - conf/old/gnss-sdr_acq_Tong.conf | 393 - conf/old/gnss-sdr_acq_assistance_test.conf | 467 - conf/old/gnss-sdr_array.conf | 395 - ...sdr_galileo_e1_tcp_connector_tracking.conf | 273 - conf/old/gnss-sdr_ishort_file_read.conf | 445 - conf/old/gnss-sdr_nmea_tty_output.conf | 458 - conf/old/gnss-sdr_tcp_connector_tracking.conf | 416 - conf/old/master.conf | 408 - data/.gitignore | 4 - docs/CHANGELOG.md | 1825 ++ docs/changelog | 7 - docs/changelog.Debian | 5 - docs/doxygen/Doxyfile.generic | 1680 -- docs/doxygen/Doxyfile.in | 2716 ++- .../doxygen/images/ClassHierarchy.png.license | 5 + docs/doxygen/images/GeneralBlockDiagram.png | Bin 139264 -> 268273 bytes .../images/GeneralBlockDiagram.png.license | 5 + .../images/SignalConditioner.png.license | 5 + docs/doxygen/images/gnss-sdr_logo.png.license | 5 + .../images/gnss-sdr_logo_round.png.license | 5 + docs/doxygen/images/overview.png.license | 5 + docs/doxygen/other/main_page.dox | 549 +- docs/doxygen/other/reference_docs.dox | 237 +- docs/doxygen/other/signal_model.dox | 158 +- docs/manpage/front-end-cal-manpage | 12 +- docs/manpage/gnss-sdr-manpage | 72 +- docs/protobuf/README.md | 29 + docs/protobuf/galileo_ephemeris.proto | 53 + docs/protobuf/gnss_synchro.proto | 45 + docs/protobuf/gps_ephemeris.proto | 57 + docs/protobuf/monitor_pvt.proto | 55 + docs/protobuf/nav_message.proto | 17 + docs/xml-schemas/README.md | 56 + docs/xml-schemas/cnav_ephemeris_map.xsd | 82 + docs/xml-schemas/cnav_utc_model.xsd | 31 + docs/xml-schemas/ephemeris_map.xsd | 80 + docs/xml-schemas/gal_almanac_map.xsd | 58 + docs/xml-schemas/gal_ephemeris_map.xsd | 79 + docs/xml-schemas/gal_iono_model.xsd | 31 + docs/xml-schemas/gal_utc_model.xsd | 30 + docs/xml-schemas/gps_almanac_map.xsd | 56 + docs/xml-schemas/iono_model.xsd | 29 + docs/xml-schemas/utc_model.xsd | 31 + drivers/gr-dbfcttc/CMakeLists.txt | 188 - drivers/gr-dbfcttc/README | 7 - drivers/gr-dbfcttc/apps/CMakeLists.txt | 25 - drivers/gr-dbfcttc/build/.gitignore | 4 - .../Modules/CMakeParseArgumentsCopy.cmake | 138 - .../cmake/Modules/FindCppUnit.cmake | 36 - .../cmake/Modules/FindGnuradioRuntime.cmake | 36 - .../gr-dbfcttc/cmake/Modules/FindPCAP.cmake | 122 - .../cmake/Modules/GrMiscUtils.cmake | 210 - .../gr-dbfcttc/cmake/Modules/GrPlatform.cmake | 46 - .../gr-dbfcttc/cmake/Modules/GrPython.cmake | 227 - drivers/gr-dbfcttc/cmake/Modules/GrSwig.cmake | 229 - drivers/gr-dbfcttc/cmake/Modules/GrTest.cmake | 133 - .../cmake/Modules/dbfcttcConfig.cmake | 30 - .../gr-dbfcttc/cmake/cmake_uninstall.cmake.in | 32 - drivers/gr-dbfcttc/docs/CMakeLists.txt | 35 - drivers/gr-dbfcttc/docs/README.dbfcttc | 11 - .../gr-dbfcttc/docs/doxygen/CMakeLists.txt | 52 - drivers/gr-dbfcttc/docs/doxygen/Doxyfile.in | 1504 -- .../docs/doxygen/Doxyfile.swig_doc.in | 1514 -- .../docs/doxygen/doxyxml/__init__.py | 82 - .../gr-dbfcttc/docs/doxygen/doxyxml/base.py | 219 - .../docs/doxygen/doxyxml/doxyindex.py | 237 - .../doxygen/doxyxml/generated/__init__.py | 7 - .../doxygen/doxyxml/generated/compound.py | 503 - .../doxyxml/generated/compoundsuper.py | 8342 --------- .../docs/doxygen/doxyxml/generated/index.py | 77 - .../doxygen/doxyxml/generated/indexsuper.py | 523 - .../gr-dbfcttc/docs/doxygen/doxyxml/text.py | 56 - .../docs/doxygen/other/group_defs.dox | 7 - .../docs/doxygen/other/main_page.dox | 10 - drivers/gr-dbfcttc/docs/doxygen/swig_doc.py | 255 - drivers/gr-dbfcttc/examples/README | 4 - drivers/gr-dbfcttc/grc/CMakeLists.txt | 22 - drivers/gr-dbfcttc/grc/dbfcttc_raw_array.xml | 86 - drivers/gr-dbfcttc/grc/test_grc2.grc | 497 - drivers/gr-dbfcttc/grc/top_block.py | 95 - .../gr-dbfcttc/include/dbfcttc/CMakeLists.txt | 25 - drivers/gr-dbfcttc/include/dbfcttc/api.h | 43 - .../gr-dbfcttc/include/dbfcttc/raw_array.h | 66 - drivers/gr-dbfcttc/lib/CMakeLists.txt | 77 - drivers/gr-dbfcttc/lib/qa_dbfcttc.cc | 43 - drivers/gr-dbfcttc/lib/qa_dbfcttc.h | 42 - drivers/gr-dbfcttc/lib/qa_raw_array.cc | 48 - drivers/gr-dbfcttc/lib/qa_raw_array.h | 57 - drivers/gr-dbfcttc/lib/raw_array_impl.cc | 514 - drivers/gr-dbfcttc/lib/raw_array_impl.h | 116 - drivers/gr-dbfcttc/lib/test_dbfcttc.cc | 55 - .../python/.unittests/python/qa_raw_array.xml | 5 - drivers/gr-dbfcttc/python/CMakeLists.txt | 43 - drivers/gr-dbfcttc/python/__init__.py | 54 - drivers/gr-dbfcttc/python/build_utils.py | 226 - .../gr-dbfcttc/python/build_utils_codes.py | 52 - drivers/gr-dbfcttc/python/qa_raw_array.py | 42 - drivers/gr-dbfcttc/swig/CMakeLists.txt | 59 - drivers/gr-dbfcttc/swig/dbfcttc_swig.i | 16 - drivers/gr-gn3s/CMakeLists.txt | 146 - drivers/gr-gn3s/README | 69 - drivers/gr-gn3s/build/.gitignore | 4 - .../cmake/Modules/FindGnuradioRuntime.cmake | 7 - drivers/gr-gn3s/cmake/Modules/FindUSB.cmake | 29 - .../gr-gn3s/cmake/Modules/GrMiscUtils.cmake | 347 - .../gr-gn3s/cmake/Modules/GrPlatform.cmake | 54 - drivers/gr-gn3s/cmake/Modules/GrPython.cmake | 242 - drivers/gr-gn3s/cmake/Modules/GrSwig.cmake | 248 - drivers/gr-gn3s/cmake/Modules/GrTest.cmake | 139 - .../gr-gn3s/cmake/cmake_uninstall.cmake.in | 32 - drivers/gr-gn3s/docs/CMakeLists.txt | 35 - drivers/gr-gn3s/docs/doxygen/CMakeLists.txt | 52 - drivers/gr-gn3s/docs/doxygen/Doxyfile.in | 1504 -- .../gr-gn3s/docs/doxygen/Doxyfile.swig_doc.in | 1514 -- .../gr-gn3s/docs/doxygen/doxyxml/__init__.py | 82 - drivers/gr-gn3s/docs/doxygen/doxyxml/base.py | 219 - .../gr-gn3s/docs/doxygen/doxyxml/doxyindex.py | 237 - .../docs/doxygen/doxyxml/example/Doxyfile | 1551 -- .../docs/doxygen/doxyxml/example/aadvark.cc | 50 - .../docs/doxygen/doxyxml/example/aadvark.h | 44 - .../doxyxml/example/xml/aadvark_8cc.xml | 88 - .../doxyxml/example/xml/aadvark_8h.xml | 72 - .../doxyxml/example/xml/classAadvark.xml | 86 - .../doxygen/doxyxml/example/xml/combine.xslt | 15 - .../doxygen/doxyxml/example/xml/compound.xsd | 814 - .../doxygen/doxyxml/example/xml/index.xml | 17 - .../doxygen/doxyxml/example/xml/index.xsd | 66 - .../doxygen/doxyxml/generated/__init__.py | 7 - .../doxygen/doxyxml/generated/compound.py | 503 - .../doxyxml/generated/compoundsuper.py | 8342 --------- .../docs/doxygen/doxyxml/generated/index.py | 77 - .../doxygen/doxyxml/generated/indexsuper.py | 523 - drivers/gr-gn3s/docs/doxygen/doxyxml/text.py | 56 - .../gr-gn3s/docs/doxygen/other/group_defs.dox | 7 - .../gr-gn3s/docs/doxygen/other/main_page.dox | 10 - drivers/gr-gn3s/docs/doxygen/swig_doc.py | 255 - drivers/gr-gn3s/grc/CMakeLists.txt | 23 - drivers/gr-gn3s/grc/gn3s_source_cc.xml | 13 - drivers/gr-gn3s/include/CMakeLists.txt | 33 - drivers/gr-gn3s/include/fusb.h | 138 - drivers/gr-gn3s/include/fusb_linux.h | 116 - drivers/gr-gn3s/include/gn3s.h | 142 - drivers/gr-gn3s/include/gn3s_api.h | 42 - drivers/gr-gn3s/include/gn3s_defines.h | 25 - drivers/gr-gn3s/include/gn3s_source.h | 80 - drivers/gr-gn3s/include/gn3s_source_cc.h | 96 - drivers/gr-gn3s/include/libusb_types.h | 38 - drivers/gr-gn3s/lib/CMakeLists.txt | 51 - drivers/gr-gn3s/lib/fusb.cc | 59 - drivers/gr-gn3s/lib/fusb_linux.cc | 696 - drivers/gr-gn3s/lib/fusb_sysconfig_linux.cc | 49 - drivers/gr-gn3s/lib/gn3s.cc | 549 - drivers/gr-gn3s/lib/gn3s_firmware.ihx | 526 - drivers/gr-gn3s/lib/gn3s_source.cc | 233 - drivers/gr-gn3s/lib/gn3s_source_cc.cc | 117 - drivers/gr-gn3s/lib/qa_gn3s_source_cc.cc | 36 - drivers/gr-gn3s/python/CMakeLists.txt | 44 - drivers/gr-gn3s/python/Makefile | 190 - drivers/gr-gn3s/python/__init__.py | 54 - drivers/gr-gn3s/python/qa_gn3s.py | 47 - drivers/gr-gn3s/swig/CMakeLists.txt | 61 - drivers/gr-gn3s/swig/gn3s_swig.i | 17 - firmware/GN3S_v2/COPYING_GPL.txt | 340 - firmware/GN3S_v2/README | 20 - firmware/GN3S_v2/bin/gn3s_firmware.ihx | 544 - firmware/GN3S_v2/include/delay.h | 38 - firmware/GN3S_v2/include/eeprom.h | 40 - firmware/GN3S_v2/include/fx2regs.h | 738 - firmware/GN3S_v2/include/fx2utils.h | 31 - firmware/GN3S_v2/include/gn3s_main.h | 97 - firmware/GN3S_v2/include/gn3s_regs.h | 63 - firmware/GN3S_v2/include/gn3s_se4110.h | 53 - firmware/GN3S_v2/include/gpif_inline.h | 27 - firmware/GN3S_v2/include/isr.h | 172 - firmware/GN3S_v2/include/syncdelay.h | 65 - firmware/GN3S_v2/include/timer.h | 35 - firmware/GN3S_v2/include/usb_common.h | 38 - firmware/GN3S_v2/include/usb_descriptors.h | 32 - firmware/GN3S_v2/include/usb_requests.h | 88 - firmware/GN3S_v2/include/usrp_commands.h | 97 - firmware/GN3S_v2/include/usrp_common.h | 70 - firmware/GN3S_v2/lib/Makefile | 12 - firmware/GN3S_v2/lib/delay.asm | 179 - firmware/GN3S_v2/lib/delay.c | 76 - firmware/GN3S_v2/lib/delay.lst | 179 - firmware/GN3S_v2/lib/delay.rel | 63 - firmware/GN3S_v2/lib/delay.sym | 380 - firmware/GN3S_v2/lib/fx2utils.asm | 821 - firmware/GN3S_v2/lib/fx2utils.c | 53 - firmware/GN3S_v2/lib/fx2utils.lst | 821 - firmware/GN3S_v2/lib/fx2utils.rel | 373 - firmware/GN3S_v2/lib/fx2utils.sym | 702 - firmware/GN3S_v2/lib/i2c.c | 123 - firmware/GN3S_v2/lib/isr.asm | 1138 -- firmware/GN3S_v2/lib/isr.c | 167 - firmware/GN3S_v2/lib/isr.lst | 1138 -- firmware/GN3S_v2/lib/isr.rel | 513 - firmware/GN3S_v2/lib/isr.sym | 711 - firmware/GN3S_v2/lib/libfx2.lib | 5 - firmware/GN3S_v2/lib/timer.asm | 770 - firmware/GN3S_v2/lib/timer.c | 49 - firmware/GN3S_v2/lib/timer.lst | 770 - firmware/GN3S_v2/lib/timer.rel | 362 - firmware/GN3S_v2/lib/timer.sym | 701 - firmware/GN3S_v2/lib/usb_common.asm | 1595 -- firmware/GN3S_v2/lib/usb_common.c | 405 - firmware/GN3S_v2/lib/usb_common.lst | 1595 -- firmware/GN3S_v2/lib/usb_common.rel | 839 - firmware/GN3S_v2/lib/usb_common.sym | 737 - firmware/GN3S_v2/src/Makefile | 23 - firmware/GN3S_v2/src/_startup.a51 | 80 - firmware/GN3S_v2/src/edit-gpif | 114 - firmware/GN3S_v2/src/eeprom.c | 239 - firmware/GN3S_v2/src/gn3s_gpif.c | 206 - firmware/GN3S_v2/src/gn3s_main.adb | 1 - firmware/GN3S_v2/src/gn3s_main.c | 344 - firmware/GN3S_v2/src/gn3s_se4120.c | 114 - firmware/GN3S_v2/src/gpif.c | 292 - firmware/GN3S_v2/src/gpif.gpf | Bin 4170 -> 0 bytes firmware/GN3S_v2/src/init_gpif.c | 60 - firmware/GN3S_v2/src/readme.txt | 2 - firmware/GN3S_v2/src/tags | 3004 ---- firmware/GN3S_v2/src/usb_descriptors.a51 | 422 - firmware/GN3S_v2/src/usrp_common.c | 132 - firmware/GN3S_v2/src/usrp_gpif.c | 206 - firmware/GN3S_v2/src/vectors.a51 | 180 - install/.gitignore | 4 +- src/CMakeLists.txt | 21 +- src/algorithms/CMakeLists.txt | 19 +- src/algorithms/PVT/CMakeLists.txt | 18 +- src/algorithms/PVT/adapters/CMakeLists.txt | 94 +- src/algorithms/PVT/adapters/galileo_e1_pvt.cc | 111 - src/algorithms/PVT/adapters/galileo_e1_pvt.h | 97 - src/algorithms/PVT/adapters/gps_l1_ca_pvt.cc | 110 - src/algorithms/PVT/adapters/gps_l1_ca_pvt.h | 98 - src/algorithms/PVT/adapters/hybrid_pvt.cc | 111 - src/algorithms/PVT/adapters/hybrid_pvt.h | 96 - src/algorithms/PVT/adapters/rtklib_pvt.cc | 1024 ++ src/algorithms/PVT/adapters/rtklib_pvt.h | 233 + .../PVT/gnuradio_blocks/CMakeLists.txt | 137 +- .../PVT/gnuradio_blocks/galileo_e1_pvt_cc.cc | 308 - .../PVT/gnuradio_blocks/galileo_e1_pvt_cc.h | 123 - .../PVT/gnuradio_blocks/gps_l1_ca_pvt_cc.cc | 344 - .../PVT/gnuradio_blocks/gps_l1_ca_pvt_cc.h | 122 - .../PVT/gnuradio_blocks/hybrid_pvt_cc.cc | 371 - .../PVT/gnuradio_blocks/hybrid_pvt_cc.h | 128 - .../PVT/gnuradio_blocks/rtklib_pvt_gs.cc | 2538 +++ .../PVT/gnuradio_blocks/rtklib_pvt_gs.h | 287 + src/algorithms/PVT/libs/CMakeLists.txt | 196 +- src/algorithms/PVT/libs/an_packet_printer.cc | 362 + src/algorithms/PVT/libs/an_packet_printer.h | 130 + src/algorithms/PVT/libs/galileo_e1_ls_pvt.cc | 850 - src/algorithms/PVT/libs/galileo_e1_ls_pvt.h | 144 - src/algorithms/PVT/libs/geohash.cc | 194 + src/algorithms/PVT/libs/geohash.h | 74 + src/algorithms/PVT/libs/geojson_printer.cc | 210 + src/algorithms/PVT/libs/geojson_printer.h | 58 + src/algorithms/PVT/libs/gps_l1_ca_ls_pvt.cc | 832 - src/algorithms/PVT/libs/gps_l1_ca_ls_pvt.h | 150 - src/algorithms/PVT/libs/gpx_printer.cc | 217 + src/algorithms/PVT/libs/gpx_printer.h | 59 + src/algorithms/PVT/libs/has_simple_printer.cc | 459 + src/algorithms/PVT/libs/has_simple_printer.h | 67 + src/algorithms/PVT/libs/hybrid_ls_pvt.cc | 929 - src/algorithms/PVT/libs/hybrid_ls_pvt.h | 153 - src/algorithms/PVT/libs/kml_printer.cc | 446 +- src/algorithms/PVT/libs/kml_printer.h | 74 +- .../PVT/libs/monitor_ephemeris_udp_sink.cc | 119 + .../PVT/libs/monitor_ephemeris_udp_sink.h | 62 + src/algorithms/PVT/libs/monitor_pvt.h | 164 + .../PVT/libs/monitor_pvt_udp_sink.cc | 85 + .../PVT/libs/monitor_pvt_udp_sink.h | 61 + src/algorithms/PVT/libs/nmea_printer.cc | 750 +- src/algorithms/PVT/libs/nmea_printer.h | 99 +- src/algorithms/PVT/libs/pvt_conf.h | 111 + src/algorithms/PVT/libs/pvt_kf.cc | 137 + src/algorithms/PVT/libs/pvt_kf.h | 68 + src/algorithms/PVT/libs/pvt_solution.cc | 212 + src/algorithms/PVT/libs/pvt_solution.h | 109 + src/algorithms/PVT/libs/rinex_printer.cc | 14627 +++++++++++++--- src/algorithms/PVT/libs/rinex_printer.h | 1135 +- src/algorithms/PVT/libs/rtcm.cc | 6670 +++++++ src/algorithms/PVT/libs/rtcm.h | 1626 ++ src/algorithms/PVT/libs/rtcm_printer.cc | 2101 ++- src/algorithms/PVT/libs/rtcm_printer.h | 358 +- src/algorithms/PVT/libs/rtklib_solver.cc | 1810 ++ src/algorithms/PVT/libs/rtklib_solver.h | 165 + src/algorithms/PVT/libs/serdes_galileo_eph.h | 175 + src/algorithms/PVT/libs/serdes_gps_eph.h | 181 + src/algorithms/PVT/libs/serdes_monitor_pvt.h | 178 + src/algorithms/acquisition/CMakeLists.txt | 21 +- .../acquisition/adapters/CMakeLists.txt | 168 +- .../adapters/beidou_b1i_pcps_acquisition.cc | 248 + .../adapters/beidou_b1i_pcps_acquisition.h | 181 + .../adapters/beidou_b3i_pcps_acquisition.cc | 243 + .../adapters/beidou_b3i_pcps_acquisition.h | 180 + ...lileo_e1_pcps_8ms_ambiguous_acquisition.cc | 293 +- ...alileo_e1_pcps_8ms_ambiguous_acquisition.h | 146 +- .../galileo_e1_pcps_ambiguous_acquisition.cc | 445 +- .../galileo_e1_pcps_ambiguous_acquisition.h | 159 +- ...ileo_e1_pcps_ambiguous_acquisition_fpga.cc | 257 + ...lileo_e1_pcps_ambiguous_acquisition_fpga.h | 216 + ...eo_e1_pcps_cccwsr_ambiguous_acquisition.cc | 279 +- ...leo_e1_pcps_cccwsr_ambiguous_acquisition.h | 149 +- ...e1_pcps_quicksync_ambiguous_acquisition.cc | 329 +- ..._e1_pcps_quicksync_ambiguous_acquisition.h | 148 +- ...ileo_e1_pcps_tong_ambiguous_acquisition.cc | 330 +- ...lileo_e1_pcps_tong_ambiguous_acquisition.h | 147 +- ...ileo_e5a_noncoherent_iq_acquisition_caf.cc | 373 +- ...lileo_e5a_noncoherent_iq_acquisition_caf.h | 276 +- .../adapters/galileo_e5a_pcps_acquisition.cc | 248 + .../adapters/galileo_e5a_pcps_acquisition.h | 179 + .../galileo_e5a_pcps_acquisition_fpga.cc | 263 + .../galileo_e5a_pcps_acquisition_fpga.h | 224 + .../adapters/galileo_e5b_pcps_acquisition.cc | 246 + .../adapters/galileo_e5b_pcps_acquisition.h | 216 + .../galileo_e5b_pcps_acquisition_fpga.cc | 262 + .../galileo_e5b_pcps_acquisition_fpga.h | 224 + .../adapters/galileo_e6_pcps_acquisition.cc | 262 + .../adapters/galileo_e6_pcps_acquisition.h | 187 + .../glonass_l1_ca_pcps_acquisition.cc | 241 + .../adapters/glonass_l1_ca_pcps_acquisition.h | 179 + .../glonass_l2_ca_pcps_acquisition.cc | 240 + .../adapters/glonass_l2_ca_pcps_acquisition.h | 178 + .../adapters/gps_l1_ca_pcps_acquisition.cc | 342 +- .../adapters/gps_l1_ca_pcps_acquisition.h | 160 +- ...gps_l1_ca_pcps_acquisition_fine_doppler.cc | 195 +- .../gps_l1_ca_pcps_acquisition_fine_doppler.h | 149 +- .../gps_l1_ca_pcps_acquisition_fpga.cc | 244 + .../gps_l1_ca_pcps_acquisition_fpga.h | 219 + .../gps_l1_ca_pcps_assisted_acquisition.cc | 175 +- .../gps_l1_ca_pcps_assisted_acquisition.h | 151 +- .../gps_l1_ca_pcps_multithread_acquisition.cc | 302 - .../gps_l1_ca_pcps_multithread_acquisition.h | 164 - .../gps_l1_ca_pcps_opencl_acquisition.cc | 277 +- .../gps_l1_ca_pcps_opencl_acquisition.h | 155 +- .../gps_l1_ca_pcps_quicksync_acquisition.cc | 284 +- .../gps_l1_ca_pcps_quicksync_acquisition.h | 157 +- .../gps_l1_ca_pcps_tong_acquisition.cc | 281 +- .../gps_l1_ca_pcps_tong_acquisition.h | 156 +- .../adapters/gps_l2_m_pcps_acquisition.cc | 361 +- .../adapters/gps_l2_m_pcps_acquisition.h | 160 +- .../gps_l2_m_pcps_acquisition_fpga.cc | 243 + .../adapters/gps_l2_m_pcps_acquisition_fpga.h | 182 + .../adapters/gps_l5i_pcps_acquisition.cc | 264 + .../adapters/gps_l5i_pcps_acquisition.h | 187 + .../adapters/gps_l5i_pcps_acquisition_fpga.cc | 245 + .../adapters/gps_l5i_pcps_acquisition_fpga.h | 221 + .../gnuradio_blocks/CMakeLists.txt | 157 +- ...o_e5a_noncoherent_iq_acquisition_caf_cc.cc | 1266 +- ...eo_e5a_noncoherent_iq_acquisition_caf_cc.h | 435 +- .../galileo_pcps_8ms_acquisition_cc.cc | 663 +- .../galileo_pcps_8ms_acquisition_cc.h | 243 +- .../gnuradio_blocks/pcps_acquisition.cc | 1050 ++ .../gnuradio_blocks/pcps_acquisition.h | 281 + .../gnuradio_blocks/pcps_acquisition_cc.cc | 404 - .../gnuradio_blocks/pcps_acquisition_cc.h | 247 - .../pcps_acquisition_fine_doppler_cc.cc | 845 +- .../pcps_acquisition_fine_doppler_cc.h | 256 +- .../gnuradio_blocks/pcps_acquisition_fpga.cc | 321 + .../gnuradio_blocks/pcps_acquisition_fpga.h | 217 + .../pcps_assisted_acquisition_cc.cc | 551 +- .../pcps_assisted_acquisition_cc.h | 261 +- .../pcps_cccwsr_acquisition_cc.cc | 675 +- .../pcps_cccwsr_acquisition_cc.h | 365 +- .../pcps_multithread_acquisition_cc.cc | 470 - .../pcps_multithread_acquisition_cc.h | 257 - .../pcps_opencl_acquisition_cc.cc | 843 +- .../pcps_opencl_acquisition_cc.h | 439 +- .../pcps_quicksync_acquisition_cc.cc | 869 +- .../pcps_quicksync_acquisition_cc.h | 331 +- .../pcps_tong_acquisition_cc.cc | 657 +- .../pcps_tong_acquisition_cc.h | 371 +- .../acquisition/libs/CMakeLists.txt | 73 + src/algorithms/acquisition/libs/acq_conf.cc | 123 + src/algorithms/acquisition/libs/acq_conf.h | 86 + .../acquisition/libs/acq_conf_fpga.cc | 83 + .../acquisition/libs/acq_conf_fpga.h | 70 + .../acquisition/libs/fpga_acquisition.cc | 270 + .../acquisition/libs/fpga_acquisition.h | 184 + src/algorithms/channel/CMakeLists.txt | 20 +- .../channel/adapters/CMakeLists.txt | 82 +- src/algorithms/channel/adapters/channel.cc | 399 +- src/algorithms/channel/adapters/channel.h | 148 +- src/algorithms/channel/libs/CMakeLists.txt | 130 +- src/algorithms/channel/libs/channel_fsm.cc | 311 +- src/algorithms/channel/libs/channel_fsm.h | 120 +- .../channel/libs/channel_msg_receiver_cc.cc | 108 + .../channel/libs/channel_msg_receiver_cc.h | 56 + src/algorithms/conditioner/CMakeLists.txt | 19 +- .../conditioner/adapters/CMakeLists.txt | 90 +- .../adapters/array_signal_conditioner.cc | 91 +- .../adapters/array_signal_conditioner.h | 94 +- .../adapters/signal_conditioner.cc | 113 +- .../conditioner/adapters/signal_conditioner.h | 96 +- .../data_type_adapter/CMakeLists.txt | 20 +- .../data_type_adapter/adapters/CMakeLists.txt | 102 +- .../adapters/byte_to_short.cc | 79 +- .../adapters/byte_to_short.h | 80 +- .../adapters/cshort_to_grcomplex.cc | 92 + .../adapters/cshort_to_grcomplex.h | 83 + .../adapters/ibyte_to_cbyte.cc | 124 +- .../adapters/ibyte_to_cbyte.h | 80 +- .../adapters/ibyte_to_complex.cc | 139 +- .../adapters/ibyte_to_complex.h | 88 +- .../adapters/ibyte_to_cshort.cc | 132 + .../adapters/ibyte_to_cshort.h | 86 + .../adapters/ishort_to_complex.cc | 123 +- .../adapters/ishort_to_complex.h | 83 +- .../adapters/ishort_to_cshort.cc | 125 +- .../adapters/ishort_to_cshort.h | 80 +- .../gnuradio_blocks/CMakeLists.txt | 82 +- .../gnuradio_blocks/cshort_to_gr_complex.cc | 50 + .../gnuradio_blocks/cshort_to_gr_complex.h | 55 + .../interleaved_byte_to_complex_byte.cc | 47 +- .../interleaved_byte_to_complex_byte.h | 57 +- .../interleaved_byte_to_complex_short.cc | 58 + .../interleaved_byte_to_complex_short.h | 55 + .../interleaved_short_to_complex_short.cc | 47 +- .../interleaved_short_to_complex_short.h | 53 +- src/algorithms/input_filter/CMakeLists.txt | 20 +- .../input_filter/adapters/CMakeLists.txt | 103 +- .../adapters/beamformer_filter.cc | 73 +- .../input_filter/adapters/beamformer_filter.h | 93 +- .../input_filter/adapters/fir_filter.cc | 330 +- .../input_filter/adapters/fir_filter.h | 136 +- .../adapters/freq_xlating_fir_filter.cc | 359 +- .../adapters/freq_xlating_fir_filter.h | 121 +- .../input_filter/adapters/notch_filter.cc | 117 + .../input_filter/adapters/notch_filter.h | 80 + .../adapters/notch_filter_lite.cc | 123 + .../input_filter/adapters/notch_filter_lite.h | 80 + .../adapters/pulse_blanking_filter.cc | 170 + .../adapters/pulse_blanking_filter.h | 86 + .../gnuradio_blocks/CMakeLists.txt | 93 +- .../gnuradio_blocks/beamformer.cc | 98 +- .../input_filter/gnuradio_blocks/beamformer.h | 61 +- .../input_filter/gnuradio_blocks/notch_cc.cc | 121 + .../input_filter/gnuradio_blocks/notch_cc.h | 82 + .../gnuradio_blocks/notch_lite_cc.cc | 138 + .../gnuradio_blocks/notch_lite_cc.h | 87 + .../gnuradio_blocks/pulse_blanking_cc.cc | 98 + .../gnuradio_blocks/pulse_blanking_cc.h | 70 + src/algorithms/libs/CMakeLists.txt | 288 +- .../libs/beidou_b1i_signal_replica.cc | 170 + .../libs/beidou_b1i_signal_replica.h | 55 + .../libs/beidou_b3i_signal_replica.cc | 237 + .../libs/beidou_b3i_signal_replica.h | 53 + .../libs/byte_x2_to_complex_byte.cc | 47 +- src/algorithms/libs/byte_x2_to_complex_byte.h | 54 +- src/algorithms/libs/cl.hpp | 12305 ------------- src/algorithms/libs/clFFT.h | 134 - .../libs/complex_byte_to_float_x2.cc | 41 +- .../libs/complex_byte_to_float_x2.h | 54 +- .../libs/complex_float_to_complex_byte.cc | 44 +- .../libs/complex_float_to_complex_byte.h | 53 +- src/algorithms/libs/conjugate_cc.cc | 47 + src/algorithms/libs/conjugate_cc.h | 56 + src/algorithms/libs/conjugate_ic.cc | 47 + src/algorithms/libs/conjugate_ic.h | 56 + src/algorithms/libs/conjugate_sc.cc | 46 + src/algorithms/libs/conjugate_sc.h | 56 + src/algorithms/libs/cshort_to_float_x2.cc | 41 +- src/algorithms/libs/cshort_to_float_x2.h | 54 +- src/algorithms/libs/fft_base_kernels.h | 277 - src/algorithms/libs/fft_execute.cc | 405 - src/algorithms/libs/fft_internal.h | 163 - src/algorithms/libs/fft_kernelstring.cc | 1257 -- src/algorithms/libs/fft_setup.cc | 402 - .../libs/galileo_e1_signal_processing.cc | 226 - .../libs/galileo_e1_signal_processing.h | 81 - .../libs/galileo_e1_signal_replica.cc | 242 + .../libs/galileo_e1_signal_replica.h | 80 + .../libs/galileo_e5_signal_processing.cc | 135 - .../libs/galileo_e5_signal_processing.h | 60 - .../libs/galileo_e5_signal_replica.cc | 216 + .../libs/galileo_e5_signal_replica.h | 81 + .../libs/galileo_e6_signal_replica.cc | 254 + .../libs/galileo_e6_signal_replica.h | 108 + src/algorithms/libs/geofunctions.cc | 766 + src/algorithms/libs/geofunctions.h | 184 + .../libs/glonass_l1_signal_replica.cc | 123 + .../libs/glonass_l1_signal_replica.h | 47 + .../libs/glonass_l2_signal_replica.cc | 123 + .../libs/glonass_l2_signal_replica.h | 47 + src/algorithms/libs/gnss_circular_deque.h | 145 + .../libs/gnss_sdr_create_directory.cc | 67 + .../libs/gnss_sdr_create_directory.h | 34 + src/algorithms/libs/gnss_sdr_fft.h | 65 + src/algorithms/libs/gnss_sdr_filesystem.h | 43 + src/algorithms/libs/gnss_sdr_flags.cc | 367 + src/algorithms/libs/gnss_sdr_flags.h | 187 + src/algorithms/libs/gnss_sdr_make_unique.h | 82 + .../libs/gnss_sdr_string_literals.cc | 42 + .../libs/gnss_sdr_string_literals.h | 48 + src/algorithms/libs/gnss_sdr_valve.cc | 75 - src/algorithms/libs/gnss_sdr_valve.h | 67 - src/algorithms/libs/gnss_signal_processing.cc | 180 - src/algorithms/libs/gnss_signal_processing.h | 72 - src/algorithms/libs/gnss_signal_replica.cc | 290 + src/algorithms/libs/gnss_signal_replica.h | 82 + src/algorithms/libs/gnss_time.h | 32 + src/algorithms/libs/gps_l2c_signal.cc | 133 - src/algorithms/libs/gps_l2c_signal.h | 48 - src/algorithms/libs/gps_l2c_signal_replica.cc | 108 + src/algorithms/libs/gps_l2c_signal_replica.h | 49 + src/algorithms/libs/gps_l5_signal_replica.cc | 298 + src/algorithms/libs/gps_l5_signal_replica.h | 58 + .../libs/gps_sdr_signal_processing.cc | 171 - .../libs/gps_sdr_signal_processing.h | 49 - src/algorithms/libs/gps_sdr_signal_replica.cc | 176 + src/algorithms/libs/gps_sdr_signal_replica.h | 53 + src/algorithms/libs/gsl/include/gsl/gsl | 22 + .../libs/gsl/include/gsl/gsl-lite.hpp | 5734 ++++++ src/algorithms/libs/item_type_helpers.cc | 375 + src/algorithms/libs/item_type_helpers.h | 85 + src/algorithms/libs/nco_lib.cc | 106 - src/algorithms/libs/nco_lib.h | 90 - src/algorithms/libs/opencl/cl.hpp | 13056 ++++++++++++++ src/algorithms/libs/opencl/clFFT.h | 98 + src/algorithms/libs/opencl/fft_base_kernels.h | 238 + src/algorithms/libs/opencl/fft_execute.cc | 404 + src/algorithms/libs/opencl/fft_internal.h | 129 + .../libs/opencl/fft_kernelstring.cc | 1456 ++ src/algorithms/libs/opencl/fft_setup.cc | 401 + src/algorithms/libs/pass_through.cc | 170 +- src/algorithms/libs/pass_through.h | 96 +- src/algorithms/libs/rtklib/CMakeLists.txt | 103 + src/algorithms/libs/rtklib/rtklib.h | 1320 ++ .../libs/rtklib/rtklib_conversions.cc | 842 + .../libs/rtklib/rtklib_conversions.h | 108 + .../libs/rtklib/rtklib_ephemeris.cc | 1188 ++ src/algorithms/libs/rtklib/rtklib_ephemeris.h | 75 + src/algorithms/libs/rtklib/rtklib_ionex.cc | 729 + src/algorithms/libs/rtklib/rtklib_ionex.h | 70 + src/algorithms/libs/rtklib/rtklib_lambda.cc | 428 + src/algorithms/libs/rtklib/rtklib_lambda.h | 75 + src/algorithms/libs/rtklib/rtklib_pntpos.cc | 1182 ++ src/algorithms/libs/rtklib/rtklib_pntpos.h | 145 + src/algorithms/libs/rtklib/rtklib_ppp.cc | 1905 ++ src/algorithms/libs/rtklib/rtklib_ppp.h | 164 + src/algorithms/libs/rtklib/rtklib_preceph.cc | 1009 ++ src/algorithms/libs/rtklib/rtklib_preceph.h | 90 + src/algorithms/libs/rtklib/rtklib_rtcm.cc | 470 + src/algorithms/libs/rtklib/rtklib_rtcm.h | 56 + src/algorithms/libs/rtklib/rtklib_rtcm2.cc | 709 + src/algorithms/libs/rtklib/rtklib_rtcm2.h | 60 + src/algorithms/libs/rtklib/rtklib_rtcm3.cc | 4265 +++++ src/algorithms/libs/rtklib/rtklib_rtcm3.h | 229 + src/algorithms/libs/rtklib/rtklib_rtkcmn.cc | 5349 ++++++ src/algorithms/libs/rtklib/rtklib_rtkcmn.h | 285 + src/algorithms/libs/rtklib/rtklib_rtkpos.cc | 2881 +++ src/algorithms/libs/rtklib/rtklib_rtkpos.h | 182 + src/algorithms/libs/rtklib/rtklib_rtksvr.cc | 1232 ++ src/algorithms/libs/rtklib/rtklib_rtksvr.h | 117 + src/algorithms/libs/rtklib/rtklib_sbas.cc | 1331 ++ src/algorithms/libs/rtklib/rtklib_sbas.h | 143 + src/algorithms/libs/rtklib/rtklib_solution.cc | 2449 +++ src/algorithms/libs/rtklib/rtklib_solution.h | 168 + src/algorithms/libs/rtklib/rtklib_stream.cc | 2864 +++ src/algorithms/libs/rtklib/rtklib_stream.h | 217 + src/algorithms/libs/rtklib/rtklib_tides.cc | 377 + src/algorithms/libs/rtklib/rtklib_tides.h | 72 + src/algorithms/libs/short_x2_to_cshort.cc | 53 +- src/algorithms/libs/short_x2_to_cshort.h | 54 +- src/algorithms/libs/trackingcmd.h | 43 + .../volk_gnsssdr/.gitignore | 18 + .../volk_gnsssdr/CMakeLists.txt | 608 +- .../volk_gnsssdr_module/volk_gnsssdr/COPYING | 674 + .../volk_gnsssdr/README.md | 206 + .../volk_gnsssdr/README.txt | 20 - .../volk_gnsssdr/apps/CMakeLists.txt | 153 +- .../volk_gnsssdr/apps/plot_best_vs_generic.py | 42 + .../apps/volk_gnsssdr-config-info.cc | 139 +- .../apps/volk_gnsssdr_option_helpers.cc | 277 + .../apps/volk_gnsssdr_option_helpers.h | 84 + .../volk_gnsssdr/apps/volk_gnsssdr_profile.cc | 530 +- .../volk_gnsssdr/apps/volk_gnsssdr_profile.h | 27 + .../cmake/CMakeParseArgumentsCopy.cmake | 138 - .../volk_gnsssdr/cmake/FindORC.cmake | 33 - .../volk_gnsssdr/cmake/GrPython.cmake | 234 - .../Modules/CMakeParseArgumentsCopy.cmake | 28 +- .../cmake/Modules/FindCPUFEATURES.cmake | 92 + .../cmake/Modules/FindFILESYSTEM.cmake | 263 + .../volk_gnsssdr/cmake/Modules/FindORC.cmake | 156 + .../cmake/Modules/VolkAddTest.cmake | 210 + .../cmake/Modules/VolkBoost.cmake | 54 + .../cmake/Modules/VolkBuildTypes.cmake | 265 + .../cmake/Modules/VolkGnsssdrConfig.cmake.in | 40 + .../Modules/VolkGnsssdrConfigVersion.cmake.in | 20 + .../cmake/Modules/VolkGnsssdrVersion.cmake | 103 + .../cmake/Modules/VolkPython.cmake | 343 + .../XcodeRemoveWarningDuplicates.cmake | 23 + .../volk_gnsssdr-config-info-manpage | 42 + .../Packaging/volk_gnsssdr_profile-manpage | 46 +- .../cmake/Toolchains/aarch64-linux-gnu.cmake | 39 + .../Toolchains/arm-linux-gnueabihf.cmake | 42 + .../arm_cortex_a15_hardfp_native.cmake | 15 + .../arm_cortex_a53_hardfp_native.cmake | 15 + .../arm_cortex_a72_hardfp_native.cmake | 15 + .../arm_cortex_a8_hardfp_native.cmake | 15 + .../arm_cortex_a8_softfp_native.cmake | 15 + .../arm_cortex_a9_hardfp_native.cmake | 15 + .../cmake/Toolchains/oe-sdk_cross.cmake | 19 + .../volk_gnsssdr/cmake/VolkBoost.cmake | 98 - .../volk_gnsssdr/cmake/VolkConfig.cmake | 26 - .../cmake/cmake_uninstall.cmake.in | 46 +- .../volk_gnsssdr/cmake/msvc/config.h | 63 +- .../volk_gnsssdr/cmake/msvc/inttypes.h | 301 - .../volk_gnsssdr/cmake/msvc/stdbool.h | 45 - .../volk_gnsssdr/cmake/msvc/stdint.h | 251 - .../volk_gnsssdr/cmake/msvc/sys/time.h | 77 + .../volk_gnsssdr/cpu_features/CMakeLists.txt | 312 + .../volk_gnsssdr/cpu_features/README.md | 262 + .../cmake/CpuFeaturesConfig.cmake.in | 6 + .../cmake/CpuFeaturesNdkCompatConfig.cmake.in | 6 + .../volk_gnsssdr/cpu_features/cmake/README.md | 39 + .../cmake/googletest.CMakeLists.txt.in | 18 + .../include/cpu_features_cache_info.h | 46 + .../include/cpu_features_macros.h | 381 + .../cpu_features/include/cpuinfo_aarch64.h | 340 + .../cpu_features/include/cpuinfo_arm.h | 112 + .../cpu_features/include/cpuinfo_loongarch.h | 70 + .../cpu_features/include/cpuinfo_mips.h | 66 + .../cpu_features/include/cpuinfo_ppc.h | 143 + .../cpu_features/include/cpuinfo_riscv.h | 64 + .../cpu_features/include/cpuinfo_s390x.h | 103 + .../cpu_features/include/cpuinfo_x86.h | 287 + .../cpu_features/include/internal/bit_utils.h | 30 + .../include/internal/cpuid_aarch64.h | 293 + .../cpu_features/include/internal/cpuid_x86.h | 26 + .../include/internal/filesystem.h | 27 + .../cpu_features/include/internal/hwcaps.h | 286 + .../include/internal/stack_line_reader.h | 39 + .../include/internal/string_view.h | 100 + .../include/internal/windows_utils.h | 58 + .../cpu_features/ndk_compat/CMakeLists.txt | 62 + .../cpu_features/ndk_compat/README.md | 16 + .../cpu_features/ndk_compat/cpu-features.c | 231 + .../cpu_features/ndk_compat/cpu-features.h | 303 + .../cpu_features/ndk_compat/ndk-compat-test.c | 17 + .../cpu_features/scripts/run_integration.sh | 367 + .../cpu_features/scripts/test_integration.sh | 82 + .../volk_gnsssdr/cpu_features/src/copy.inl | 9 + .../cpu_features/src/define_introspection.inl | 79 + .../src/define_introspection_and_hwcaps.inl | 15 + .../volk_gnsssdr/cpu_features/src/equals.inl | 12 + .../cpu_features/src/filesystem.c | 58 + .../volk_gnsssdr/cpu_features/src/hwcaps.c | 18 + .../cpu_features/src/hwcaps_freebsd.c | 45 + .../src/hwcaps_linux_or_android.c | 166 + .../src/impl_aarch64__base_implementation.inl | 130 + .../cpu_features/src/impl_aarch64_cpuid.c | 32 + .../cpu_features/src/impl_aarch64_freebsd.c | 39 + .../src/impl_aarch64_linux_or_android.c | 87 + .../src/impl_aarch64_macos_or_iphone.c | 81 + .../cpu_features/src/impl_aarch64_windows.c | 128 + .../src/impl_arm_linux_or_android.c | 234 + .../cpu_features/src/impl_loongarch_linux.c | 86 + .../src/impl_mips_linux_or_android.c | 95 + .../cpu_features/src/impl_ppc_linux.c | 168 + .../cpu_features/src/impl_riscv_linux.c | 110 + .../cpu_features/src/impl_s390x_linux.c | 120 + .../src/impl_x86__base_implementation.inl | 2060 +++ .../cpu_features/src/impl_x86_freebsd.c | 61 + .../src/impl_x86_linux_or_android.c | 51 + .../cpu_features/src/impl_x86_macos.c | 49 + .../cpu_features/src/impl_x86_windows.c | 50 + .../cpu_features/src/stack_line_reader.c | 140 + .../cpu_features/src/string_view.c | 203 + .../src/utils/list_cpu_features.c | 501 + .../cpu_features/test/CMakeLists.txt | 132 + .../cpu_features/test/bit_utils_test.cc | 48 + .../cpu_features/test/cpuinfo_aarch64_test.cc | 468 + .../cpu_features/test/cpuinfo_arm_test.cc | 378 + .../test/cpuinfo_loongarch_test.cc | 171 + .../cpu_features/test/cpuinfo_mips_test.cc | 172 + .../cpu_features/test/cpuinfo_ppc_test.cc | 126 + .../cpu_features/test/cpuinfo_riscv_test.cc | 173 + .../cpu_features/test/cpuinfo_s390x_test.cc | 79 + .../cpu_features/test/cpuinfo_x86_test.cc | 1863 ++ .../test/filesystem_for_testing.cc | 104 + .../test/filesystem_for_testing.h | 51 + .../cpu_features/test/hwcaps_for_testing.cc | 45 + .../cpu_features/test/hwcaps_for_testing.h | 20 + .../test/stack_line_reader_test.cc | 125 + .../cpu_features/test/string_view_test.cc | 208 + .../volk_gnsssdr/docs/CMakeLists.txt | 17 + .../volk_gnsssdr/docs/Doxyfile.in | 2666 +++ .../volk_gnsssdr/docs/DoxygenLayout.xml | 198 + .../volk_gnsssdr/docs/extending_volk.dox | 97 + .../images/VOLK_GNSSSDR_Usage_Example.png | Bin 0 -> 223367 bytes .../VOLK_GNSSSDR_Usage_Example.png.license | 5 + .../volk_gnsssdr/docs/kernels.dox | 32 + .../volk_gnsssdr/docs/main_page.dox | 25 + .../docs/terms_and_techniques.dox | 127 + .../volk_gnsssdr/docs/using_volk_gnsssdr.dox | 24 + .../volk_gnsssdr/gen/archs.xml | 170 +- .../volk_gnsssdr/gen/archs_old.xml | 296 + .../volk_gnsssdr/gen/machines.xml | 47 +- ...h_defs.py => volk_gnsssdr_arch_defs.py.in} | 36 +- .../gen/volk_gnsssdr_compile_utils.py | 52 +- .../gen/volk_gnsssdr_kernel_defs.py | 51 +- .../gen/volk_gnsssdr_machine_defs.py | 32 +- .../gen/volk_gnsssdr_tmpl_utils.py | 59 +- .../include/volk_gnsssdr/constants.h | 36 +- .../volk_gnsssdr/saturation_arithmetic.h | 39 + .../include/volk_gnsssdr/volk_gnsssdr_alloc.h | 73 + .../volk_gnsssdr_avx_intrinsics.h | 71 + .../volk_gnsssdr/volk_gnsssdr_common.h | 203 +- .../volk_gnsssdr/volk_gnsssdr_complex.h | 72 +- .../volk_gnsssdr/volk_gnsssdr_malloc.h | 57 +- .../volk_gnsssdr_neon_intrinsics.h | 260 + .../include/volk_gnsssdr/volk_gnsssdr_prefs.h | 45 +- .../volk_gnsssdr/volk_gnsssdr_sine_table.h | 1047 ++ .../volk_gnsssdr_sse3_intrinsics.h | 54 + .../volk_gnsssdr_sse_intrinsics.h | 38 + .../kernels/CommonMacros/CommonMacros.h | 174 - .../CommonMacros_16ic_cw_epl_corr_32fc.h | 76 - .../CommonMacros_8ic_cw_epl_corr_32fc.h | 115 - .../kernels/CommonMacros/README.txt | 34 - .../volk_gnsssdr/kernels/README.txt | 67 - ..._16sc_magnitude_32f_aligned16_orc_impl.orc | 31 + .../asm/orc/volk_gnsssdr_32f_x2_add_32f.orc | 11 + .../volk_gnsssdr_32fc_s32fc_multiply_32fc.orc | 24 + .../volk_gnsssdr_32fc_x2_multiply_32fc.orc | 24 + .../orc/volk_gnsssdr_8i_accumulator_s8i.orc | 24 + .../asm/orc/volk_gnsssdr_8i_x2_add_8i.orc | 22 + .../volk_gnsssdr_8ic_magnitude_squared_8i.orc | 30 + .../orc/volk_gnsssdr_8ic_x2_dot_prod_8ic.orc | 32 +- .../orc/volk_gnsssdr_8ic_x2_multiply_8ic.orc | 39 + ...volk_gnsssdr_8ic_x5_cw_epl_corr_8ic_x3.orc | 34 +- .../orc/volk_gnsssdr_8u_x2_multiply_8u.orc | 24 + .../volk_gnsssdr_16i_resamplerxnpuppet_16i.h | 267 + .../volk_gnsssdr_16i_xn_resampler_16i_xn.h | 601 + ...nsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h | 785 + ...dr_16ic_16i_rotator_dotprodxnpuppet_16ic.h | 213 + .../volk_gnsssdr_16ic_conjugate_16ic.h | 189 + .../volk_gnsssdr_16ic_convert_32fc.h | 268 + .../volk_gnsssdr_16ic_resampler_fast_16ic.h | 333 + ...lk_gnsssdr_16ic_resamplerfastpuppet_16ic.h | 73 + ..._gnsssdr_16ic_resamplerfastxnpuppet_16ic.h | 146 + ...volk_gnsssdr_16ic_resamplerxnpuppet_16ic.h | 268 + .../volk_gnsssdr_16ic_rotatorpuppet_16ic.h | 158 + .../volk_gnsssdr_16ic_s32fc_x2_rotator_16ic.h | 963 + .../volk_gnsssdr_16ic_x2_dot_prod_16ic.h | 558 + .../volk_gnsssdr_16ic_x2_dot_prod_16ic_xn.h | 725 + ...olk_gnsssdr_16ic_x2_dotprodxnpuppet_16ic.h | 250 + .../volk_gnsssdr_16ic_x2_multiply_16ic.h | 329 + ...gnsssdr_16ic_x2_rotator_dot_prod_16ic_xn.h | 1863 ++ ...sdr_16ic_x2_rotator_dotprodxnpuppet_16ic.h | 367 + ...volk_gnsssdr_16ic_x5_cw_epl_corr_32fc_x3.h | 461 - ...gnsssdr_16ic_x5_cw_epl_corr_TEST_32fc_x3.h | 1573 -- ...olk_gnsssdr_16ic_x7_cw_vepl_corr_32fc_x5.h | 595 - .../volk_gnsssdr_16ic_xn_resampler_16ic_xn.h | 600 + ...k_gnsssdr_16ic_xn_resampler_fast_16ic_xn.h | 375 + ..._32f_high_dynamics_resamplerxnpuppet_32f.h | 247 + .../volk_gnsssdr_32f_index_max_32u.h | 537 + .../volk_gnsssdr_32f_resamplerxnpuppet_32f.h | 263 + .../volk_gnsssdr_32f_sincos_32fc.h | 737 + ...dr_32f_xn_high_dynamics_resampler_32f_xn.h | 689 + .../volk_gnsssdr_32f_xn_resampler_32f_xn.h | 602 + ...2f_high_dynamic_rotator_dot_prod_32fc_xn.h | 151 + ...igh_dynamic_rotator_dotprodxnpuppet_32fc.h | 93 + ...nsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h | 486 + ...dr_32fc_32f_rotator_dotprodxnpuppet_32fc.h | 153 + .../volk_gnsssdr_32fc_convert_16ic.h | 471 +- .../volk_gnsssdr_32fc_convert_8ic.h | 482 +- ...volk_gnsssdr_32fc_resamplerxnpuppet_32fc.h | 323 + .../volk_gnsssdr_32fc_s32f_convert_8ic.h | 241 - ...ssdr_32fc_s32f_x4_update_local_code_32fc.h | 231 - ...gnsssdr_32fc_x2_rotator_dot_prod_32fc_xn.h | 791 + ...sdr_32fc_x2_rotator_dotprodxnpuppet_32fc.h | 239 + ...volk_gnsssdr_32fc_x5_cw_epl_corr_32fc_x3.h | 455 - ...olk_gnsssdr_32fc_x7_cw_vepl_corr_32fc_x5.h | 848 - .../volk_gnsssdr_32fc_xn_resampler_32fc_xn.h | 758 + .../volk_gnsssdr_64f_accumulator_64f.h | 322 +- .../volk_gnsssdr_8i_accumulator_s8i.h | 215 +- .../volk_gnsssdr_8i_index_max_16u.h | 944 +- .../volk_gnsssdr/volk_gnsssdr_8i_max_s8i.h | 325 +- .../volk_gnsssdr/volk_gnsssdr_8i_x2_add_8i.h | 204 +- .../volk_gnsssdr_8ic_conjugate_8ic.h | 300 +- .../volk_gnsssdr_8ic_magnitude_squared_8i.h | 265 +- .../volk_gnsssdr_8ic_s8ic_multiply_8ic.h | 273 - .../volk_gnsssdr_8ic_x2_dot_prod_8ic.h | 513 +- .../volk_gnsssdr_8ic_x2_multiply_8ic.h | 307 +- .../volk_gnsssdr_8ic_x5_cw_epl_corr_32fc_x3.h | 614 - .../volk_gnsssdr_8ic_x5_cw_epl_corr_8ic_x3.h | 874 - ...volk_gnsssdr_8ic_x7_cw_vepl_corr_32fc_x5.h | 797 - ...gnsssdr_8ic_x7_cw_vepl_corr_TEST_32fc_x5.h | 1518 -- ...gnsssdr_8ic_x7_cw_vepl_corr_safe_32fc_x5.h | 768 - ...sssdr_8ic_x7_cw_vepl_corr_unsafe_32fc_x5.h | 550 - .../volk_gnsssdr_8u_x2_multiply_8u.h | 279 +- .../volk_gnsssdr_s32f_sincos_32fc.h | 935 + .../volk_gnsssdr_s32f_sincospuppet_32fc.h | 101 + ...nsssdr_s32f_x2_update_local_carrier_32fc.h | 865 - .../volk_gnsssdr/lib/CMakeLists.txt | 755 +- .../volk_gnsssdr/lib/constants.c.in | 36 +- .../volk_gnsssdr/lib/gcc_x86_cpuid.h | 183 - .../volk_gnsssdr/lib/kernel_tests.h | 92 + .../lib/qa_16s_add_quad_aligned16.cc | 111 - .../lib/qa_16s_add_quad_aligned16.h | 36 - .../lib/qa_16s_branch_4_state_8_aligned16.cc | 123 - .../lib/qa_16s_branch_4_state_8_aligned16.h | 36 - ...qa_16s_permute_and_scalar_add_aligned16.cc | 101 - .../qa_16s_permute_and_scalar_add_aligned16.h | 36 - .../lib/qa_16s_quad_max_star_aligned16.cc | 82 - .../lib/qa_16s_quad_max_star_aligned16.h | 37 - .../lib/qa_32f_fm_detect_aligned16.cc | 86 - .../lib/qa_32f_fm_detect_aligned16.h | 36 - .../lib/qa_32f_index_max_aligned16.cc | 122 - .../lib/qa_32f_index_max_aligned16.h | 37 - .../lib/qa_32fc_index_max_aligned16.cc | 104 - .../lib/qa_32fc_index_max_aligned16.h | 36 - ...fc_power_spectral_density_32f_aligned16.cc | 87 - ...2fc_power_spectral_density_32f_aligned16.h | 36 - .../volk_gnsssdr/lib/qa_utils.cc | 1193 +- .../volk_gnsssdr/lib/qa_utils.h | 203 +- .../volk_gnsssdr/lib/testqa.cc | 191 +- .../volk_gnsssdr/lib/volk_gnsssdr_malloc.c | 164 +- .../volk_gnsssdr/lib/volk_gnsssdr_prefs.c | 110 +- .../lib/volk_gnsssdr_rank_archs.c | 87 +- .../lib/volk_gnsssdr_rank_archs.h | 48 +- ..._16sc_magnitude_32f_aligned16_orc_impl.orc | 43 - .../orc/volk_gnsssdr_32f_x2_add_32f.orc | 23 - .../volk_gnsssdr_32fc_s32fc_multiply_32fc.orc | 36 - .../volk_gnsssdr_32fc_x2_multiply_32fc.orc | 36 - .../orc/volk_gnsssdr_8i_accumulator_s8i.orc | 38 - .../orc/volk_gnsssdr_8i_x2_add_8i.orc | 36 - .../orc/volk_gnsssdr_8ic_conjugate_8ic.orc | 41 - .../volk_gnsssdr_8ic_magnitude_squared_8i.orc | 44 - .../volk_gnsssdr_8ic_s8ic_multiply_8ic.orc | 57 - .../orc/volk_gnsssdr_8ic_x2_multiply_8ic.orc | 57 - .../orc/volk_gnsssdr_8u_x2_multiply_8u.orc | 38 - .../volk_gnsssdr_modtool/CMakeLists.txt | 25 +- .../python/volk_gnsssdr_modtool/README | 16 +- .../python/volk_gnsssdr_modtool/__init__.py | 23 +- .../python/volk_gnsssdr_modtool/cfg.py | 46 +- .../volk_gnsssdr_modtool/volk_gnsssdr_modtool | 44 +- .../volk_gnsssdr_modtool_generate.py | 102 +- .../{ => tmpl}/volk_gnsssdr.pc.in | 5 +- .../volk_gnsssdr/tmpl/volk_gnsssdr.tmpl.c | 247 +- .../volk_gnsssdr/tmpl/volk_gnsssdr.tmpl.h | 49 +- .../tmpl/volk_gnsssdr_config_fixed.tmpl.h | 30 +- .../volk_gnsssdr/tmpl/volk_gnsssdr_cpu.tmpl.c | 199 +- .../volk_gnsssdr/tmpl/volk_gnsssdr_cpu.tmpl.h | 31 +- .../tmpl/volk_gnsssdr_cpu.tmpl.old.c | 257 + .../tmpl/volk_gnsssdr_machine_xxx.tmpl.c | 93 +- .../tmpl/volk_gnsssdr_machines.tmpl.c | 30 +- .../tmpl/volk_gnsssdr_machines.tmpl.h | 48 +- .../tmpl/volk_gnsssdr_typedefs.tmpl.h | 29 +- src/algorithms/observables/CMakeLists.txt | 21 +- .../observables/adapters/CMakeLists.txt | 80 +- .../adapters/galileo_e1_observables.cc | 101 - .../adapters/galileo_e1_observables.h | 92 - .../adapters/gps_l1_ca_observables.cc | 103 - .../adapters/gps_l1_ca_observables.h | 92 - .../adapters/hybrid_observables.cc | 112 +- .../observables/adapters/hybrid_observables.h | 90 +- .../observables/adapters/mixed_observables.cc | 94 - .../observables/adapters/mixed_observables.h | 91 - .../gnuradio_blocks/CMakeLists.txt | 125 +- .../galileo_e1_observables_cc.cc | 206 - .../galileo_e1_observables_cc.h | 83 - .../gps_l1_ca_observables_cc.cc | 201 - .../gps_l1_ca_observables_cc.h | 81 - .../gnuradio_blocks/hybrid_observables_cc.cc | 234 - .../gnuradio_blocks/hybrid_observables_cc.h | 83 - .../gnuradio_blocks/hybrid_observables_gs.cc | 868 + .../gnuradio_blocks/hybrid_observables_gs.h | 119 + .../gnuradio_blocks/mixed_observables_cc.cc | 206 - .../gnuradio_blocks/mixed_observables_cc.h | 80 - .../observables/libs/CMakeLists.txt | 38 + src/algorithms/observables/libs/obs_conf.cc | 29 + src/algorithms/observables/libs/obs_conf.h | 49 + src/algorithms/output_filter/CMakeLists.txt | 19 - .../output_filter/adapters/CMakeLists.txt | 37 - .../adapters/file_output_filter.cc | 105 - .../adapters/file_output_filter.h | 83 - .../adapters/null_sink_output_filter.cc | 105 - .../adapters/null_sink_output_filter.h | 88 - src/algorithms/resampler/CMakeLists.txt | 20 +- .../resampler/adapters/CMakeLists.txt | 94 +- .../adapters/direct_resampler_conditioner.cc | 93 +- .../adapters/direct_resampler_conditioner.h | 85 +- .../adapters/mmse_resampler_conditioner.cc | 139 + .../adapters/mmse_resampler_conditioner.h | 99 + .../resampler/gnuradio_blocks/CMakeLists.txt | 96 +- .../direct_resampler_conditioner_cb.cc | 151 +- .../direct_resampler_conditioner_cb.h | 99 +- .../direct_resampler_conditioner_cc.cc | 93 +- .../direct_resampler_conditioner_cc.h | 103 +- .../direct_resampler_conditioner_cs.cc | 149 +- .../direct_resampler_conditioner_cs.h | 100 +- .../signal_generator/CMakeLists.txt | 18 +- .../signal_generator/adapters/CMakeLists.txt | 91 +- .../adapters/signal_generator.cc | 171 +- .../adapters/signal_generator.h | 99 +- .../gnuradio_blocks/CMakeLists.txt | 91 +- .../gnuradio_blocks/signal_generator_c.cc | 655 +- .../gnuradio_blocks/signal_generator_c.h | 179 +- src/algorithms/signal_source/CMakeLists.txt | 18 +- .../signal_source/adapters/CMakeLists.txt | 456 +- .../adapters/ad936x_custom_signal_source.cc | 555 + .../adapters/ad936x_custom_signal_source.h | 129 + .../adrv9361_z7035_signal_source_fpga.cc | 399 + .../adrv9361_z7035_signal_source_fpga.h | 137 + .../adapters/custom_udp_signal_source.cc | 159 + .../adapters/custom_udp_signal_source.h | 84 + .../adapters/dma_signal_source_fpga.cc | 581 + .../adapters/dma_signal_source_fpga.h | 118 + .../adapters/fifo_signal_source.cc | 97 + .../adapters/fifo_signal_source.h | 80 + .../adapters/file_signal_source.cc | 358 +- .../adapters/file_signal_source.h | 115 +- .../adapters/file_source_base.cc | 589 + .../signal_source/adapters/file_source_base.h | 186 + .../adapters/file_timestamp_signal_source.cc | 127 + .../adapters/file_timestamp_signal_source.h | 63 + .../adapters/flexiband_signal_source.cc | 136 +- .../adapters/flexiband_signal_source.h | 121 +- .../adapters/fmcomms2_signal_source.cc | 455 + .../adapters/fmcomms2_signal_source.h | 128 + .../adapters/fmcomms5_signal_source_fpga.cc | 344 + .../adapters/fmcomms5_signal_source_fpga.h | 130 + .../four_bit_cpx_file_signal_source.cc | 156 + .../four_bit_cpx_file_signal_source.h | 75 + .../adapters/gen_signal_source.cc | 67 +- .../adapters/gen_signal_source.h | 81 +- .../adapters/gn3s_signal_source.cc | 124 - .../adapters/gn3s_signal_source.h | 90 - .../adapters/ion_gsms_signal_source.cc | 239 + .../adapters/ion_gsms_signal_source.h | 85 + .../adapters/labsat_signal_source.cc | 241 + .../adapters/labsat_signal_source.h | 86 + .../adapters/limesdr_signal_source.cc | 246 + .../adapters/limesdr_signal_source.h | 95 + .../max2771_evkit_signal_source_fpga.cc | 464 + .../max2771_evkit_signal_source_fpga.h | 162 + .../multichannel_file_signal_source.cc | 290 + .../multichannel_file_signal_source.h | 114 + .../adapters/nsr_file_signal_source.cc | 343 +- .../adapters/nsr_file_signal_source.h | 122 +- .../adapters/osmosdr_signal_source.cc | 219 +- .../adapters/osmosdr_signal_source.h | 121 +- .../adapters/plutosdr_signal_source.cc | 234 + .../adapters/plutosdr_signal_source.h | 110 + .../adapters/raw_array_signal_source.cc | 90 +- .../adapters/raw_array_signal_source.h | 102 +- .../adapters/rtl_tcp_signal_source.cc | 249 +- .../adapters/rtl_tcp_signal_source.h | 134 +- .../adapters/signal_source_base.cc | 101 + .../adapters/signal_source_base.h | 57 + .../adapters/spir_file_signal_source.cc | 347 +- .../adapters/spir_file_signal_source.h | 126 +- .../spir_gss6450_file_signal_source.cc | 316 + .../spir_gss6450_file_signal_source.h | 124 + .../two_bit_cpx_file_signal_source.cc | 90 + .../adapters/two_bit_cpx_file_signal_source.h | 69 + .../two_bit_packed_file_signal_source.cc | 154 + .../two_bit_packed_file_signal_source.h | 90 + .../adapters/uhd_signal_source.cc | 251 +- .../adapters/uhd_signal_source.h | 129 +- .../adapters/zmq_signal_source.cc | 102 + .../adapters/zmq_signal_source.h | 80 + .../gnuradio_blocks/CMakeLists.txt | 201 +- .../gnuradio_blocks/ad936x_iio_source.cc | 380 + .../gnuradio_blocks/ad936x_iio_source.h | 159 + .../gnuradio_blocks/fifo_reader.cc | 125 + .../gnuradio_blocks/fifo_reader.h | 102 + .../gr_complex_ip_packet_source.cc | 545 + .../gr_complex_ip_packet_source.h | 106 + .../signal_source/gnuradio_blocks/ion_gsms.cc | 202 + .../signal_source/gnuradio_blocks/ion_gsms.h | 74 + .../gnuradio_blocks/labsat23_source.cc | 1121 ++ .../gnuradio_blocks/labsat23_source.h | 117 + .../rtl_tcp_signal_source_c.cc | 567 +- .../gnuradio_blocks/rtl_tcp_signal_source_c.h | 137 +- .../gnuradio_blocks/unpack_2bit_samples.cc | 210 + .../gnuradio_blocks/unpack_2bit_samples.h | 117 + .../unpack_byte_2bit_cpx_samples.cc | 93 + .../unpack_byte_2bit_cpx_samples.h | 60 + .../unpack_byte_2bit_samples.cc | 67 +- .../unpack_byte_2bit_samples.h | 54 +- .../unpack_byte_4bit_samples.cc | 67 + .../unpack_byte_4bit_samples.h | 58 + .../unpack_intspir_1bit_samples.cc | 82 +- .../unpack_intspir_1bit_samples.h | 55 +- .../unpack_short_byte_samples.cc | 55 + .../unpack_short_byte_samples.h | 58 + .../unpack_spir_gss6450_samples.cc | 122 + .../unpack_spir_gss6450_samples.h | 55 + .../signal_source/libs/CMakeLists.txt | 171 +- .../signal_source/libs/ad9361_manager.cc | 1286 ++ .../signal_source/libs/ad9361_manager.h | 153 + .../signal_source/libs/ad936x_iio_custom.cc | 1301 ++ .../signal_source/libs/ad936x_iio_custom.h | 147 + .../signal_source/libs/ad936x_iio_samples.h | 46 + .../signal_source/libs/fpga_buffer_monitor.cc | 274 + .../signal_source/libs/fpga_buffer_monitor.h | 105 + .../signal_source/libs/fpga_dma-proxy.cc | 89 + .../signal_source/libs/fpga_dma-proxy.h | 86 + .../libs/fpga_dynamic_bit_selection.cc | 153 + .../libs/fpga_dynamic_bit_selection.h | 88 + .../signal_source/libs/fpga_spidev.cc | 131 + .../signal_source/libs/fpga_spidev.h | 62 + .../signal_source/libs/fpga_switch.cc | 114 + .../signal_source/libs/fpga_switch.h | 73 + .../signal_source/libs/gnss_sdr_timestamp.cc | 130 + .../signal_source/libs/gnss_sdr_timestamp.h | 82 + .../signal_source/libs/gnss_sdr_valve.cc | 101 + .../signal_source/libs/gnss_sdr_valve.h | 89 + .../signal_source/libs/ion_gsms_chunk_data.cc | 271 + .../signal_source/libs/ion_gsms_chunk_data.h | 188 + .../libs/ion_gsms_chunk_unpacking_ctx.h | 184 + .../libs/ion_gsms_stream_encodings.h | 170 + .../signal_source/libs/pps_samplestamp.h | 28 + src/algorithms/signal_source/libs/ppstcprx.cc | 157 + src/algorithms/signal_source/libs/ppstcprx.h | 44 + .../signal_source/libs/rtl_tcp_commands.cc | 53 +- .../signal_source/libs/rtl_tcp_commands.h | 49 +- .../signal_source/libs/rtl_tcp_dongle_info.cc | 191 +- .../signal_source/libs/rtl_tcp_dongle_info.h | 74 +- .../telemetry_decoder/CMakeLists.txt | 20 +- .../telemetry_decoder/adapters/CMakeLists.txt | 112 +- .../adapters/beidou_b1i_telemetry_decoder.cc | 90 + .../adapters/beidou_b1i_telemetry_decoder.h | 94 + .../adapters/beidou_b3i_telemetry_decoder.cc | 88 + .../adapters/beidou_b3i_telemetry_decoder.h | 88 + .../adapters/galileo_e1b_telemetry_decoder.cc | 104 +- .../adapters/galileo_e1b_telemetry_decoder.h | 98 +- .../adapters/galileo_e5a_telemetry_decoder.cc | 105 +- .../adapters/galileo_e5a_telemetry_decoder.h | 101 +- .../adapters/galileo_e5b_telemetry_decoder.cc | 94 + .../adapters/galileo_e5b_telemetry_decoder.h | 112 + .../adapters/galileo_e6_telemetry_decoder.cc | 93 + .../adapters/galileo_e6_telemetry_decoder.h | 111 + .../glonass_l1_ca_telemetry_decoder.cc | 91 + .../glonass_l1_ca_telemetry_decoder.h | 93 + .../glonass_l2_ca_telemetry_decoder.cc | 90 + .../glonass_l2_ca_telemetry_decoder.h | 92 + .../adapters/gps_l1_ca_telemetry_decoder.cc | 102 +- .../adapters/gps_l1_ca_telemetry_decoder.h | 100 +- .../adapters/gps_l2_m_telemetry_decoder.cc | 124 - .../adapters/gps_l2_m_telemetry_decoder.h | 96 - .../adapters/gps_l2c_telemetry_decoder.cc | 90 + .../adapters/gps_l2c_telemetry_decoder.h | 94 + .../adapters/gps_l5_telemetry_decoder.cc | 90 + .../adapters/gps_l5_telemetry_decoder.h | 95 + .../adapters/sbas_l1_telemetry_decoder.cc | 105 +- .../adapters/sbas_l1_telemetry_decoder.h | 96 +- .../gnuradio_blocks/CMakeLists.txt | 158 +- .../beidou_b1i_telemetry_decoder_gs.cc | 716 + .../beidou_b1i_telemetry_decoder_gs.h | 134 + .../beidou_b3i_telemetry_decoder_gs.cc | 740 + .../beidou_b3i_telemetry_decoder_gs.h | 130 + .../galileo_e1b_telemetry_decoder_cc.cc | 581 - .../galileo_e1b_telemetry_decoder_cc.h | 159 - .../galileo_e5a_telemetry_decoder_cc.cc | 646 - .../galileo_e5a_telemetry_decoder_cc.h | 154 - .../galileo_telemetry_decoder_gs.cc | 1455 ++ .../galileo_telemetry_decoder_gs.h | 163 + .../glonass_l1_ca_telemetry_decoder_gs.cc | 538 + .../glonass_l1_ca_telemetry_decoder_gs.h | 128 + .../glonass_l2_ca_telemetry_decoder_gs.cc | 541 + .../glonass_l2_ca_telemetry_decoder_gs.h | 121 + .../gps_l1_ca_telemetry_decoder_cc.cc | 415 - .../gps_l1_ca_telemetry_decoder_cc.h | 152 - .../gps_l1_ca_telemetry_decoder_gs.cc | 695 + .../gps_l1_ca_telemetry_decoder_gs.h | 126 + .../gps_l2_m_telemetry_decoder_cc.cc | 527 - .../gps_l2_m_telemetry_decoder_cc.h | 167 - .../gps_l2c_telemetry_decoder_gs.cc | 378 + .../gps_l2c_telemetry_decoder_gs.h | 112 + .../gps_l5_telemetry_decoder_gs.cc | 397 + .../gps_l5_telemetry_decoder_gs.h | 109 + .../sbas_l1_telemetry_decoder_cc.cc | 549 - .../sbas_l1_telemetry_decoder_cc.h | 178 - .../sbas_l1_telemetry_decoder_gs.cc | 482 + .../sbas_l1_telemetry_decoder_gs.h | 162 + .../telemetry_decoder/libs/CMakeLists.txt | 101 +- .../telemetry_decoder/libs/convolutional.h | 661 - .../libs/gps_l1_ca_subframe_fsm.cc | 318 - .../libs/gps_l1_ca_subframe_fsm.h | 114 - .../libs/libswiftcnav/CMakeLists.txt | 49 + .../libs/libswiftcnav/bits.c | 297 + .../libs/libswiftcnav/bits.h | 50 + .../libs/libswiftcnav/cnav_msg.c | 479 + .../libs/libswiftcnav/cnav_msg.h | 110 + .../telemetry_decoder/libs/libswiftcnav/edc.c | 136 + .../telemetry_decoder/libs/libswiftcnav/edc.h | 40 + .../telemetry_decoder/libs/libswiftcnav/fec.h | 66 + .../libs/libswiftcnav/swift_common.h | 46 + .../libs/libswiftcnav/viterbi27.c | 249 + .../telemetry_decoder/libs/tlm_conf.cc | 42 + .../telemetry_decoder/libs/tlm_conf.h | 53 + .../telemetry_decoder/libs/tlm_crc_stats.cc | 158 + .../telemetry_decoder/libs/tlm_crc_stats.h | 66 + .../telemetry_decoder/libs/tlm_utils.cc | 138 + .../telemetry_decoder/libs/tlm_utils.h | 33 + .../telemetry_decoder/libs/viterbi_decoder.cc | 724 +- .../telemetry_decoder/libs/viterbi_decoder.h | 188 +- .../libs/viterbi_decoder_sbas.cc | 568 + .../libs/viterbi_decoder_sbas.h | 123 + src/algorithms/tracking/CMakeLists.txt | 20 +- .../tracking/adapters/CMakeLists.txt | 187 +- .../adapters/beidou_b1i_dll_pll_tracking.cc | 157 + .../adapters/beidou_b1i_dll_pll_tracking.h | 102 + .../adapters/beidou_b3i_dll_pll_tracking.cc | 149 + .../adapters/beidou_b3i_dll_pll_tracking.h | 102 + .../galileo_e1_dll_pll_veml_tracking.cc | 184 +- .../galileo_e1_dll_pll_veml_tracking.h | 98 +- .../galileo_e1_dll_pll_veml_tracking_fpga.cc | 263 + .../galileo_e1_dll_pll_veml_tracking_fpga.h | 149 + .../galileo_e1_tcp_connector_tracking.cc | 201 +- .../galileo_e1_tcp_connector_tracking.h | 96 +- .../adapters/galileo_e5a_dll_pll_tracking.cc | 192 +- .../adapters/galileo_e5a_dll_pll_tracking.h | 96 +- .../galileo_e5a_dll_pll_tracking_fpga.cc | 268 + .../galileo_e5a_dll_pll_tracking_fpga.h | 141 + .../adapters/galileo_e5b_dll_pll_tracking.cc | 155 + .../adapters/galileo_e5b_dll_pll_tracking.h | 119 + .../adapters/galileo_e6_dll_pll_tracking.cc | 150 + .../adapters/galileo_e6_dll_pll_tracking.h | 114 + .../galileo_volk_e1_dll_pll_veml_tracking.cc | 164 - .../galileo_volk_e1_dll_pll_veml_tracking.h | 119 - .../glonass_l1_ca_dll_pll_c_aid_tracking.cc | 251 + .../glonass_l1_ca_dll_pll_c_aid_tracking.h | 108 + .../glonass_l1_ca_dll_pll_tracking.cc | 170 + .../adapters/glonass_l1_ca_dll_pll_tracking.h | 105 + .../glonass_l2_ca_dll_pll_c_aid_tracking.cc | 247 + .../glonass_l2_ca_dll_pll_c_aid_tracking.h | 107 + .../glonass_l2_ca_dll_pll_tracking.cc | 167 + .../adapters/glonass_l2_ca_dll_pll_tracking.h | 104 + .../gps_l1_ca_dll_fll_pll_tracking.cc | 163 - .../adapters/gps_l1_ca_dll_fll_pll_tracking.h | 99 - .../gps_l1_ca_dll_pll_optim_tracking.cc | 160 - .../gps_l1_ca_dll_pll_optim_tracking.h | 119 - .../adapters/gps_l1_ca_dll_pll_tracking.cc | 182 +- .../adapters/gps_l1_ca_dll_pll_tracking.h | 94 +- .../gps_l1_ca_dll_pll_tracking_fpga.cc | 228 + .../gps_l1_ca_dll_pll_tracking_fpga.h | 146 + .../gps_l1_ca_dll_pll_tracking_gpu.cc | 164 + .../adapters/gps_l1_ca_dll_pll_tracking_gpu.h | 103 + .../adapters/gps_l1_ca_gaussian_tracking.cc | 173 + .../adapters/gps_l1_ca_gaussian_tracking.h | 106 + .../adapters/gps_l1_ca_kf_tracking.cc | 156 + .../tracking/adapters/gps_l1_ca_kf_tracking.h | 96 + .../gps_l1_ca_tcp_connector_tracking.cc | 164 +- .../gps_l1_ca_tcp_connector_tracking.h | 98 +- .../adapters/gps_l2_m_dll_pll_tracking.cc | 172 +- .../adapters/gps_l2_m_dll_pll_tracking.h | 96 +- .../gps_l2_m_dll_pll_tracking_fpga.cc | 187 + .../adapters/gps_l2_m_dll_pll_tracking_fpga.h | 111 + .../adapters/gps_l5_dll_pll_tracking.cc | 152 + .../adapters/gps_l5_dll_pll_tracking.h | 103 + .../adapters/gps_l5_dll_pll_tracking_fpga.cc | 279 + .../adapters/gps_l5_dll_pll_tracking_fpga.h | 149 + .../tracking/gnuradio_blocks/CMakeLists.txt | 228 +- .../gnuradio_blocks/dll_pll_veml_tracking.cc | 2099 +++ .../gnuradio_blocks/dll_pll_veml_tracking.h | 212 + .../dll_pll_veml_tracking_fpga.cc | 2029 +++ .../dll_pll_veml_tracking_fpga.h | 249 + .../galileo_e1_dll_pll_veml_tracking_cc.cc | 623 - .../galileo_e1_dll_pll_veml_tracking_cc.h | 195 - .../galileo_e1_tcp_connector_tracking_cc.cc | 973 +- .../galileo_e1_tcp_connector_tracking_cc.h | 178 +- .../galileo_e5a_dll_pll_tracking_cc.cc | 867 - .../galileo_e5a_dll_pll_tracking_cc.h | 216 - ...alileo_volk_e1_dll_pll_veml_tracking_cc.cc | 670 - ...galileo_volk_e1_dll_pll_veml_tracking_cc.h | 211 - ...glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc | 908 + .../glonass_l1_ca_dll_pll_c_aid_tracking_cc.h | 205 + ...glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc | 910 + .../glonass_l1_ca_dll_pll_c_aid_tracking_sc.h | 206 + .../glonass_l1_ca_dll_pll_tracking_cc.cc | 733 + .../glonass_l1_ca_dll_pll_tracking_cc.h | 173 + ...glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc | 903 + .../glonass_l2_ca_dll_pll_c_aid_tracking_cc.h | 202 + ...glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc | 907 + .../glonass_l2_ca_dll_pll_c_aid_tracking_sc.h | 201 + .../glonass_l2_ca_dll_pll_tracking_cc.cc | 735 + .../glonass_l2_ca_dll_pll_tracking_cc.h | 170 + .../gps_l1_ca_dll_fll_pll_tracking_cc.cc | 691 - .../gps_l1_ca_dll_fll_pll_tracking_cc.h | 210 - .../gps_l1_ca_dll_pll_optim_tracking_cc.cc | 638 - .../gps_l1_ca_dll_pll_optim_tracking_cc.h | 185 - .../gps_l1_ca_dll_pll_tracking_cc.cc | 667 - .../gps_l1_ca_dll_pll_tracking_cc.h | 188 - .../gps_l1_ca_dll_pll_tracking_gpu_cc.cc | 591 + .../gps_l1_ca_dll_pll_tracking_gpu_cc.h | 173 + .../gps_l1_ca_gaussian_tracking_cc.cc | 920 + .../gps_l1_ca_gaussian_tracking_cc.h | 221 + .../gps_l1_ca_tcp_connector_tracking_cc.cc | 1024 +- .../gps_l1_ca_tcp_connector_tracking_cc.h | 235 +- .../gps_l2_m_dll_pll_tracking_cc.cc | 672 - .../gps_l2_m_dll_pll_tracking_cc.h | 186 - .../tracking/gnuradio_blocks/kf_tracking.cc | 2087 +++ .../tracking/gnuradio_blocks/kf_tracking.h | 236 + src/algorithms/tracking/libs/CMakeLists.txt | 199 +- .../tracking/libs/bayesian_estimation.cc | 180 + .../tracking/libs/bayesian_estimation.h | 88 + src/algorithms/tracking/libs/correlator.cc | 153 - src/algorithms/tracking/libs/correlator.h | 74 - .../tracking/libs/cpu_multicorrelator.cc | 116 + .../tracking/libs/cpu_multicorrelator.h | 63 + .../tracking/libs/cpu_multicorrelator_16sc.cc | 116 + .../tracking/libs/cpu_multicorrelator_16sc.h | 61 + .../libs/cpu_multicorrelator_real_codes.cc | 167 + .../libs/cpu_multicorrelator_real_codes.h | 66 + .../tracking/libs/cuda_multicorrelator.cu | 382 + .../tracking/libs/cuda_multicorrelator.h | 166 + src/algorithms/tracking/libs/dll_pll_conf.cc | 151 + src/algorithms/tracking/libs/dll_pll_conf.h | 88 + .../tracking/libs/dll_pll_conf_fpga.cc | 149 + .../tracking/libs/dll_pll_conf_fpga.h | 105 + .../tracking/libs/exponential_smoother.cc | 113 + .../tracking/libs/exponential_smoother.h | 71 + .../tracking/libs/fpga_multicorrelator.cc | 524 + .../tracking/libs/fpga_multicorrelator.h | 255 + src/algorithms/tracking/libs/kf_conf.cc | 152 + src/algorithms/tracking/libs/kf_conf.h | 86 + .../tracking/libs/lock_detectors.cc | 125 +- src/algorithms/tracking/libs/lock_detectors.h | 89 +- .../tracking/libs/nonlinear_tracking.cc | 362 + .../tracking/libs/nonlinear_tracking.h | 115 + .../tracking/libs/tcp_communication.cc | 175 +- .../tracking/libs/tcp_communication.h | 59 +- .../tracking/libs/tcp_packet_data.cc | 40 - .../tracking/libs/tcp_packet_data.h | 49 +- .../tracking/libs/tracking_2nd_DLL_filter.cc | 66 +- .../tracking/libs/tracking_2nd_DLL_filter.h | 73 +- .../tracking/libs/tracking_2nd_PLL_filter.cc | 68 +- .../tracking/libs/tracking_2nd_PLL_filter.h | 73 +- .../tracking/libs/tracking_FLL_PLL_filter.cc | 92 +- .../tracking/libs/tracking_FLL_PLL_filter.h | 68 +- .../tracking/libs/tracking_discriminators.cc | 123 +- .../tracking/libs/tracking_discriminators.h | 160 +- .../tracking/libs/tracking_loop_filter.cc | 272 + .../tracking/libs/tracking_loop_filter.h | 94 + .../tracking/libs/volk_cw_epl_corr.h | 202 - src/core/CMakeLists.txt | 20 +- src/core/interfaces/acquisition_interface.h | 60 +- src/core/interfaces/channel_interface.h | 54 +- src/core/interfaces/configuration_interface.h | 60 +- src/core/interfaces/gnss_block_interface.h | 115 +- src/core/interfaces/observables_interface.h | 39 +- src/core/interfaces/pvt_interface.h | 56 +- src/core/interfaces/signal_source_interface.h | 70 + .../interfaces/telemetry_decoder_interface.h | 41 +- src/core/interfaces/tracking_interface.h | 44 +- src/core/libs/CMakeLists.txt | 227 +- src/core/libs/INIReader.cc | 199 +- src/core/libs/INIReader.h | 161 +- src/core/libs/channel_event.cc | 28 + src/core/libs/channel_event.h | 48 + src/core/libs/channel_status_msg_receiver.cc | 128 + src/core/libs/channel_status_msg_receiver.h | 70 + src/core/libs/command_event.cc | 28 + src/core/libs/command_event.h | 48 + src/core/libs/galileo_e6_has_msg_receiver.cc | 1060 ++ src/core/libs/galileo_e6_has_msg_receiver.h | 123 + src/core/libs/galileo_tow_map.cc | 103 + src/core/libs/galileo_tow_map.h | 54 + src/core/libs/gnss_crypto.cc | 1919 ++ src/core/libs/gnss_crypto.h | 103 + src/core/libs/gnss_sdr_fpga_sample_counter.cc | 299 + src/core/libs/gnss_sdr_fpga_sample_counter.h | 92 + src/core/libs/gnss_sdr_sample_counter.cc | 195 + src/core/libs/gnss_sdr_sample_counter.h | 82 + src/core/libs/gnss_sdr_supl_client.cc | 1013 +- src/core/libs/gnss_sdr_supl_client.h | 251 +- src/core/libs/gnss_sdr_time_counter.cc | 112 + src/core/libs/gnss_sdr_time_counter.h | 65 + src/core/libs/ini.cc | 371 +- src/core/libs/ini.h | 162 +- src/core/libs/nav_message_monitor.cc | 88 + src/core/libs/nav_message_monitor.h | 60 + src/core/libs/nav_message_packet.h | 86 + src/core/libs/nav_message_udp_sink.cc | 74 + src/core/libs/nav_message_udp_sink.h | 56 + src/core/libs/osnma_helper.cc | 175 + src/core/libs/osnma_helper.h | 51 + src/core/libs/osnma_msg_receiver.cc | 2080 +++ src/core/libs/osnma_msg_receiver.h | 176 + src/core/libs/osnma_nav_data_manager.cc | 322 + src/core/libs/osnma_nav_data_manager.h | 59 + src/core/libs/serdes_nav_message.h | 118 + src/core/libs/string_converter.cc | 142 +- src/core/libs/string_converter.h | 53 +- src/core/libs/supl/CMakeLists.txt | 110 +- src/core/libs/supl/asn-rrlp/Accuracy.c | 235 +- src/core/libs/supl/asn-rrlp/Accuracy.h | 40 +- src/core/libs/supl/asn-rrlp/AccuracyOpt.c | 87 +- src/core/libs/supl/asn-rrlp/AccuracyOpt.h | 33 +- src/core/libs/supl/asn-rrlp/AcquisAssist.c | 102 +- src/core/libs/supl/asn-rrlp/AcquisAssist.h | 37 +- src/core/libs/supl/asn-rrlp/AcquisElement.c | 493 +- src/core/libs/supl/asn-rrlp/AcquisElement.h | 55 +- .../libs/supl/asn-rrlp/AddionalAngleFields.c | 216 +- .../libs/supl/asn-rrlp/AddionalAngleFields.h | 35 +- .../supl/asn-rrlp/AddionalDopplerFields.c | 216 +- .../supl/asn-rrlp/AddionalDopplerFields.h | 35 +- .../supl/asn-rrlp/AdditionalAssistanceData.c | 128 +- .../supl/asn-rrlp/AdditionalAssistanceData.h | 47 +- .../supl/asn-rrlp/AdditionalDopplerFields.c | 217 +- .../supl/asn-rrlp/AdditionalDopplerFields.h | 35 +- src/core/libs/supl/asn-rrlp/AlertFlag.c | 235 +- src/core/libs/supl/asn-rrlp/AlertFlag.h | 40 +- .../libs/supl/asn-rrlp/Almanac-KeplerianSet.c | 808 +- .../libs/supl/asn-rrlp/Almanac-KeplerianSet.h | 51 +- src/core/libs/supl/asn-rrlp/Almanac.c | 157 +- src/core/libs/supl/asn-rrlp/Almanac.h | 37 +- src/core/libs/supl/asn-rrlp/AlmanacElement.c | 898 +- src/core/libs/supl/asn-rrlp/AlmanacElement.h | 55 +- src/core/libs/supl/asn-rrlp/AntiSpoofFlag.c | 242 +- src/core/libs/supl/asn-rrlp/AntiSpoofFlag.h | 40 +- .../supl/asn-rrlp/AssistBTSData-R98-ExpOTD.c | 103 +- .../supl/asn-rrlp/AssistBTSData-R98-ExpOTD.h | 37 +- src/core/libs/supl/asn-rrlp/AssistBTSData.c | 154 +- src/core/libs/supl/asn-rrlp/AssistBTSData.h | 47 +- src/core/libs/supl/asn-rrlp/AssistanceData.c | 215 +- src/core/libs/supl/asn-rrlp/AssistanceData.h | 81 +- src/core/libs/supl/asn-rrlp/BCCHCarrier.c | 240 +- src/core/libs/supl/asn-rrlp/BCCHCarrier.h | 40 +- src/core/libs/supl/asn-rrlp/BIT_STRING.c | 189 - src/core/libs/supl/asn-rrlp/BIT_STRING.h | 33 - src/core/libs/supl/asn-rrlp/BOOLEAN.c | 284 - src/core/libs/supl/asn-rrlp/BOOLEAN.h | 36 - src/core/libs/supl/asn-rrlp/BSIC.c | 231 +- src/core/libs/supl/asn-rrlp/BSIC.h | 40 +- src/core/libs/supl/asn-rrlp/BSICAndCarrier.c | 101 +- src/core/libs/supl/asn-rrlp/BSICAndCarrier.h | 35 +- src/core/libs/supl/asn-rrlp/BTSPosition.c | 235 +- src/core/libs/supl/asn-rrlp/BTSPosition.h | 40 +- .../libs/supl/asn-rrlp/BadSignalElement.c | 161 +- .../libs/supl/asn-rrlp/BadSignalElement.h | 35 +- src/core/libs/supl/asn-rrlp/BitNumber.c | 235 +- src/core/libs/supl/asn-rrlp/BitNumber.h | 40 +- .../libs/supl/asn-rrlp/CalcAssistanceBTS.c | 101 +- .../libs/supl/asn-rrlp/CalcAssistanceBTS.h | 35 +- src/core/libs/supl/asn-rrlp/CellID.c | 231 +- src/core/libs/supl/asn-rrlp/CellID.h | 40 +- src/core/libs/supl/asn-rrlp/CellIDAndLAC.c | 100 +- src/core/libs/supl/asn-rrlp/CellIDAndLAC.h | 37 +- src/core/libs/supl/asn-rrlp/ControlHeader.c | 222 +- src/core/libs/supl/asn-rrlp/ControlHeader.h | 83 +- .../libs/supl/asn-rrlp/DGANSSSgnElement.c | 377 +- .../libs/supl/asn-rrlp/DGANSSSgnElement.h | 41 +- src/core/libs/supl/asn-rrlp/DGPSCorrections.c | 231 +- src/core/libs/supl/asn-rrlp/DGPSCorrections.h | 39 +- src/core/libs/supl/asn-rrlp/ENUMERATED.c | 71 - src/core/libs/supl/asn-rrlp/ENUMERATED.h | 25 - src/core/libs/supl/asn-rrlp/EOTDQuality.c | 216 +- src/core/libs/supl/asn-rrlp/EOTDQuality.h | 35 +- .../libs/supl/asn-rrlp/EnvironmentCharacter.c | 239 +- .../libs/supl/asn-rrlp/EnvironmentCharacter.h | 59 +- .../asn-rrlp/EphemerisSubframe1Reserved.c | 364 +- .../asn-rrlp/EphemerisSubframe1Reserved.h | 39 +- src/core/libs/supl/asn-rrlp/ErrorCodes.c | 245 +- src/core/libs/supl/asn-rrlp/ErrorCodes.h | 65 +- .../libs/supl/asn-rrlp/ExpOTDUncertainty.c | 246 +- .../libs/supl/asn-rrlp/ExpOTDUncertainty.h | 40 +- src/core/libs/supl/asn-rrlp/ExpectedOTD.c | 240 +- src/core/libs/supl/asn-rrlp/ExpectedOTD.h | 40 +- .../asn-rrlp/Ext-GeographicalInformation.c | 240 +- .../asn-rrlp/Ext-GeographicalInformation.h | 40 +- .../libs/supl/asn-rrlp/Extended-reference.c | 215 +- .../libs/supl/asn-rrlp/Extended-reference.h | 35 +- .../libs/supl/asn-rrlp/ExtensionContainer.c | 199 +- .../libs/supl/asn-rrlp/ExtensionContainer.h | 40 +- src/core/libs/supl/asn-rrlp/FineRTD.c | 232 +- src/core/libs/supl/asn-rrlp/FineRTD.h | 40 +- src/core/libs/supl/asn-rrlp/FixType.c | 232 +- src/core/libs/supl/asn-rrlp/FixType.h | 51 +- src/core/libs/supl/asn-rrlp/FrameDrift.c | 236 +- src/core/libs/supl/asn-rrlp/FrameDrift.h | 40 +- src/core/libs/supl/asn-rrlp/FrameNumber.c | 240 +- src/core/libs/supl/asn-rrlp/FrameNumber.h | 40 +- .../libs/supl/asn-rrlp/GANSS-AssistData.c | 86 +- .../libs/supl/asn-rrlp/GANSS-AssistData.h | 33 +- .../libs/supl/asn-rrlp/GANSS-ControlHeader.c | 109 +- .../libs/supl/asn-rrlp/GANSS-ControlHeader.h | 42 +- .../libs/supl/asn-rrlp/GANSS-MsrSetElement.c | 213 +- .../libs/supl/asn-rrlp/GANSS-MsrSetElement.h | 49 +- .../libs/supl/asn-rrlp/GANSS-SgnElement.c | 619 +- .../libs/supl/asn-rrlp/GANSS-SgnElement.h | 51 +- .../libs/supl/asn-rrlp/GANSS-SgnTypeElement.c | 158 +- .../libs/supl/asn-rrlp/GANSS-SgnTypeElement.h | 37 +- .../libs/supl/asn-rrlp/GANSSAlmanacElement.c | 89 +- .../libs/supl/asn-rrlp/GANSSAlmanacElement.h | 62 +- .../libs/supl/asn-rrlp/GANSSAlmanacModel.c | 324 +- .../libs/supl/asn-rrlp/GANSSAlmanacModel.h | 43 +- .../libs/supl/asn-rrlp/GANSSAssistanceData.c | 246 +- .../libs/supl/asn-rrlp/GANSSAssistanceData.h | 40 +- src/core/libs/supl/asn-rrlp/GANSSClockModel.c | 89 +- src/core/libs/supl/asn-rrlp/GANSSClockModel.h | 62 +- .../supl/asn-rrlp/GANSSCommonAssistData.c | 126 +- .../supl/asn-rrlp/GANSSCommonAssistData.h | 57 +- src/core/libs/supl/asn-rrlp/GANSSDataBit.c | 242 +- src/core/libs/supl/asn-rrlp/GANSSDataBit.h | 40 +- .../libs/supl/asn-rrlp/GANSSDataBitAssist.c | 248 +- .../libs/supl/asn-rrlp/GANSSDataBitAssist.h | 41 +- .../libs/supl/asn-rrlp/GANSSDiffCorrections.c | 158 +- .../libs/supl/asn-rrlp/GANSSDiffCorrections.h | 37 +- .../asn-rrlp/GANSSGenericAssistDataElement.c | 304 +- .../asn-rrlp/GANSSGenericAssistDataElement.h | 82 +- .../libs/supl/asn-rrlp/GANSSIonoStormFlags.c | 433 +- .../libs/supl/asn-rrlp/GANSSIonoStormFlags.h | 41 +- .../libs/supl/asn-rrlp/GANSSIonosphereModel.c | 287 +- .../libs/supl/asn-rrlp/GANSSIonosphereModel.h | 37 +- .../supl/asn-rrlp/GANSSIonosphericModel.c | 107 +- .../supl/asn-rrlp/GANSSIonosphericModel.h | 47 +- .../libs/supl/asn-rrlp/GANSSLocationInfo.c | 394 +- .../libs/supl/asn-rrlp/GANSSLocationInfo.h | 71 +- .../libs/supl/asn-rrlp/GANSSMeasureInfo.c | 85 +- .../libs/supl/asn-rrlp/GANSSMeasureInfo.h | 33 +- src/core/libs/supl/asn-rrlp/GANSSNavModel.c | 383 +- src/core/libs/supl/asn-rrlp/GANSSNavModel.h | 43 +- src/core/libs/supl/asn-rrlp/GANSSOrbitModel.c | 87 +- src/core/libs/supl/asn-rrlp/GANSSOrbitModel.h | 62 +- .../supl/asn-rrlp/GANSSPositioningMethod.c | 258 +- .../supl/asn-rrlp/GANSSPositioningMethod.h | 51 +- .../supl/asn-rrlp/GANSSRealTimeIntegrity.c | 87 +- .../supl/asn-rrlp/GANSSRealTimeIntegrity.h | 33 +- .../libs/supl/asn-rrlp/GANSSRefLocation.c | 85 +- .../libs/supl/asn-rrlp/GANSSRefLocation.h | 33 +- .../supl/asn-rrlp/GANSSRefMeasurementAssist.c | 163 +- .../supl/asn-rrlp/GANSSRefMeasurementAssist.h | 37 +- .../asn-rrlp/GANSSRefMeasurementElement.c | 422 +- .../asn-rrlp/GANSSRefMeasurementElement.h | 61 +- .../libs/supl/asn-rrlp/GANSSRefTimeInfo.c | 253 +- .../libs/supl/asn-rrlp/GANSSRefTimeInfo.h | 41 +- .../libs/supl/asn-rrlp/GANSSReferenceTime.c | 108 +- .../libs/supl/asn-rrlp/GANSSReferenceTime.h | 40 +- .../supl/asn-rrlp/GANSSSatelliteElement.c | 265 +- .../supl/asn-rrlp/GANSSSatelliteElement.h | 53 +- src/core/libs/supl/asn-rrlp/GANSSSignalID.c | 242 +- src/core/libs/supl/asn-rrlp/GANSSSignalID.h | 40 +- .../asn-rrlp/GANSSTOD-GSMTimeAssociation.c | 169 +- .../asn-rrlp/GANSSTOD-GSMTimeAssociation.h | 47 +- src/core/libs/supl/asn-rrlp/GANSSTOD.c | 235 +- src/core/libs/supl/asn-rrlp/GANSSTOD.h | 40 +- .../libs/supl/asn-rrlp/GANSSTODUncertainty.c | 244 +- .../libs/supl/asn-rrlp/GANSSTODUncertainty.h | 40 +- src/core/libs/supl/asn-rrlp/GANSSTODm.c | 235 +- src/core/libs/supl/asn-rrlp/GANSSTODm.h | 40 +- .../supl/asn-rrlp/GANSSTimeModelElement.c | 343 +- .../supl/asn-rrlp/GANSSTimeModelElement.h | 45 +- src/core/libs/supl/asn-rrlp/GANSSUTCModel.c | 660 +- src/core/libs/supl/asn-rrlp/GANSSUTCModel.h | 47 +- src/core/libs/supl/asn-rrlp/GPS-AssistData.c | 85 +- src/core/libs/supl/asn-rrlp/GPS-AssistData.h | 33 +- src/core/libs/supl/asn-rrlp/GPS-MeasureInfo.c | 85 +- src/core/libs/supl/asn-rrlp/GPS-MeasureInfo.h | 33 +- src/core/libs/supl/asn-rrlp/GPS-MsrElement.c | 469 +- src/core/libs/supl/asn-rrlp/GPS-MsrElement.h | 47 +- .../libs/supl/asn-rrlp/GPS-MsrSetElement.c | 178 +- .../libs/supl/asn-rrlp/GPS-MsrSetElement.h | 39 +- .../libs/supl/asn-rrlp/GPSAssistanceData.c | 248 +- .../libs/supl/asn-rrlp/GPSAssistanceData.h | 40 +- .../asn-rrlp/GPSReferenceTimeUncertainty.c | 238 +- .../asn-rrlp/GPSReferenceTimeUncertainty.h | 40 +- src/core/libs/supl/asn-rrlp/GPSTOW23b.c | 235 +- src/core/libs/supl/asn-rrlp/GPSTOW23b.h | 40 +- src/core/libs/supl/asn-rrlp/GPSTOW24b.c | 235 +- src/core/libs/supl/asn-rrlp/GPSTOW24b.h | 40 +- src/core/libs/supl/asn-rrlp/GPSTOWAssist.c | 80 +- src/core/libs/supl/asn-rrlp/GPSTOWAssist.h | 38 +- .../libs/supl/asn-rrlp/GPSTOWAssistElement.c | 151 +- .../libs/supl/asn-rrlp/GPSTOWAssistElement.h | 47 +- src/core/libs/supl/asn-rrlp/GPSTime.c | 98 +- src/core/libs/supl/asn-rrlp/GPSTime.h | 35 +- .../asn-rrlp/GPSTimeAssistanceMeasurements.c | 321 +- .../asn-rrlp/GPSTimeAssistanceMeasurements.h | 42 +- src/core/libs/supl/asn-rrlp/GPSWeek.c | 232 +- src/core/libs/supl/asn-rrlp/GPSWeek.h | 40 +- src/core/libs/supl/asn-rrlp/GSMTime.c | 148 +- src/core/libs/supl/asn-rrlp/GSMTime.h | 43 +- src/core/libs/supl/asn-rrlp/INTEGER.c | 934 - src/core/libs/supl/asn-rrlp/INTEGER.h | 69 - .../libs/supl/asn-rrlp/IonosphericModel.c | 652 +- .../libs/supl/asn-rrlp/IonosphericModel.h | 47 +- src/core/libs/supl/asn-rrlp/LAC.c | 231 +- src/core/libs/supl/asn-rrlp/LAC.h | 40 +- src/core/libs/supl/asn-rrlp/LocErrorReason.c | 284 +- src/core/libs/supl/asn-rrlp/LocErrorReason.h | 81 +- src/core/libs/supl/asn-rrlp/LocationError.c | 106 +- src/core/libs/supl/asn-rrlp/LocationError.h | 48 +- src/core/libs/supl/asn-rrlp/LocationInfo.c | 251 +- src/core/libs/supl/asn-rrlp/LocationInfo.h | 43 +- .../libs/supl/asn-rrlp/MeasureResponseTime.c | 244 +- .../libs/supl/asn-rrlp/MeasureResponseTime.h | 40 +- src/core/libs/supl/asn-rrlp/MethodType.c | 135 +- src/core/libs/supl/asn-rrlp/MethodType.h | 65 +- src/core/libs/supl/asn-rrlp/ModuloTimeSlot.c | 243 +- src/core/libs/supl/asn-rrlp/ModuloTimeSlot.h | 40 +- .../libs/supl/asn-rrlp/MoreAssDataToBeSent.c | 233 +- .../libs/supl/asn-rrlp/MoreAssDataToBeSent.h | 51 +- src/core/libs/supl/asn-rrlp/MpathIndic.c | 231 +- src/core/libs/supl/asn-rrlp/MpathIndic.h | 55 +- .../supl/asn-rrlp/MsrAssistBTS-R98-ExpOTD.c | 103 +- .../supl/asn-rrlp/MsrAssistBTS-R98-ExpOTD.h | 37 +- src/core/libs/supl/asn-rrlp/MsrAssistBTS.c | 171 +- src/core/libs/supl/asn-rrlp/MsrAssistBTS.h | 49 +- .../supl/asn-rrlp/MsrAssistData-R98-ExpOTD.c | 87 +- .../supl/asn-rrlp/MsrAssistData-R98-ExpOTD.h | 33 +- src/core/libs/supl/asn-rrlp/MsrAssistData.c | 85 +- src/core/libs/supl/asn-rrlp/MsrAssistData.h | 33 +- src/core/libs/supl/asn-rrlp/MsrPosition-Req.c | 214 +- src/core/libs/supl/asn-rrlp/MsrPosition-Req.h | 81 +- src/core/libs/supl/asn-rrlp/MsrPosition-Rsp.c | 229 +- src/core/libs/supl/asn-rrlp/MsrPosition-Rsp.h | 87 +- .../libs/supl/asn-rrlp/MultiFrameCarrier.c | 102 +- .../libs/supl/asn-rrlp/MultiFrameCarrier.h | 35 +- .../libs/supl/asn-rrlp/MultiFrameOffset.c | 245 +- .../libs/supl/asn-rrlp/MultiFrameOffset.h | 40 +- src/core/libs/supl/asn-rrlp/MultipleSets.c | 236 +- src/core/libs/supl/asn-rrlp/MultipleSets.h | 39 +- src/core/libs/supl/asn-rrlp/NULL.c | 238 +- src/core/libs/supl/asn-rrlp/NULL.h | 37 +- .../libs/supl/asn-rrlp/NativeEnumerated.c | 207 - .../libs/supl/asn-rrlp/NativeEnumerated.h | 32 - src/core/libs/supl/asn-rrlp/NativeInteger.c | 332 - src/core/libs/supl/asn-rrlp/NativeInteger.h | 37 - .../supl/asn-rrlp/NavModel-KeplerianSet.c | 1262 +- .../supl/asn-rrlp/NavModel-KeplerianSet.h | 63 +- src/core/libs/supl/asn-rrlp/NavModelElement.c | 101 +- src/core/libs/supl/asn-rrlp/NavModelElement.h | 37 +- src/core/libs/supl/asn-rrlp/NavigationModel.c | 85 +- src/core/libs/supl/asn-rrlp/NavigationModel.h | 33 +- .../libs/supl/asn-rrlp/NeighborIdentity.c | 173 +- .../libs/supl/asn-rrlp/NeighborIdentity.h | 73 +- .../libs/supl/asn-rrlp/NumOfMeasurements.c | 246 +- .../libs/supl/asn-rrlp/NumOfMeasurements.h | 40 +- src/core/libs/supl/asn-rrlp/OCTET_STRING.c | 1805 -- src/core/libs/supl/asn-rrlp/OCTET_STRING.h | 86 - .../libs/supl/asn-rrlp/OTD-FirstSetMsrs.c | 200 +- .../libs/supl/asn-rrlp/OTD-FirstSetMsrs.h | 40 +- .../supl/asn-rrlp/OTD-MeasureInfo-5-Ext.c | 238 +- .../supl/asn-rrlp/OTD-MeasureInfo-5-Ext.h | 40 +- .../supl/asn-rrlp/OTD-MeasureInfo-R98-Ext.c | 87 +- .../supl/asn-rrlp/OTD-MeasureInfo-R98-Ext.h | 33 +- src/core/libs/supl/asn-rrlp/OTD-MeasureInfo.c | 105 +- src/core/libs/supl/asn-rrlp/OTD-MeasureInfo.h | 39 +- src/core/libs/supl/asn-rrlp/OTD-Measurement.c | 118 +- src/core/libs/supl/asn-rrlp/OTD-Measurement.h | 39 +- .../supl/asn-rrlp/OTD-MeasurementWithID.c | 135 +- .../supl/asn-rrlp/OTD-MeasurementWithID.h | 43 +- .../asn-rrlp/OTD-MsrElementFirst-R98-Ext.c | 90 +- .../asn-rrlp/OTD-MsrElementFirst-R98-Ext.h | 38 +- .../libs/supl/asn-rrlp/OTD-MsrElementFirst.c | 288 +- .../libs/supl/asn-rrlp/OTD-MsrElementFirst.h | 53 +- .../libs/supl/asn-rrlp/OTD-MsrElementRest.c | 289 +- .../libs/supl/asn-rrlp/OTD-MsrElementRest.h | 53 +- .../libs/supl/asn-rrlp/OTD-MsrsOfOtherSets.c | 107 +- .../libs/supl/asn-rrlp/OTD-MsrsOfOtherSets.h | 55 +- src/core/libs/supl/asn-rrlp/OTDValue.c | 235 +- src/core/libs/supl/asn-rrlp/OTDValue.h | 40 +- src/core/libs/supl/asn-rrlp/PDU.c | 156 +- src/core/libs/supl/asn-rrlp/PDU.h | 37 +- src/core/libs/supl/asn-rrlp/PositionData.c | 257 +- src/core/libs/supl/asn-rrlp/PositionData.h | 53 +- .../libs/supl/asn-rrlp/PositionInstruct.c | 157 +- .../libs/supl/asn-rrlp/PositionInstruct.h | 45 +- src/core/libs/supl/asn-rrlp/PositionMethod.c | 235 +- src/core/libs/supl/asn-rrlp/PositionMethod.h | 53 +- src/core/libs/supl/asn-rrlp/ProtocolError.c | 124 +- src/core/libs/supl/asn-rrlp/ProtocolError.h | 50 +- src/core/libs/supl/asn-rrlp/RRLP-Component.c | 154 +- src/core/libs/supl/asn-rrlp/RRLP-Component.h | 82 +- src/core/libs/supl/asn-rrlp/RefLocation.c | 85 +- src/core/libs/supl/asn-rrlp/RefLocation.h | 33 +- src/core/libs/supl/asn-rrlp/RefQuality.c | 236 +- src/core/libs/supl/asn-rrlp/RefQuality.h | 40 +- .../libs/supl/asn-rrlp/ReferenceAssistData.c | 138 +- .../libs/supl/asn-rrlp/ReferenceAssistData.h | 41 +- src/core/libs/supl/asn-rrlp/ReferenceFrame.c | 218 +- src/core/libs/supl/asn-rrlp/ReferenceFrame.h | 35 +- .../libs/supl/asn-rrlp/ReferenceIdentity.c | 85 +- .../libs/supl/asn-rrlp/ReferenceIdentity.h | 33 +- .../supl/asn-rrlp/ReferenceIdentityType.c | 157 +- .../supl/asn-rrlp/ReferenceIdentityType.h | 69 +- .../libs/supl/asn-rrlp/ReferenceRelation.c | 240 +- .../libs/supl/asn-rrlp/ReferenceRelation.h | 53 +- src/core/libs/supl/asn-rrlp/ReferenceTime.c | 120 +- src/core/libs/supl/asn-rrlp/ReferenceTime.h | 45 +- src/core/libs/supl/asn-rrlp/ReferenceWGS84.c | 122 +- src/core/libs/supl/asn-rrlp/ReferenceWGS84.h | 37 +- .../Rel-5-MsrPosition-Rsp-Extension.c | 134 +- .../Rel-5-MsrPosition-Rsp-Extension.h | 51 +- .../asn-rrlp/Rel-5-ProtocolError-Extension.c | 96 +- .../asn-rrlp/Rel-5-ProtocolError-Extension.h | 45 +- .../Rel-7-MsrPosition-Rsp-Extension.c | 133 +- .../Rel-7-MsrPosition-Rsp-Extension.h | 51 +- .../Rel-98-MsrPosition-Rsp-Extension.c | 204 +- .../Rel-98-MsrPosition-Rsp-Extension.h | 62 +- .../asn-rrlp/Rel5-AssistanceData-Extension.c | 93 +- .../asn-rrlp/Rel5-AssistanceData-Extension.h | 41 +- .../asn-rrlp/Rel5-MsrPosition-Req-Extension.c | 93 +- .../asn-rrlp/Rel5-MsrPosition-Req-Extension.h | 41 +- .../asn-rrlp/Rel7-AssistanceData-Extension.c | 134 +- .../asn-rrlp/Rel7-AssistanceData-Extension.h | 49 +- .../asn-rrlp/Rel7-MsrPosition-Req-Extension.c | 190 +- .../asn-rrlp/Rel7-MsrPosition-Req-Extension.h | 57 +- .../asn-rrlp/Rel98-AssistanceData-Extension.c | 135 +- .../asn-rrlp/Rel98-AssistanceData-Extension.h | 52 +- .../libs/supl/asn-rrlp/Rel98-Ext-ExpOTD.c | 109 +- .../libs/supl/asn-rrlp/Rel98-Ext-ExpOTD.h | 43 +- .../Rel98-MsrPosition-Req-Extension.c | 135 +- .../Rel98-MsrPosition-Req-Extension.h | 52 +- src/core/libs/supl/asn-rrlp/RelDistance.c | 240 +- src/core/libs/supl/asn-rrlp/RelDistance.h | 40 +- src/core/libs/supl/asn-rrlp/RelativeAlt.c | 240 +- src/core/libs/supl/asn-rrlp/RelativeAlt.h | 40 +- src/core/libs/supl/asn-rrlp/RequestIndex.c | 242 +- src/core/libs/supl/asn-rrlp/RequestIndex.h | 40 +- .../libs/supl/asn-rrlp/RequiredResponseTime.c | 244 +- .../libs/supl/asn-rrlp/RequiredResponseTime.h | 40 +- src/core/libs/supl/asn-rrlp/RoughRTD.c | 235 +- src/core/libs/supl/asn-rrlp/RoughRTD.h | 40 +- src/core/libs/supl/asn-rrlp/SVID.c | 231 +- src/core/libs/supl/asn-rrlp/SVID.h | 40 +- src/core/libs/supl/asn-rrlp/SVIDMASK.c | 250 +- src/core/libs/supl/asn-rrlp/SVIDMASK.h | 40 +- src/core/libs/supl/asn-rrlp/SatElement.c | 674 +- src/core/libs/supl/asn-rrlp/SatElement.h | 49 +- src/core/libs/supl/asn-rrlp/SatStatus.c | 122 +- src/core/libs/supl/asn-rrlp/SatStatus.h | 70 +- src/core/libs/supl/asn-rrlp/SatelliteID.c | 240 +- src/core/libs/supl/asn-rrlp/SatelliteID.h | 40 +- .../supl/asn-rrlp/SeqOf-BadSatelliteSet.c | 81 +- .../supl/asn-rrlp/SeqOf-BadSatelliteSet.h | 34 +- .../libs/supl/asn-rrlp/SeqOf-GANSSDataBits.c | 81 +- .../libs/supl/asn-rrlp/SeqOf-GANSSDataBits.h | 34 +- .../libs/supl/asn-rrlp/SeqOfAcquisElement.c | 81 +- .../libs/supl/asn-rrlp/SeqOfAcquisElement.h | 38 +- .../libs/supl/asn-rrlp/SeqOfAlmanacElement.c | 81 +- .../libs/supl/asn-rrlp/SeqOfAlmanacElement.h | 38 +- .../supl/asn-rrlp/SeqOfBadSignalElement.c | 81 +- .../supl/asn-rrlp/SeqOfBadSignalElement.h | 38 +- .../supl/asn-rrlp/SeqOfDGANSSSgnElement.c | 81 +- .../supl/asn-rrlp/SeqOfDGANSSSgnElement.h | 38 +- .../supl/asn-rrlp/SeqOfGANSS-MsrSetElement.c | 82 +- .../supl/asn-rrlp/SeqOfGANSS-MsrSetElement.h | 38 +- .../supl/asn-rrlp/SeqOfGANSS-SgnElement.c | 81 +- .../supl/asn-rrlp/SeqOfGANSS-SgnElement.h | 38 +- .../supl/asn-rrlp/SeqOfGANSS-SgnTypeElement.c | 82 +- .../supl/asn-rrlp/SeqOfGANSS-SgnTypeElement.h | 38 +- .../supl/asn-rrlp/SeqOfGANSSAlmanacElement.c | 82 +- .../supl/asn-rrlp/SeqOfGANSSAlmanacElement.h | 38 +- .../SeqOfGANSSGenericAssistDataElement.c | 85 +- .../SeqOfGANSSGenericAssistDataElement.h | 38 +- .../SeqOfGANSSRefMeasurementElement.c | 85 +- .../SeqOfGANSSRefMeasurementElement.h | 38 +- .../asn-rrlp/SeqOfGANSSSatelliteElement.c | 82 +- .../asn-rrlp/SeqOfGANSSSatelliteElement.h | 38 +- .../libs/supl/asn-rrlp/SeqOfGANSSTimeModel.c | 81 +- .../libs/supl/asn-rrlp/SeqOfGANSSTimeModel.h | 38 +- .../libs/supl/asn-rrlp/SeqOfGPS-MsrElement.c | 81 +- .../libs/supl/asn-rrlp/SeqOfGPS-MsrElement.h | 38 +- .../supl/asn-rrlp/SeqOfGPS-MsrSetElement.c | 82 +- .../supl/asn-rrlp/SeqOfGPS-MsrSetElement.h | 38 +- .../asn-rrlp/SeqOfMsrAssistBTS-R98-ExpOTD.c | 82 +- .../asn-rrlp/SeqOfMsrAssistBTS-R98-ExpOTD.h | 38 +- .../libs/supl/asn-rrlp/SeqOfMsrAssistBTS.c | 81 +- .../libs/supl/asn-rrlp/SeqOfMsrAssistBTS.h | 38 +- .../libs/supl/asn-rrlp/SeqOfNavModelElement.c | 81 +- .../libs/supl/asn-rrlp/SeqOfNavModelElement.h | 38 +- .../asn-rrlp/SeqOfOTD-FirstSetMsrs-R98-Ext.c | 82 +- .../asn-rrlp/SeqOfOTD-FirstSetMsrs-R98-Ext.h | 38 +- .../supl/asn-rrlp/SeqOfOTD-FirstSetMsrs.c | 81 +- .../supl/asn-rrlp/SeqOfOTD-FirstSetMsrs.h | 38 +- .../supl/asn-rrlp/SeqOfOTD-MsrElementRest.c | 82 +- .../supl/asn-rrlp/SeqOfOTD-MsrElementRest.h | 38 +- .../supl/asn-rrlp/SeqOfOTD-MsrsOfOtherSets.c | 82 +- .../supl/asn-rrlp/SeqOfOTD-MsrsOfOtherSets.h | 38 +- .../asn-rrlp/SeqOfReferenceIdentityType.c | 82 +- .../asn-rrlp/SeqOfReferenceIdentityType.h | 38 +- src/core/libs/supl/asn-rrlp/SeqOfSatElement.c | 79 +- src/core/libs/supl/asn-rrlp/SeqOfSatElement.h | 38 +- .../libs/supl/asn-rrlp/SeqOfSgnTypeElement.c | 81 +- .../libs/supl/asn-rrlp/SeqOfSgnTypeElement.h | 38 +- .../asn-rrlp/SeqOfStandardClockModelElement.c | 82 +- .../asn-rrlp/SeqOfStandardClockModelElement.h | 38 +- .../SeqOfSystemInfoAssistBTS-R98-ExpOTD.c | 85 +- .../SeqOfSystemInfoAssistBTS-R98-ExpOTD.h | 38 +- .../supl/asn-rrlp/SeqOfSystemInfoAssistBTS.c | 82 +- .../supl/asn-rrlp/SeqOfSystemInfoAssistBTS.h | 38 +- src/core/libs/supl/asn-rrlp/SgnTypeElement.c | 179 +- src/core/libs/supl/asn-rrlp/SgnTypeElement.h | 39 +- .../supl/asn-rrlp/StandardClockModelElement.c | 516 +- .../supl/asn-rrlp/StandardClockModelElement.h | 51 +- src/core/libs/supl/asn-rrlp/StdResolution.c | 242 +- src/core/libs/supl/asn-rrlp/StdResolution.h | 40 +- .../asn-rrlp/SystemInfoAssistBTS-R98-ExpOTD.c | 109 +- .../asn-rrlp/SystemInfoAssistBTS-R98-ExpOTD.h | 57 +- .../libs/supl/asn-rrlp/SystemInfoAssistBTS.c | 103 +- .../libs/supl/asn-rrlp/SystemInfoAssistBTS.h | 57 +- .../SystemInfoAssistData-R98-ExpOTD.c | 94 +- .../SystemInfoAssistData-R98-ExpOTD.h | 33 +- .../libs/supl/asn-rrlp/SystemInfoAssistData.c | 87 +- .../libs/supl/asn-rrlp/SystemInfoAssistData.h | 33 +- src/core/libs/supl/asn-rrlp/SystemInfoIndex.c | 244 +- src/core/libs/supl/asn-rrlp/SystemInfoIndex.h | 40 +- src/core/libs/supl/asn-rrlp/TA0.c | 232 +- src/core/libs/supl/asn-rrlp/TA0.h | 40 +- src/core/libs/supl/asn-rrlp/TA1.c | 231 +- src/core/libs/supl/asn-rrlp/TA1.h | 40 +- src/core/libs/supl/asn-rrlp/TA2.c | 231 +- src/core/libs/supl/asn-rrlp/TA2.h | 40 +- src/core/libs/supl/asn-rrlp/TLMReservedBits.c | 244 +- src/core/libs/supl/asn-rrlp/TLMReservedBits.h | 40 +- src/core/libs/supl/asn-rrlp/TLMWord.c | 232 +- src/core/libs/supl/asn-rrlp/TLMWord.h | 40 +- .../supl/asn-rrlp/TOA-MeasurementsOfRef.c | 101 +- .../supl/asn-rrlp/TOA-MeasurementsOfRef.h | 37 +- src/core/libs/supl/asn-rrlp/TimeRelation.c | 103 +- src/core/libs/supl/asn-rrlp/TimeRelation.h | 39 +- src/core/libs/supl/asn-rrlp/TimeSlot.c | 235 +- src/core/libs/supl/asn-rrlp/TimeSlot.h | 40 +- src/core/libs/supl/asn-rrlp/TimeSlotScheme.c | 232 +- src/core/libs/supl/asn-rrlp/TimeSlotScheme.h | 51 +- src/core/libs/supl/asn-rrlp/UTCModel.c | 656 +- src/core/libs/supl/asn-rrlp/UTCModel.h | 47 +- src/core/libs/supl/asn-rrlp/UlPseudoSegInd.c | 232 +- src/core/libs/supl/asn-rrlp/UlPseudoSegInd.h | 51 +- .../supl/asn-rrlp/UncompressedEphemeris.c | 2601 +-- .../supl/asn-rrlp/UncompressedEphemeris.h | 97 +- src/core/libs/supl/asn-rrlp/UseMultipleSets.c | 233 +- src/core/libs/supl/asn-rrlp/UseMultipleSets.h | 51 +- .../libs/supl/asn-rrlp/VelocityEstimate.c | 200 +- .../libs/supl/asn-rrlp/VelocityEstimate.h | 40 +- src/core/libs/supl/asn-rrlp/asn_SEQUENCE_OF.c | 41 - src/core/libs/supl/asn-rrlp/asn_SEQUENCE_OF.h | 52 - src/core/libs/supl/asn-rrlp/asn_SET_OF.c | 88 - src/core/libs/supl/asn-rrlp/asn_SET_OF.h | 62 - src/core/libs/supl/asn-rrlp/asn_application.h | 47 - src/core/libs/supl/asn-rrlp/asn_codecs.h | 109 - src/core/libs/supl/asn-rrlp/asn_codecs_prim.c | 295 - src/core/libs/supl/asn-rrlp/asn_codecs_prim.h | 53 - src/core/libs/supl/asn-rrlp/asn_internal.h | 119 - src/core/libs/supl/asn-rrlp/asn_system.h | 129 - src/core/libs/supl/asn-rrlp/ber_decoder.c | 283 - src/core/libs/supl/asn-rrlp/ber_decoder.h | 64 - src/core/libs/supl/asn-rrlp/ber_tlv_length.c | 178 - src/core/libs/supl/asn-rrlp/ber_tlv_length.h | 50 - src/core/libs/supl/asn-rrlp/ber_tlv_tag.c | 144 - src/core/libs/supl/asn-rrlp/ber_tlv_tag.h | 60 - src/core/libs/supl/asn-rrlp/constr_CHOICE.c | 1110 -- src/core/libs/supl/asn-rrlp/constr_CHOICE.h | 57 - src/core/libs/supl/asn-rrlp/constr_SEQUENCE.c | 1423 -- src/core/libs/supl/asn-rrlp/constr_SEQUENCE.h | 60 - .../libs/supl/asn-rrlp/constr_SEQUENCE_OF.c | 208 - .../libs/supl/asn-rrlp/constr_SEQUENCE_OF.h | 33 - src/core/libs/supl/asn-rrlp/constr_SET_OF.c | 953 - src/core/libs/supl/asn-rrlp/constr_SET_OF.h | 42 - src/core/libs/supl/asn-rrlp/constr_TYPE.c | 77 - src/core/libs/supl/asn-rrlp/constr_TYPE.h | 180 - src/core/libs/supl/asn-rrlp/constraints.c | 93 - src/core/libs/supl/asn-rrlp/constraints.h | 63 - .../libs/supl/asn-rrlp/converter-sample.c | 1578 +- src/core/libs/supl/asn-rrlp/der_encoder.c | 199 - src/core/libs/supl/asn-rrlp/der_encoder.h | 68 - src/core/libs/supl/asn-rrlp/per_decoder.c | 93 - src/core/libs/supl/asn-rrlp/per_decoder.h | 56 - src/core/libs/supl/asn-rrlp/per_encoder.c | 151 - src/core/libs/supl/asn-rrlp/per_encoder.h | 69 - src/core/libs/supl/asn-rrlp/per_opentype.c | 373 - src/core/libs/supl/asn-rrlp/per_opentype.h | 22 - src/core/libs/supl/asn-rrlp/per_support.c | 425 - src/core/libs/supl/asn-rrlp/per_support.h | 128 - src/core/libs/supl/asn-rrlp/xer_decoder.c | 363 - src/core/libs/supl/asn-rrlp/xer_decoder.h | 106 - src/core/libs/supl/asn-rrlp/xer_encoder.c | 67 - src/core/libs/supl/asn-rrlp/xer_encoder.h | 59 - src/core/libs/supl/asn-rrlp/xer_support.c | 233 - src/core/libs/supl/asn-rrlp/xer_support.h | 55 - src/core/libs/supl/asn-supl/AltitudeInfo.c | 457 +- src/core/libs/supl/asn-supl/AltitudeInfo.h | 59 +- src/core/libs/supl/asn-supl/BIT_STRING.c | 189 - src/core/libs/supl/asn-supl/BIT_STRING.h | 33 - src/core/libs/supl/asn-supl/BOOLEAN.c | 284 - src/core/libs/supl/asn-supl/BOOLEAN.h | 36 - src/core/libs/supl/asn-supl/CPICH-Ec-N0.c | 240 +- src/core/libs/supl/asn-supl/CPICH-Ec-N0.h | 40 +- src/core/libs/supl/asn-supl/CPICH-RSCP.c | 236 +- src/core/libs/supl/asn-supl/CPICH-RSCP.h | 40 +- .../libs/supl/asn-supl/CdmaCellInformation.c | 657 +- .../libs/supl/asn-supl/CdmaCellInformation.h | 55 +- src/core/libs/supl/asn-supl/CellInfo.c | 121 +- src/core/libs/supl/asn-supl/CellInfo.h | 72 +- .../libs/supl/asn-supl/CellMeasuredResults.c | 546 +- .../libs/supl/asn-supl/CellMeasuredResults.h | 118 +- .../supl/asn-supl/CellMeasuredResultsList.c | 82 +- .../supl/asn-supl/CellMeasuredResultsList.h | 38 +- .../libs/supl/asn-supl/CellParametersID.c | 245 +- .../libs/supl/asn-supl/CellParametersID.h | 40 +- src/core/libs/supl/asn-supl/DUMMY.c | 186 +- src/core/libs/supl/asn-supl/DUMMY.h | 40 +- src/core/libs/supl/asn-supl/ENUMERATED.c | 71 - src/core/libs/supl/asn-supl/ENUMERATED.h | 25 - src/core/libs/supl/asn-supl/EncodingType.c | 237 +- src/core/libs/supl/asn-supl/EncodingType.h | 59 +- src/core/libs/supl/asn-supl/FQDN.c | 379 +- src/core/libs/supl/asn-supl/FQDN.h | 40 +- src/core/libs/supl/asn-supl/FormatIndicator.c | 261 +- src/core/libs/supl/asn-supl/FormatIndicator.h | 69 +- src/core/libs/supl/asn-supl/FrequencyInfo.c | 186 +- src/core/libs/supl/asn-supl/FrequencyInfo.h | 85 +- .../libs/supl/asn-supl/FrequencyInfoFDD.c | 103 +- .../libs/supl/asn-supl/FrequencyInfoFDD.h | 43 +- .../libs/supl/asn-supl/FrequencyInfoTDD.c | 84 +- .../libs/supl/asn-supl/FrequencyInfoTDD.h | 41 +- src/core/libs/supl/asn-supl/GeneralizedTime.c | 1290 +- src/core/libs/supl/asn-supl/GeneralizedTime.h | 99 +- .../libs/supl/asn-supl/GsmCellInformation.c | 452 +- .../libs/supl/asn-supl/GsmCellInformation.h | 55 +- src/core/libs/supl/asn-supl/Horandveruncert.c | 600 +- src/core/libs/supl/asn-supl/Horandveruncert.h | 51 +- src/core/libs/supl/asn-supl/Horandvervel.c | 424 +- src/core/libs/supl/asn-supl/Horandvervel.h | 47 +- src/core/libs/supl/asn-supl/Horvel.c | 244 +- src/core/libs/supl/asn-supl/Horvel.h | 43 +- src/core/libs/supl/asn-supl/Horveluncert.c | 335 +- src/core/libs/supl/asn-supl/Horveluncert.h | 45 +- src/core/libs/supl/asn-supl/IA5String.c | 124 +- src/core/libs/supl/asn-supl/IA5String.h | 25 +- src/core/libs/supl/asn-supl/INTEGER.c | 934 - src/core/libs/supl/asn-supl/INTEGER.h | 69 - src/core/libs/supl/asn-supl/IPAddress.c | 222 +- src/core/libs/supl/asn-supl/IPAddress.h | 55 +- src/core/libs/supl/asn-supl/KeyIdentity.c | 255 +- src/core/libs/supl/asn-supl/KeyIdentity.h | 40 +- src/core/libs/supl/asn-supl/KeyIdentity4.c | 257 +- src/core/libs/supl/asn-supl/KeyIdentity4.h | 40 +- src/core/libs/supl/asn-supl/LocationId.c | 100 +- src/core/libs/supl/asn-supl/LocationId.h | 43 +- src/core/libs/supl/asn-supl/MAC.c | 246 +- src/core/libs/supl/asn-supl/MAC.h | 40 +- src/core/libs/supl/asn-supl/MeasuredResults.c | 123 +- src/core/libs/supl/asn-supl/MeasuredResults.h | 45 +- .../libs/supl/asn-supl/MeasuredResultsList.c | 81 +- .../libs/supl/asn-supl/MeasuredResultsList.h | 38 +- src/core/libs/supl/asn-supl/NMR.c | 77 +- src/core/libs/supl/asn-supl/NMR.h | 38 +- src/core/libs/supl/asn-supl/NMRelement.c | 287 +- src/core/libs/supl/asn-supl/NMRelement.h | 45 +- .../libs/supl/asn-supl/NativeEnumerated.c | 207 - .../libs/supl/asn-supl/NativeEnumerated.h | 32 - src/core/libs/supl/asn-supl/NativeInteger.c | 332 - src/core/libs/supl/asn-supl/NativeInteger.h | 37 - src/core/libs/supl/asn-supl/Notification.c | 291 +- src/core/libs/supl/asn-supl/Notification.h | 55 +- .../libs/supl/asn-supl/NotificationType.c | 250 +- .../libs/supl/asn-supl/NotificationType.h | 63 +- src/core/libs/supl/asn-supl/OCTET_STRING.c | 1805 -- src/core/libs/supl/asn-supl/OCTET_STRING.h | 86 - src/core/libs/supl/asn-supl/Pathloss.c | 235 +- src/core/libs/supl/asn-supl/Pathloss.h | 40 +- src/core/libs/supl/asn-supl/PosMethod.c | 260 +- src/core/libs/supl/asn-supl/PosMethod.h | 73 +- src/core/libs/supl/asn-supl/PosPayLoad.c | 297 +- src/core/libs/supl/asn-supl/PosPayLoad.h | 70 +- src/core/libs/supl/asn-supl/PosProtocol.c | 116 +- src/core/libs/supl/asn-supl/PosProtocol.h | 45 +- src/core/libs/supl/asn-supl/PosTechnology.c | 180 +- src/core/libs/supl/asn-supl/PosTechnology.h | 53 +- src/core/libs/supl/asn-supl/Position.c | 120 +- src/core/libs/supl/asn-supl/Position.h | 51 +- .../libs/supl/asn-supl/PositionEstimate.c | 864 +- .../libs/supl/asn-supl/PositionEstimate.h | 86 +- src/core/libs/supl/asn-supl/PrefMethod.c | 230 +- src/core/libs/supl/asn-supl/PrefMethod.h | 53 +- .../libs/supl/asn-supl/PrimaryCCPCH-RSCP.c | 246 +- .../libs/supl/asn-supl/PrimaryCCPCH-RSCP.h | 40 +- .../libs/supl/asn-supl/PrimaryCPICH-Info.c | 143 +- .../libs/supl/asn-supl/PrimaryCPICH-Info.h | 33 +- src/core/libs/supl/asn-supl/QoP.c | 362 +- src/core/libs/supl/asn-supl/QoP.h | 47 +- .../libs/supl/asn-supl/RequestedAssistData.c | 247 +- .../libs/supl/asn-supl/RequestedAssistData.h | 63 +- src/core/libs/supl/asn-supl/SETAuthKey.c | 248 +- src/core/libs/supl/asn-supl/SETAuthKey.h | 66 +- src/core/libs/supl/asn-supl/SETCapabilities.c | 118 +- src/core/libs/supl/asn-supl/SETCapabilities.h | 47 +- src/core/libs/supl/asn-supl/SETId.c | 502 +- src/core/libs/supl/asn-supl/SETId.h | 86 +- src/core/libs/supl/asn-supl/SLPAddress.c | 102 +- src/core/libs/supl/asn-supl/SLPAddress.h | 68 +- src/core/libs/supl/asn-supl/SLPMode.c | 221 +- src/core/libs/supl/asn-supl/SLPMode.h | 51 +- src/core/libs/supl/asn-supl/SUPLEND.c | 117 +- src/core/libs/supl/asn-supl/SUPLEND.h | 49 +- src/core/libs/supl/asn-supl/SUPLINIT.c | 185 +- src/core/libs/supl/asn-supl/SUPLINIT.h | 67 +- src/core/libs/supl/asn-supl/SUPLPOS.c | 101 +- src/core/libs/supl/asn-supl/SUPLPOS.h | 47 +- src/core/libs/supl/asn-supl/SUPLPOSINIT.c | 170 +- src/core/libs/supl/asn-supl/SUPLPOSINIT.h | 63 +- src/core/libs/supl/asn-supl/SUPLRESPONSE.c | 136 +- src/core/libs/supl/asn-supl/SUPLRESPONSE.h | 57 +- src/core/libs/supl/asn-supl/SUPLSTART.c | 120 +- src/core/libs/supl/asn-supl/SUPLSTART.h | 51 +- src/core/libs/supl/asn-supl/SatelliteInfo.c | 80 +- src/core/libs/supl/asn-supl/SatelliteInfo.h | 38 +- .../libs/supl/asn-supl/SatelliteInfoElement.c | 214 +- .../libs/supl/asn-supl/SatelliteInfoElement.h | 43 +- src/core/libs/supl/asn-supl/SessionID.c | 105 +- src/core/libs/supl/asn-supl/SessionID.h | 41 +- src/core/libs/supl/asn-supl/SetSessionID.c | 158 +- src/core/libs/supl/asn-supl/SetSessionID.h | 37 +- src/core/libs/supl/asn-supl/SlpSessionID.c | 160 +- src/core/libs/supl/asn-supl/SlpSessionID.h | 37 +- src/core/libs/supl/asn-supl/Status.c | 226 +- src/core/libs/supl/asn-supl/Status.h | 59 +- src/core/libs/supl/asn-supl/StatusCode.c | 301 +- src/core/libs/supl/asn-supl/StatusCode.h | 93 +- src/core/libs/supl/asn-supl/TGSN.c | 231 +- src/core/libs/supl/asn-supl/TGSN.h | 40 +- .../libs/supl/asn-supl/TimeslotISCP-List.c | 81 +- .../libs/supl/asn-supl/TimeslotISCP-List.h | 34 +- src/core/libs/supl/asn-supl/TimeslotISCP.c | 242 +- src/core/libs/supl/asn-supl/TimeslotISCP.h | 40 +- src/core/libs/supl/asn-supl/UARFCN.c | 231 +- src/core/libs/supl/asn-supl/UARFCN.h | 40 +- src/core/libs/supl/asn-supl/ULP-PDU.c | 187 +- src/core/libs/supl/asn-supl/ULP-PDU.h | 43 +- src/core/libs/supl/asn-supl/UTCTime.c | 278 +- src/core/libs/supl/asn-supl/UTCTime.h | 40 +- .../libs/supl/asn-supl/UTRA-CarrierRSSI.c | 245 +- .../libs/supl/asn-supl/UTRA-CarrierRSSI.h | 40 +- src/core/libs/supl/asn-supl/UlpMessage.c | 200 +- src/core/libs/supl/asn-supl/UlpMessage.h | 102 +- src/core/libs/supl/asn-supl/Velocity.c | 137 +- src/core/libs/supl/asn-supl/Velocity.h | 80 +- src/core/libs/supl/asn-supl/Ver.c | 246 +- src/core/libs/supl/asn-supl/Ver.h | 40 +- src/core/libs/supl/asn-supl/Version.c | 286 +- src/core/libs/supl/asn-supl/Version.h | 37 +- src/core/libs/supl/asn-supl/VisibleString.c | 129 +- src/core/libs/supl/asn-supl/VisibleString.h | 19 +- .../libs/supl/asn-supl/WcdmaCellInformation.c | 401 +- .../libs/supl/asn-supl/WcdmaCellInformation.h | 57 +- .../libs/supl/asn-supl/XNavigationModel.c | 382 +- .../libs/supl/asn-supl/XNavigationModel.h | 53 +- src/core/libs/supl/asn-supl/asn_SEQUENCE_OF.c | 41 - src/core/libs/supl/asn-supl/asn_SEQUENCE_OF.h | 52 - src/core/libs/supl/asn-supl/asn_SET_OF.c | 88 - src/core/libs/supl/asn-supl/asn_SET_OF.h | 62 - src/core/libs/supl/asn-supl/asn_application.h | 47 - src/core/libs/supl/asn-supl/asn_codecs.h | 109 - src/core/libs/supl/asn-supl/asn_codecs_prim.c | 295 - src/core/libs/supl/asn-supl/asn_codecs_prim.h | 53 - src/core/libs/supl/asn-supl/asn_internal.h | 119 - src/core/libs/supl/asn-supl/asn_system.h | 129 - src/core/libs/supl/asn-supl/ber_decoder.c | 283 - src/core/libs/supl/asn-supl/ber_decoder.h | 64 - src/core/libs/supl/asn-supl/ber_tlv_length.c | 178 - src/core/libs/supl/asn-supl/ber_tlv_length.h | 50 - src/core/libs/supl/asn-supl/ber_tlv_tag.c | 144 - src/core/libs/supl/asn-supl/ber_tlv_tag.h | 60 - src/core/libs/supl/asn-supl/constr_CHOICE.c | 1110 -- src/core/libs/supl/asn-supl/constr_CHOICE.h | 57 - src/core/libs/supl/asn-supl/constr_SEQUENCE.c | 1423 -- src/core/libs/supl/asn-supl/constr_SEQUENCE.h | 60 - .../libs/supl/asn-supl/constr_SEQUENCE_OF.c | 208 - .../libs/supl/asn-supl/constr_SEQUENCE_OF.h | 33 - src/core/libs/supl/asn-supl/constr_SET_OF.c | 953 - src/core/libs/supl/asn-supl/constr_SET_OF.h | 42 - src/core/libs/supl/asn-supl/constr_TYPE.c | 77 - src/core/libs/supl/asn-supl/constr_TYPE.h | 180 - src/core/libs/supl/asn-supl/constraints.c | 93 - src/core/libs/supl/asn-supl/constraints.h | 63 - src/core/libs/supl/asn-supl/der_encoder.c | 199 - src/core/libs/supl/asn-supl/der_encoder.h | 68 - src/core/libs/supl/asn-supl/per_decoder.c | 93 - src/core/libs/supl/asn-supl/per_decoder.h | 56 - src/core/libs/supl/asn-supl/per_encoder.c | 151 - src/core/libs/supl/asn-supl/per_encoder.h | 69 - src/core/libs/supl/asn-supl/per_opentype.c | 373 - src/core/libs/supl/asn-supl/per_opentype.h | 22 - src/core/libs/supl/asn-supl/per_support.c | 425 - src/core/libs/supl/asn-supl/per_support.h | 128 - src/core/libs/supl/asn-supl/xer_decoder.c | 363 - src/core/libs/supl/asn-supl/xer_decoder.h | 106 - src/core/libs/supl/asn-supl/xer_encoder.c | 67 - src/core/libs/supl/asn-supl/xer_encoder.h | 59 - src/core/libs/supl/asn-supl/xer_support.c | 233 - src/core/libs/supl/asn-supl/xer_support.h | 55 - src/core/libs/supl/asn/rrlp-components.asn | 1205 +- src/core/libs/supl/asn/rrlp-messages.asn | 25 +- src/core/libs/supl/asn/supl-common.asn | 26 +- src/core/libs/supl/asn/supl-end.asn | 2 + src/core/libs/supl/asn/supl-init.asn | 2 + src/core/libs/supl/asn/supl-pos.asn | 2 + src/core/libs/supl/asn/supl-posinit.asn | 2 + src/core/libs/supl/asn/supl-response.asn | 2 + src/core/libs/supl/asn/supl-start.asn | 2 + src/core/libs/supl/asn/supl-ulp.asn | 2 + src/core/libs/supl/supl.c | 1640 +- src/core/libs/supl/supl.h | 325 +- src/core/libs/supl/types/BIT_STRING.c | 207 + src/core/libs/supl/types/BIT_STRING.h | 35 + src/core/libs/supl/types/BOOLEAN.c | 330 + src/core/libs/supl/types/BOOLEAN.h | 37 + src/core/libs/supl/types/ENUMERATED.c | 82 + src/core/libs/supl/types/ENUMERATED.h | 26 + src/core/libs/supl/types/INTEGER.c | 1265 ++ src/core/libs/supl/types/INTEGER.h | 73 + src/core/libs/supl/types/NativeEnumerated.c | 302 + src/core/libs/supl/types/NativeEnumerated.h | 32 + src/core/libs/supl/types/NativeInteger.c | 377 + src/core/libs/supl/types/NativeInteger.h | 38 + src/core/libs/supl/types/OCTET_STRING.c | 2307 +++ src/core/libs/supl/types/OCTET_STRING.h | 90 + src/core/libs/supl/types/asn_SEQUENCE_OF.c | 51 + src/core/libs/supl/types/asn_SEQUENCE_OF.h | 52 + src/core/libs/supl/types/asn_SET_OF.c | 105 + src/core/libs/supl/types/asn_SET_OF.h | 63 + src/core/libs/supl/types/asn_application.h | 51 + src/core/libs/supl/types/asn_codecs.h | 127 + src/core/libs/supl/types/asn_codecs_prim.c | 327 + src/core/libs/supl/types/asn_codecs_prim.h | 53 + src/core/libs/supl/types/asn_internal.h | 133 + src/core/libs/supl/types/asn_system.h | 133 + src/core/libs/supl/types/ber_decoder.c | 337 + src/core/libs/supl/types/ber_decoder.h | 65 + src/core/libs/supl/types/ber_tlv_length.c | 214 + src/core/libs/supl/types/ber_tlv_length.h | 52 + src/core/libs/supl/types/ber_tlv_tag.c | 176 + src/core/libs/supl/types/ber_tlv_tag.h | 63 + src/core/libs/supl/types/constr_CHOICE.c | 1419 ++ src/core/libs/supl/types/constr_CHOICE.h | 58 + src/core/libs/supl/types/constr_SEQUENCE.c | 1782 ++ src/core/libs/supl/types/constr_SEQUENCE.h | 61 + src/core/libs/supl/types/constr_SEQUENCE_OF.c | 288 + src/core/libs/supl/types/constr_SEQUENCE_OF.h | 34 + src/core/libs/supl/types/constr_SET_OF.c | 1205 ++ src/core/libs/supl/types/constr_SET_OF.h | 44 + src/core/libs/supl/types/constr_TYPE.c | 91 + src/core/libs/supl/types/constr_TYPE.h | 184 + src/core/libs/supl/types/constraints.c | 108 + src/core/libs/supl/types/constraints.h | 63 + src/core/libs/supl/types/der_encoder.c | 234 + src/core/libs/supl/types/der_encoder.h | 67 + src/core/libs/supl/types/per_decoder.c | 123 + src/core/libs/supl/types/per_decoder.h | 59 + src/core/libs/supl/types/per_encoder.c | 187 + src/core/libs/supl/types/per_encoder.h | 68 + src/core/libs/supl/types/per_opentype.c | 450 + src/core/libs/supl/types/per_opentype.h | 28 + src/core/libs/supl/types/per_support.c | 652 + src/core/libs/supl/types/per_support.h | 149 + src/core/libs/supl/types/xer_decoder.c | 436 + src/core/libs/supl/types/xer_decoder.h | 108 + src/core/libs/supl/types/xer_encoder.c | 83 + src/core/libs/supl/types/xer_encoder.h | 62 + src/core/libs/supl/types/xer_support.c | 274 + src/core/libs/supl/types/xer_support.h | 58 + src/core/libs/uio_fpga.cc | 210 + src/core/libs/uio_fpga.h | 44 + src/core/monitor/CMakeLists.txt | 111 + src/core/monitor/gnss_synchro_monitor.cc | 96 + src/core/monitor/gnss_synchro_monitor.h | 83 + src/core/monitor/gnss_synchro_udp_sink.cc | 87 + src/core/monitor/gnss_synchro_udp_sink.h | 63 + src/core/monitor/serdes_gnss_synchro.h | 172 + src/core/receiver/CMakeLists.txt | 383 +- src/core/receiver/concurrent_map.h | 95 +- src/core/receiver/concurrent_queue.h | 123 +- src/core/receiver/control_message.h | 49 - src/core/receiver/control_message_factory.cc | 77 - src/core/receiver/control_message_factory.h | 65 - src/core/receiver/control_thread.cc | 1726 +- src/core/receiver/control_thread.h | 251 +- src/core/receiver/file_configuration.cc | 295 +- src/core/receiver/file_configuration.h | 83 +- src/core/receiver/gnss_block_factory.cc | 2931 ++-- src/core/receiver/gnss_block_factory.h | 139 +- src/core/receiver/gnss_flowgraph.cc | 3368 +++- src/core/receiver/gnss_flowgraph.h | 303 +- src/core/receiver/in_memory_configuration.cc | 109 +- src/core/receiver/in_memory_configuration.h | 69 +- src/core/receiver/tcp_cmd_interface.cc | 415 + src/core/receiver/tcp_cmd_interface.h | 89 + src/core/system_parameters/Beidou_B1I.h | 55 + src/core/system_parameters/Beidou_B3I.h | 54 + src/core/system_parameters/Beidou_DNAV.h | 289 + src/core/system_parameters/CMakeLists.txt | 197 +- src/core/system_parameters/GLONASS_L1_L2_CA.h | 315 + src/core/system_parameters/GPS_CNAV.h | 170 + src/core/system_parameters/GPS_L1_CA.h | 379 +- src/core/system_parameters/GPS_L2C.h | 259 +- src/core/system_parameters/GPS_L5.h | 177 + src/core/system_parameters/Galileo_CNAV.h | 181 + src/core/system_parameters/Galileo_E1.h | 1808 +- src/core/system_parameters/Galileo_E5a.h | 3956 ++++- src/core/system_parameters/Galileo_E5b.h | 3623 ++++ src/core/system_parameters/Galileo_E6.h | 1911 ++ src/core/system_parameters/Galileo_FNAV.h | 183 + src/core/system_parameters/Galileo_INAV.h | 309 + src/core/system_parameters/Galileo_OSNMA.h | 199 + src/core/system_parameters/MATH_CONSTANTS.h | 200 +- .../system_parameters/agnss_ref_location.h | 68 + src/core/system_parameters/agnss_ref_time.h | 69 + .../system_parameters/beidou_dnav_almanac.h | 72 + .../beidou_dnav_ephemeris.cc | 30 + .../system_parameters/beidou_dnav_ephemeris.h | 141 + src/core/system_parameters/beidou_dnav_iono.h | 42 + .../beidou_dnav_navigation_message.cc | 867 + .../beidou_dnav_navigation_message.h | 301 + .../system_parameters/beidou_dnav_utc_model.h | 91 + src/core/system_parameters/display.h | 78 + src/core/system_parameters/galileo_almanac.cc | 96 - src/core/system_parameters/galileo_almanac.h | 143 +- .../galileo_almanac_helper.cc | 85 + .../galileo_almanac_helper.h | 100 + .../system_parameters/galileo_cnav_message.cc | 160 + .../system_parameters/galileo_cnav_message.h | 105 + .../system_parameters/galileo_ephemeris.cc | 298 +- .../system_parameters/galileo_ephemeris.h | 197 +- .../system_parameters/galileo_fnav_message.cc | 955 +- .../system_parameters/galileo_fnav_message.h | 419 +- .../system_parameters/galileo_has_data.cc | 936 + src/core/system_parameters/galileo_has_data.h | 140 + src/core/system_parameters/galileo_has_page.h | 56 + .../system_parameters/galileo_inav_message.cc | 1531 ++ .../system_parameters/galileo_inav_message.h | 507 + src/core/system_parameters/galileo_iono.cc | 51 - src/core/system_parameters/galileo_iono.h | 102 +- src/core/system_parameters/galileo_ism.cc | 253 + src/core/system_parameters/galileo_ism.h | 210 + .../galileo_navigation_message.cc | 1040 -- .../galileo_navigation_message.h | 297 - .../system_parameters/galileo_reduced_ced.cc | 55 + .../system_parameters/galileo_reduced_ced.h | 62 + .../system_parameters/galileo_utc_model.cc | 69 +- .../system_parameters/galileo_utc_model.h | 100 +- .../system_parameters/glonass_gnav_almanac.h | 99 + .../glonass_gnav_ephemeris.cc | 182 + .../glonass_gnav_ephemeris.h | 180 + .../glonass_gnav_navigation_message.cc | 714 + .../glonass_gnav_navigation_message.h | 222 + .../glonass_gnav_utc_model.cc | 27 + .../glonass_gnav_utc_model.h | 83 + src/core/system_parameters/gnss_almanac.cc | 275 + src/core/system_parameters/gnss_almanac.h | 103 + src/core/system_parameters/gnss_ephemeris.cc | 382 + src/core/system_parameters/gnss_ephemeris.h | 120 + src/core/system_parameters/gnss_frequencies.h | 65 + src/core/system_parameters/gnss_obs_codes.h | 91 + src/core/system_parameters/gnss_satellite.cc | 1068 +- src/core/system_parameters/gnss_satellite.h | 94 +- src/core/system_parameters/gnss_signal.cc | 44 +- src/core/system_parameters/gnss_signal.h | 60 +- src/core/system_parameters/gnss_synchro.h | 266 +- src/core/system_parameters/gps_acq_assist.cc | 49 - src/core/system_parameters/gps_acq_assist.h | 66 +- src/core/system_parameters/gps_almanac.cc | 50 - src/core/system_parameters/gps_almanac.h | 91 +- .../system_parameters/gps_cnav_ephemeris.cc | 97 - .../system_parameters/gps_cnav_ephemeris.h | 245 +- src/core/system_parameters/gps_cnav_iono.cc | 47 - src/core/system_parameters/gps_cnav_iono.h | 80 +- .../gps_cnav_navigation_message.cc | 502 +- .../gps_cnav_navigation_message.h | 136 +- .../system_parameters/gps_cnav_utc_model.cc | 45 - .../system_parameters/gps_cnav_utc_model.h | 88 +- src/core/system_parameters/gps_ephemeris.cc | 290 +- src/core/system_parameters/gps_ephemeris.h | 250 +- src/core/system_parameters/gps_iono.cc | 47 - src/core/system_parameters/gps_iono.h | 94 +- .../gps_navigation_message.cc | 1082 +- .../gps_navigation_message.h | 417 +- .../system_parameters/gps_ref_location.cc | 41 - src/core/system_parameters/gps_ref_location.h | 72 - src/core/system_parameters/gps_ref_time.cc | 42 - src/core/system_parameters/gps_ref_time.h | 74 - src/core/system_parameters/gps_utc_model.cc | 111 - src/core/system_parameters/gps_utc_model.h | 108 +- src/core/system_parameters/osnma_data.cc | 45 + src/core/system_parameters/osnma_data.h | 250 + .../system_parameters/osnma_dsm_reader.cc | 228 + src/core/system_parameters/osnma_dsm_reader.h | 89 + src/core/system_parameters/reed_solomon.cc | 1054 ++ src/core/system_parameters/reed_solomon.h | 164 + src/core/system_parameters/sbas_ephemeris.cc | 39 +- src/core/system_parameters/sbas_ephemeris.h | 65 +- .../sbas_ionospheric_correction.cc | 471 - .../sbas_ionospheric_correction.h | 203 - .../sbas_satellite_correction.cc | 296 - .../sbas_satellite_correction.h | 107 - .../system_parameters/sbas_telemetry_data.cc | 1004 -- .../system_parameters/sbas_telemetry_data.h | 501 - src/core/system_parameters/sbas_time.h | 193 - src/main/CMakeLists.txt | 236 +- src/main/main.cc | 438 +- src/tests/CMakeLists.txt | 345 - src/tests/arithmetic/code_generation_test.cc | 182 - src/tests/arithmetic/complex_carrier_test.cc | 148 - src/tests/arithmetic/conjugate_test.cc | 139 - .../arithmetic/magnitude_squared_test.cc | 139 - src/tests/arithmetic/multiply_test.cc | 216 - .../configuration/file_configuration_test.cc | 73 - .../in_memory_configuration_test.cc | 119 - .../control_message_factory_test.cc | 93 - .../control_thread/control_thread_test.cc | 183 - src/tests/data/gps_l2c_m_prn7_5msps.dat | Bin 8000000 -> 0 bytes src/tests/flowgraph/gnss_flowgraph_test.cc | 88 - src/tests/flowgraph/pass_through_test.cc | 49 - .../gnss_block/file_output_filter_test.cc | 47 - .../gnss_block/file_signal_source_test.cc | 71 - src/tests/gnss_block/fir_filter_test.cc | 380 - .../galileo_e1_dll_pll_veml_tracking_test.cc | 230 - ...e1_pcps_ambiguous_acquisition_gsoc_test.cc | 260 - ...ileo_e1_pcps_ambiguous_acquisition_test.cc | 253 - ...cps_acquisition_gsoc2014_gensource_test.cc | 975 - .../gnss_block/galileo_e5a_tracking_test.cc | 163 - .../gnss_block/gnss_block_factory_test.cc | 417 - ...ps_l1_ca_pcps_acquisition_gsoc2013_test.cc | 593 - .../gps_l1_ca_pcps_acquisition_test.cc | 253 - ...s_multithread_acquisition_gsoc2013_test.cc | 573 - ...a_pcps_opencl_acquisition_gsoc2013_test.cc | 562 - .../gps_l2_m_dll_pll_tracking_test.cc | 168 - .../gps_l2_m_pcps_acquisition_test.cc | 279 - src/tests/gnss_block/rtcm_printer_test.cc | 75 - .../direct_resampler_conditioner_cc_test.cc | 82 - .../gnuradio_block/gnss_sdr_valve_test.cc | 62 - .../GPS_L1_CA_ID_1_Fs_4Msps_2ms.dat | Bin 64000 -> 0 bytes ...PS_L1_CA_ID_1_Fs_4Msps_signal_analysis.txt | 46 - ...GSoC_CTTC_capture_2012_07_26_4Msps_4ms.dat | Bin 128000 -> 0 bytes ..._capture_2012_07_26_4Msps_4ms_analysis.txt | 50 - .../Galileo_E1_ID_1_Fs_4Msps_8ms.dat | Bin 256000 -> 0 bytes ...o_E1_ID_1_Fs_4Msps_8ms_signal_analysis.txt | 26 - src/tests/single_test_main.cc | 97 - .../string_converter/string_converter_test.cc | 77 - src/tests/test_main.cc | 178 - src/utils/CMakeLists.txt | 19 - src/utils/front-end-cal/CMakeLists.txt | 102 - src/utils/front-end-cal/main.cc | 591 - src/utils/gnuplot/4_GPS_3_GAL.plt | 41 - .../4_GPS_3_GAL_GNSS_SDR_solutions.txt | 1001 -- .../4_GPS_3_GAL_accuracy_precision.jpeg | Bin 47887 -> 0 bytes .../gnuplot/8_GALILEO_accuracy_precision.jpeg | Bin 53272 -> 0 bytes .../gnuplot/8_GAL_GNSS_SDR_solutions.txt | 1001 -- src/utils/gnuplot/8_GPS.plt | 40 - .../gnuplot/8_GPS_GNSS_SDR_solutions.txt | 1001 -- .../gnuplot/8_GPS_accuracy_precision.jpeg | Bin 55402 -> 0 bytes src/utils/gnuplot/8_Galileo.plt | 40 - .../gnuplot/8_sat_accuracy_precision.jpeg | Bin 50195 -> 0 bytes .../gnuplot/8_sat_accuracy_precision.plt | 50 - .../4_GPS_3_GAL_GNSS_SDR_statitics.txt | 23 - .../statistics/8_GAL_GNSS_SDR_statitics.txt | 23 - .../statistics/8_GPS_GNSS_SDR_statitics.txt | 23 - src/utils/gpstk/gnsspvt/CMakeLists.txt | 49 - .../gpstk/gnsspvt/CMakeModules/FindGLOG.cmake | 103 - .../gnsspvt/CMakeModules/FindGPSTK.cmake | 87 - src/utils/gpstk/gnsspvt/README | 62 - src/utils/gpstk/gnsspvt/src/gnsspvt.cpp | 593 - .../gpstk/gnsspvt/src/kml_printer_gpstk.cpp | 136 - .../gpstk/gnsspvt/src/kml_printer_gpstk.h | 59 - ...lileo_e1_dll_pll_veml_plot_sample_32bits.m | 93 - ...lileo_e1_dll_pll_veml_plot_sample_64bits.m | 93 - .../galileo_e1b_observables_plot_sample.m | 22 - .../galileo_e5a_dll_pll_plot_sample_64bits.m | 90 - .../gps_l1_ca_dll_fll_pll_plot_sample.m | 88 - .../matlab/gps_l1_ca_dll_pll_plot_sample.m | 82 - .../gps_l1_ca_dll_pll_plot_sample_64bits.m | 89 - .../gps_l1_ca_observables_plot_sample.m | 9 - .../gps_l1_ca_pvt_plot_sample_agilent_cap2.m | 81 - .../matlab/gps_l1_ca_pvt_raw_plot_sample.m | 9 - .../matlab/gps_l1_ca_telemetry_plot_sample.m | 40 - src/utils/matlab/help_script2.m | 9 - ...lileo_e1_dll_pll_veml_read_tracking_dump.m | 192 - ...1_dll_pll_veml_read_tracking_dump_32bits.m | 192 - src/utils/matlab/libs/geoFunctions/cart2utm.m | 176 - src/utils/matlab/libs/geoFunctions/clsin.m | 26 - src/utils/matlab/libs/geoFunctions/dms2deg.m | 12 - ...gps_l1_ca_dll_fll_pll_read_tracking_dump.m | 178 - .../gps_l1_ca_dll_pll_read_observables_dump.m | 60 - .../gps_l1_ca_dll_pll_read_tracking_dump.m | 177 - ..._l1_ca_dll_pll_read_tracking_dump_64bits.m | 179 - .../matlab/libs/gps_l1_ca_pvt_read_pvt_dump.m | 114 - .../libs/gps_l1_ca_read_observables_dump.m | 61 - .../matlab/libs/gps_l1_ca_read_pvt_raw_dump.m | 49 - .../libs/gps_l1_ca_read_telemetry_dump.m | 48 - src/utils/matlab/libs/plotTracking.m | 153 - src/utils/matlab/libs/plotVEMLTracking.m | 159 - src/utils/matlab/plotTrackingE5a.m | 153 - tests/CMakeLists.txt | 1420 ++ tests/benchmarks/CMakeLists.txt | 128 + tests/benchmarks/README.md | 66 + tests/benchmarks/benchmark_atan2.cc | 65 + tests/benchmarks/benchmark_copy.cc | 80 + tests/benchmarks/benchmark_crypto.cc | 184 + tests/benchmarks/benchmark_detector.cc | 204 + tests/benchmarks/benchmark_osnma.cc | 127 + tests/benchmarks/benchmark_preamble.cc | 70 + tests/benchmarks/benchmark_reed_solomon.cc | 302 + tests/common-files/gnuplot_i.h | 2267 +++ tests/common-files/observable_tests_flags.h | 43 + tests/common-files/signal_generator_flags.h | 60 + tests/common-files/test_flags.h | 44 + tests/common-files/tracking_tests_flags.h | 141 + .../data/config_file_sample.txt | 5 +- tests/data/gnsstk_gcc13.patch | 12 + tests/data/gnsstk_static13.patch | 38 + tests/data/gnsstk_static14.patch | 30 + tests/data/rtklib_test/eph_GPS_L1CA_test1.xml | 483 + tests/data/rtklib_test/obs_test1.xml | 360 + tests/single_test_main.cc | 116 + tests/system-tests/libs/CMakeLists.txt | 59 + tests/system-tests/libs/position_test_flags.h | 63 + .../libs/rtklib_solver_dump_reader.cc | 131 + .../libs/rtklib_solver_dump_reader.h | 74 + .../libs/spirent_motion_csv_dump_reader.cc | 254 + .../libs/spirent_motion_csv_dump_reader.h | 83 + tests/system-tests/position_test.cc | 1227 ++ tests/system-tests/ttff.cc | 758 + tests/test_main.cc | 243 + .../arithmetic/code_generation_test.cc | 399 + .../arithmetic/complex_carrier_test.cc | 190 + tests/unit-tests/arithmetic/conjugate_test.cc | 195 + .../unit-tests/arithmetic/fft_length_test.cc | 186 + tests/unit-tests/arithmetic/fft_speed_test.cc | 84 + .../arithmetic/magnitude_squared_test.cc | 212 + tests/unit-tests/arithmetic/matio_test.cc | 150 + tests/unit-tests/arithmetic/multiply_test.cc | 335 + .../arithmetic/preamble_correlator_test.cc | 114 + .../control-plane/control_thread_test.cc | 272 + .../control-plane/file_configuration_test.cc | 57 + .../control-plane/gnss_block_factory_test.cc | 486 + .../control-plane/gnss_flowgraph_test.cc | 252 + .../in_memory_configuration_test.cc | 115 + .../unit-tests/control-plane/protobuf_test.cc | 98 + .../control-plane/string_converter_test.cc | 59 + .../acquisition/acq_performance_test.cc | 1369 ++ .../beidou_b1i_pcps_acquisition_test.cc | 372 + .../beidou_b3i_pcps_acquisition_test.cc | 370 + ...8ms_ambiguous_acquisition_gsoc2013_test.cc | 446 +- ...cps_ambiguous_acquisition_gsoc2013_test.cc | 438 +- ...e1_pcps_ambiguous_acquisition_gsoc_test.cc | 323 + ...ileo_e1_pcps_ambiguous_acquisition_test.cc | 394 + ...e1_pcps_ambiguous_acquisition_test_fpga.cc | 444 + ...wsr_ambiguous_acquisition_gsoc2013_test.cc | 455 +- ...ync_ambiguous_acquisition_gsoc2014_test.cc | 606 +- ...ong_ambiguous_acquisition_gsoc2013_test.cc | 438 +- ...cps_acquisition_gsoc2014_gensource_test.cc | 667 + .../galileo_e5b_pcps_acquisition_test.cc | 453 + .../galileo_e6_pcps_acquisition_test.cc | 448 + ...ss_l1_ca_pcps_acquisition_gsoc2017_test.cc | 642 + .../glonass_l1_ca_pcps_acquisition_test.cc | 285 + .../glonass_l2_ca_pcps_acquisition_test.cc | 645 + ...ps_l1_ca_pcps_acquisition_gsoc2013_test.cc | 632 + .../gps_l1_ca_pcps_acquisition_test.cc | 387 + .../gps_l1_ca_pcps_acquisition_test_fpga.cc | 443 + ...a_pcps_opencl_acquisition_gsoc2013_test.cc | 642 + ...cps_quicksync_acquisition_gsoc2014_test.cc | 571 +- ..._ca_pcps_tong_acquisition_gsoc2013_test.cc | 442 +- .../gps_l2_m_pcps_acquisition_test.cc | 399 + .../adapter/adapter_test.cc | 389 + .../adapter/pass_through_test.cc | 31 + .../filter/fir_filter_test.cc | 396 + .../filter/notch_filter_lite_test.cc | 217 + .../filter/notch_filter_test.cc | 214 + .../filter/pulse_blanking_filter_test.cc | 213 + .../libs/CMakeLists.txt | 108 + .../libs/acquisition_dump_reader.cc | 306 + .../libs/acquisition_dump_reader.h | 70 + .../libs/acquisition_msg_rx.cc | 84 + .../libs/acquisition_msg_rx.h | 50 + .../libs/item_type_helpers_test.cc | 250 + .../libs/observables_dump_reader.cc | 136 + .../libs/observables_dump_reader.h | 51 + .../libs/tlm_dump_reader.cc | 111 + .../libs/tlm_dump_reader.h | 46 + .../libs/tracking_dump_reader.cc | 130 + .../libs/tracking_dump_reader.h | 79 + .../libs/tracking_true_obs_reader.cc | 117 + .../libs/tracking_true_obs_reader.h | 47 + .../libs/true_observables_reader.cc | 115 + .../libs/true_observables_reader.h | 47 + .../observables/hybrid_observables_test.cc | 2431 +++ .../hybrid_observables_test_fpga.cc | 2561 +++ .../osnma/gnss_crypto_test.cc | 347 + .../osnma/osnma_msg_receiver_test.cc | 301 + .../osnma/osnma_test_vectors.cc | 671 + .../pvt/geohash_test.cc | 55 + .../pvt/nmea_printer_test.cc | 191 + .../pvt/rinex_printer_test.cc | 1035 ++ .../pvt/rtcm_printer_test.cc | 66 + .../signal-processing-blocks/pvt/rtcm_test.cc | 630 + .../pvt/rtklib_solver_test.cc | 515 + .../pvt/serdes_monitor_pvt_test.cc | 64 + .../direct_resampler_conditioner_cc_test.cc | 68 + .../resampler/mmse_resampler_test.cc | 110 + .../sources/file_signal_source_test.cc | 62 + .../sources/gnss_sdr_valve_test.cc | 54 + .../sources/unpack_2bit_samples_test.cc | 285 + .../galileo_fnav_inav_decoder_test.cc | 242 + .../gps_l1_ca_telemetry_decoder_test.cc | 518 + .../tracking/bayesian_estimation_test.cc | 55 + .../cpu_multicorrelator_real_codes_test.cc | 281 + .../tracking/cpu_multicorrelator_test.cc | 272 + .../tracking/cubature_filter_test.cc | 148 + .../tracking/discriminator_test.cc | 174 + .../galileo_e1_dll_pll_veml_tracking_test.cc | 196 + .../tracking/galileo_e5a_tracking_test.cc | 144 + .../galileo_e5b_dll_pll_tracking_test.cc | 143 + ...onass_l1_ca_dll_pll_c_aid_tracking_test.cc | 201 + .../glonass_l1_ca_dll_pll_tracking_test.cc | 207 + .../gps_l1_ca_dll_pll_tracking_test.cc | 1383 ++ .../gps_l1_ca_dll_pll_tracking_test_fpga.cc | 662 + .../gps_l1_ca_gaussian_tracking_test.cc | 673 + .../gps_l2_m_dll_pll_tracking_test.cc | 210 + .../tracking/gpu_multicorrelator_test.cc | 167 + .../tracking/tracking_loop_filter_test.cc | 206 + .../tracking/tracking_pull-in_test.cc | 1367 ++ .../tracking/tracking_pull-in_test_fpga.cc | 1518 ++ .../tracking/unscented_filter_test.cc | 148 + .../galileo_e1b_reed_solomon_test.cc | 626 + .../galileo_e6b_reed_solomon_test.cc | 762 + .../system-parameters/galileo_ism_test.cc | 35 + .../glonass_gnav_crc_test.cc | 113 + .../glonass_gnav_ephemeris_test.cc | 224 + .../glonass_gnav_nav_message_test.cc | 251 + .../system-parameters/has_decoding_test.cc | 384 + utils/CMakeLists.txt | 13 + utils/front-end-cal/CMakeLists.txt | 155 + .../front-end-cal/front_end_cal.cc | 311 +- .../front-end-cal/front_end_cal.h | 140 +- utils/front-end-cal/main.cc | 779 + utils/matlab/dll_pll_veml_plot_sample.m | 80 + utils/matlab/gps_l1_ca_kf_plot_sample.m | 77 + .../gps_l1_ca_pvt_plot_sample_agilent_cap2.m | 64 + utils/matlab/gps_l1_ca_pvt_raw_plot_sample.m | 19 + .../matlab/gps_l1_ca_telemetry_plot_sample.m | 51 + {src/utils => utils}/matlab/help_script1.m | 19 +- utils/matlab/help_script2.m | 20 + utils/matlab/hybrid_observables_plot_sample.m | 125 + .../libs/dll_pll_veml_read_tracking_dump.m | 146 + .../matlab/libs/geoFunctions/cart2geo.m | 120 +- utils/matlab/libs/geoFunctions/cart2utm.m | 176 + .../matlab/libs/geoFunctions/check_t.m | 57 +- .../matlab/libs/geoFunctions/clksin.m | 74 +- utils/matlab/libs/geoFunctions/clsin.m | 25 + .../matlab/libs/geoFunctions/deg2dms.m | 91 +- utils/matlab/libs/geoFunctions/dms2deg.m | 15 + .../matlab/libs/geoFunctions/dms2mat.m | 213 +- .../matlab/libs/geoFunctions/e_r_corr.m | 68 +- .../matlab/libs/geoFunctions/findUtmZone.m | 131 +- .../matlab/libs/geoFunctions/geo2cart.m | 98 +- .../matlab/libs/geoFunctions/leastSquarePos.m | 230 +- .../matlab/libs/geoFunctions/mat2dms.m | 254 +- .../matlab/libs/geoFunctions/roundn.m | 97 +- .../matlab/libs/geoFunctions/satpos.m | 284 +- .../matlab/libs/geoFunctions/togeod.m | 222 +- .../matlab/libs/geoFunctions/topocent.m | 115 +- .../matlab/libs/geoFunctions/tropo.m | 198 +- .../gps_l1_ca_dll_pll_read_tracking_dump.m | 176 + .../libs/gps_l1_ca_kf_read_tracking_dump.m | 143 + .../matlab/libs/gps_l1_ca_pvt_read_pvt_dump.m | 97 + .../matlab/libs/gps_l1_ca_read_pvt_raw_dump.m | 57 + .../libs/gps_l1_ca_read_telemetry_dump.m | 54 + utils/matlab/libs/plotKalman.m | 125 + .../matlab/libs/plotNavigation.m | 322 +- utils/matlab/libs/plotTracking.m | 177 + utils/matlab/libs/plotVEMLTracking.m | 152 + utils/matlab/libs/quantize_signal.m | 80 + utils/matlab/libs/read_complex_binary.m | 47 + utils/matlab/libs/read_complex_char_binary.m | 38 + utils/matlab/libs/read_complex_short_binary.m | 38 + .../libs/read_hybrid_observables_dump.m | 77 + .../libs/read_true_sim_observables_dump.m | 74 + utils/matlab/plotTrackingE5a.m | 140 + utils/matlab/plot_acq_grid.m | 125 + .../matlab/plot_acq_grid_gsoc.m | 50 +- .../matlab/plot_acq_grid_gsoc_e5.m | 56 +- utils/matlab/plot_acq_grid_gsoc_glonass.m | 82 + .../matlab/plot_tracking_quality_indicators.m | 25 + utils/nav-listener/CMakeLists.txt | 57 + utils/nav-listener/README.md | 103 + .../cmake/cmake_uninstall.cmake.in | 35 + utils/nav-listener/main.cc | 61 + utils/nav-listener/nav_message.proto | 17 + utils/nav-listener/nav_msg_udp_listener.cc | 85 + utils/nav-listener/nav_msg_udp_listener.h | 37 + utils/python/dll_pll_veml_plot_sample.py | 110 + utils/python/gps_l1_ca_kf_plot_sample.py | 98 + utils/python/gps_l1_ca_pvt_raw_plot_sample.py | 101 + .../python/gps_l1_ca_telemetry_plot_sample.py | 99 + .../python/hybrid_observables_plot_sample.py | 139 + .../lib/dll_pll_veml_read_tracking_dump.py | 222 + .../lib/gps_l1_ca_kf_read_tracking_dump.py | 225 + utils/python/lib/gps_l1_ca_read_pvt_dump.py | 249 + .../lib/gps_l1_ca_read_telemetry_dump.py | 86 + utils/python/lib/plotKalman.py | 140 + utils/python/lib/plotNavigation.py | 134 + utils/python/lib/plotPosition.py | 208 + utils/python/lib/plotTracking.py | 190 + utils/python/lib/plotVEMLTracking.py | 171 + .../lib/read_hybrid_observables_dump.py | 112 + utils/python/plot_acq_grid.py | 262 + .../plot_tracking_quality_indicators.py | 76 + .../ieee-access18/L2-access18.conf | 160 + utils/reproducibility/ieee-access18/README.md | 72 + .../reproducibility/ieee-access18/plot_dump.m | 219 + utils/rinex-tools/CMakeLists.txt | 139 + utils/rinex-tools/README.md | 142 + utils/rinex-tools/obsdiff.cc | 1873 ++ utils/rinex-tools/obsdiff_flags.h | 57 + utils/rinex2assist/CMakeLists.txt | 164 + utils/rinex2assist/README.md | 109 + utils/rinex2assist/main.cc | 495 + utils/scripts/download-galileo-almanac.sh | 129 + utils/scripts/gnss-sdr-harness.sh | 14 + ...ss_sdr_tcp_connector_parallel_tracking.txt | 134 +- ...dr_tcp_connector_parallel_tracking_start.m | 101 +- .../gnss_sdr_tcp_connector_tracking_lib.mdl | 4 +- ...sdr_tcp_connector_tracking_lib.mdl.license | 5 + ..._sdr_galileo_e1_tcp_connector_tracking.txt | 116 +- ...README_gnss_sdr_tcp_connector_tracking.txt | 118 +- ..._galileo_e1_tcp_connector_tracking_lib.mdl | 4 +- ..._e1_tcp_connector_tracking_lib.mdl.license | 5 + ..._galileo_e1_tcp_connector_tracking_start.m | 112 +- .../gnss_sdr_tcp_connector_tracking_lib.mdl | 4 +- ...sdr_tcp_connector_tracking_lib.mdl.license | 5 + .../gnss_sdr_tcp_connector_tracking_start.m | 111 +- 2735 files changed, 415346 insertions(+), 263997 deletions(-) create mode 100644 .clang-format create mode 100644 .clang-tidy create mode 100644 .github/DCO.txt create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/citation.yml create mode 100644 .github/workflows/gnss-sdr_archs.yml create mode 100644 .github/workflows/main.yml create mode 100644 .github/workflows/volk_gnsssdr_android.yml create mode 100644 .github/workflows/volk_gnsssdr_archs.yml create mode 100644 CITATION.cff create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSES/Apache-2.0.txt create mode 100644 LICENSES/BSD-1-Clause.txt create mode 100644 LICENSES/BSD-2-Clause.txt create mode 100644 LICENSES/BSD-3-Clause.txt create mode 100644 LICENSES/CC-BY-4.0.txt create mode 100644 LICENSES/GPL-3.0-or-later.txt create mode 100644 LICENSES/LGPL-3.0-only.txt create mode 100644 LICENSES/LicenseRef-Apple-Permissive.txt create mode 100644 LICENSES/MIT.txt create mode 100644 LICENSES/Zlib.txt delete mode 100644 build/.gitignore create mode 100644 cmake/Modules/AvoidAccelerate.cmake create mode 100644 cmake/Modules/BuildProtobuf.cmake delete mode 100644 cmake/Modules/CMakeParseArgumentsCopy.cmake create mode 100644 cmake/Modules/DetectLinuxDistro.cmake create mode 100644 cmake/Modules/DetectMacOSVersion.cmake create mode 100644 cmake/Modules/FindCPUFEATURES.cmake create mode 100644 cmake/Modules/FindFILESYSTEM.cmake create mode 100644 cmake/Modules/FindGFLAGS.cmake create mode 100644 cmake/Modules/FindGFORTRAN.cmake delete mode 100644 cmake/Modules/FindGFlags.cmake create mode 100644 cmake/Modules/FindGMP.cmake create mode 100644 cmake/Modules/FindGNSSSIMULATOR.cmake create mode 100644 cmake/Modules/FindGNSSTK.cmake create mode 100644 cmake/Modules/FindGNUPLOT.cmake create mode 100644 cmake/Modules/FindGNURADIO.cmake create mode 100644 cmake/Modules/FindGOOGLETEST.cmake create mode 100644 cmake/Modules/FindGPERFTOOLS.cmake delete mode 100644 cmake/Modules/FindGPSTK.cmake create mode 100644 cmake/Modules/FindGRDBFCTTC.cmake create mode 100644 cmake/Modules/FindGRIIO.cmake create mode 100644 cmake/Modules/FindGRLIMESDR.cmake create mode 100644 cmake/Modules/FindGROSMOSDR.cmake delete mode 100644 cmake/Modules/FindGnuradio.cmake delete mode 100644 cmake/Modules/FindGperftools.cmake delete mode 100644 cmake/Modules/FindGrOsmoSDR.cmake create mode 100644 cmake/Modules/FindLIBAD9361.cmake create mode 100644 cmake/Modules/FindLIBIIO.cmake create mode 100644 cmake/Modules/FindLIBUNWIND.cmake create mode 100644 cmake/Modules/FindLOG4CPP.cmake delete mode 100644 cmake/Modules/FindLibOsmoSDR.cmake create mode 100644 cmake/Modules/FindMATHJAX2.cmake create mode 100644 cmake/Modules/FindMATIO.cmake create mode 100644 cmake/Modules/FindOPENCL.cmake delete mode 100644 cmake/Modules/FindOpenBLAS.cmake delete mode 100644 cmake/Modules/FindOpenCL.cmake create mode 100644 cmake/Modules/FindPCAP.cmake create mode 100644 cmake/Modules/FindPUGIXML.cmake create mode 100644 cmake/Modules/FindTELEORBIT.cmake delete mode 100644 cmake/Modules/FindTeleorbit.cmake create mode 100644 cmake/Modules/FindVOLK.cmake create mode 100644 cmake/Modules/FindVOLKGNSSSDR.cmake delete mode 100644 cmake/Modules/FindVolk.cmake delete mode 100644 cmake/Modules/FindVolkGnssSdr.cmake create mode 100644 cmake/Modules/FindZEROMQ.cmake delete mode 100644 cmake/Modules/GnssSdrPackaging.cmake create mode 100644 cmake/Modules/GnsssdrBuildTypes.cmake create mode 100644 cmake/Modules/GnsssdrCrypto.cmake create mode 100644 cmake/Modules/GnsssdrLibPaths.cmake create mode 100644 cmake/Modules/SetupPython.cmake delete mode 100644 cmake/Modules/TestForARM.cmake delete mode 100644 cmake/Modules/TestForSSE.cmake create mode 100644 cmake/Modules/XcodeRemoveWarningDuplicates.cmake delete mode 100644 cmake/Packaging/fixup_deb_permissions.sh.in delete mode 100644 cmake/Packaging/postinst.in delete mode 100644 cmake/Packaging/prerm.in create mode 100644 cmake/Toolchains/aarch64-linux-gnu.cmake create mode 100644 cmake/Toolchains/arm-linux-gnueabihf.cmake create mode 100644 cmake/Toolchains/arm_cortex_a15_hardfp_native.cmake create mode 100644 cmake/Toolchains/arm_cortex_a53_hardfp_native.cmake create mode 100644 cmake/Toolchains/arm_cortex_a72_hardfp_native.cmake create mode 100644 cmake/Toolchains/arm_cortex_a8_hardfp_native.cmake create mode 100644 cmake/Toolchains/arm_cortex_a8_softfp_native.cmake create mode 100644 cmake/Toolchains/arm_cortex_a9_hardfp_native.cmake create mode 100644 cmake/Toolchains/oe-sdk_cross.cmake create mode 100644 cmake/Toolchains/raspi3.cmake create mode 100644 cmake/Toolchains/raspi4.cmake create mode 100644 cmake/Toolchains/zynq-7000.cmake create mode 100644 conf/File_input/Beidou/gnss-sdr_BDS_B1I_byte.conf create mode 100644 conf/File_input/Beidou/gnss-sdr_BDS_B3I_GPS_L1_CA_ibyte.conf create mode 100644 conf/File_input/Beidou/gnss-sdr_BDS_B3I_byte.conf create mode 100644 conf/File_input/Beidou/gnss-sdr_BDS_B3I_ibyte.conf create mode 100644 conf/File_input/Beidou/gnss-sdr_BDS_B3I_short.conf create mode 100644 conf/File_input/GPS/gnss-sdr-L1-gaussian.conf create mode 100644 conf/File_input/GPS/gnss-sdr_GPS_L1_CA_ibyte.conf create mode 100644 conf/File_input/GPS/gnss-sdr_GPS_L1_SPIR.conf create mode 100644 conf/File_input/GPS/gnss-sdr_GPS_L1_acq_QuickSync.conf create mode 100644 conf/File_input/GPS/gnss-sdr_GPS_L1_gr_complex.conf create mode 100644 conf/File_input/GPS/gnss-sdr_GPS_L1_ishort.conf create mode 100644 conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf create mode 100644 conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf create mode 100644 conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf create mode 100644 conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf create mode 100644 conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf create mode 100644 conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf create mode 100644 conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf create mode 100644 conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf create mode 100644 conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.conf create mode 100644 conf/File_input/Galileo/gnss-sdr_Galileo_E1_acq_QuickSync.conf create mode 100644 conf/File_input/Galileo/gnss-sdr_Galileo_E1_ishort.conf create mode 100644 conf/File_input/Galileo/gnss-sdr_Galileo_E1_nsr.conf create mode 100644 conf/File_input/Galileo/gnss-sdr_Galileo_E5a.conf create mode 100644 conf/File_input/Galileo/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf create mode 100644 conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_byte.conf create mode 100644 conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_labsat.conf create mode 100644 conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_GPS_L1_CA_ibyte.conf create mode 100644 conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_GPS_L2C_ibyte.conf create mode 100644 conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_ibyte.conf create mode 100644 conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_ibyte_coh_trk.conf create mode 100644 conf/File_input/Glonass/gnss-sdr_GLONASS_L1_ibyte.conf create mode 100644 conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_GPS_L1_CA_ibyte.conf create mode 100644 conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_GPS_L2C_ibyte.conf create mode 100644 conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_ibyte.conf create mode 100644 conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_ibyte_coh_trk.conf create mode 100644 conf/File_input/MultiCons/gnss-sdr_Hybrid_byte.conf create mode 100644 conf/File_input/MultiCons/gnss-sdr_Hybrid_byte_sim.conf create mode 100644 conf/File_input/MultiCons/gnss-sdr_Hybrid_gr_complex.conf create mode 100644 conf/File_input/MultiCons/gnss-sdr_Hybrid_ishort.conf create mode 100644 conf/File_input/MultiCons/gnss-sdr_labsat_kf.conf create mode 100644 conf/File_input/MultiCons/gnss-sdr_multichannel_all_in_one_Flexiband_bin_file_III_1b.conf create mode 100644 conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_ishort.conf create mode 100644 conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_nsr.conf create mode 100644 conf/Nsr_input/gnss-sdr_GPS_L1_nsr.conf create mode 100644 conf/Nsr_input/gnss-sdr_GPS_L1_nsr_gauss.conf create mode 100644 conf/Nsr_input/gnss-sdr_Hybrid_nsr.conf rename conf/{ => Other}/front-end-cal.conf (67%) create mode 100644 conf/Other/gnss-sdr_GPS_L1_2ch_udp.conf create mode 100644 conf/Other/gnss-sdr_GPS_L1_FPGA.conf create mode 100644 conf/Other/gnss-sdr_GPS_L1_fifo.conf create mode 100644 conf/Other/gnss-sdr_GPS_L1_gr_complex_gpu.conf create mode 100644 conf/Other/gnss-sdr_GPS_L1_monitor.conf create mode 100644 conf/Other/gnss-sdr_GPS_L1_nsr_twobit_packed.conf create mode 100644 conf/Other/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf create mode 100644 conf/Other/gnss-sdr_GPS_L1_two_bits_cpx.conf create mode 100644 conf/Other/gnss-sdr_GPS_L1_udp_with_monitor.conf create mode 100644 conf/RealTime_input/gnss-sdr_GPS_L1_2ch_fmcomms2_realtime.conf create mode 100644 conf/RealTime_input/gnss-sdr_GPS_L1_LimeSDR.conf create mode 100644 conf/RealTime_input/gnss-sdr_GPS_L1_USRP_X300_realtime.conf create mode 100644 conf/RealTime_input/gnss-sdr_GPS_L1_USRP_realtime.conf create mode 100644 conf/RealTime_input/gnss-sdr_GPS_L1_bladeRF.conf create mode 100644 conf/RealTime_input/gnss-sdr_GPS_L1_fmcomms2_realtime.conf create mode 100644 conf/RealTime_input/gnss-sdr_GPS_L1_plutosdr_realtime.conf create mode 100644 conf/RealTime_input/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf create mode 100644 conf/RealTime_input/gnss-sdr_GPS_L1_rtlsdr_realtime.conf create mode 100644 conf/RealTime_input/gnss-sdr_GPS_L2C_USRP1_realtime.conf rename conf/{ => RealTime_input}/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf (67%) create mode 100644 conf/RealTime_input/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf create mode 100644 conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_Glonass_L1_USRP_realtime.conf create mode 100644 conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_L1_hackrf_realtime.conf create mode 100644 conf/RealTime_input/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf delete mode 100644 conf/gnss-sdr_GPS_L1_GN3S_realtime.conf delete mode 100644 conf/gnss-sdr_GPS_L1_SPIR.conf delete mode 100644 conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf delete mode 100644 conf/gnss-sdr_GPS_L1_USRP_X300_realtime_new.conf delete mode 100644 conf/gnss-sdr_GPS_L1_USRP_realtime.conf delete mode 100644 conf/gnss-sdr_GPS_L1_acq_QuickSync.conf delete mode 100644 conf/gnss-sdr_GPS_L1_gr_complex.conf delete mode 100644 conf/gnss-sdr_GPS_L1_gr_complex_optim_trk.conf delete mode 100644 conf/gnss-sdr_GPS_L1_nsr.conf delete mode 100644 conf/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf delete mode 100644 conf/gnss-sdr_GPS_L1_rtlsdr_realtime.conf delete mode 100644 conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf delete mode 100644 conf/gnss-sdr_Galileo_E1_acq_QuickSync.conf delete mode 100644 conf/gnss-sdr_Galileo_E1_nsr.conf delete mode 100644 conf/gnss-sdr_Galileo_E1_short.conf delete mode 100644 conf/gnss-sdr_Galileo_E5a.conf delete mode 100644 conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf delete mode 100644 conf/gnss-sdr_Hybrid_byte.conf delete mode 100644 conf/gnss-sdr_Hybrid_nsr.conf delete mode 100644 conf/gnss-sdr_Hybrid_short.conf delete mode 100644 conf/gnss-sdr_SBAS_short.conf delete mode 100644 conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf delete mode 100644 conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf delete mode 100644 conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf delete mode 100644 conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf delete mode 100644 conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf delete mode 100644 conf/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf delete mode 100644 conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_realtime_III_1b.conf delete mode 100644 conf/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf delete mode 100644 conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1a.conf delete mode 100644 conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf delete mode 100644 conf/gnss-sdr_multisource_Hybrid_nsr.conf delete mode 100644 conf/gnss-sdr_multisource_Hybrid_short.conf delete mode 100644 conf/old/gnss-sdr_acq_CCCWSR.conf delete mode 100644 conf/old/gnss-sdr_acq_Tong.conf delete mode 100644 conf/old/gnss-sdr_acq_assistance_test.conf delete mode 100644 conf/old/gnss-sdr_array.conf delete mode 100644 conf/old/gnss-sdr_galileo_e1_tcp_connector_tracking.conf delete mode 100644 conf/old/gnss-sdr_ishort_file_read.conf delete mode 100644 conf/old/gnss-sdr_nmea_tty_output.conf delete mode 100644 conf/old/gnss-sdr_tcp_connector_tracking.conf delete mode 100644 conf/old/master.conf delete mode 100644 data/.gitignore create mode 100644 docs/CHANGELOG.md delete mode 100644 docs/changelog delete mode 100644 docs/changelog.Debian delete mode 100644 docs/doxygen/Doxyfile.generic create mode 100644 docs/doxygen/images/ClassHierarchy.png.license create mode 100644 docs/doxygen/images/GeneralBlockDiagram.png.license create mode 100644 docs/doxygen/images/SignalConditioner.png.license create mode 100644 docs/doxygen/images/gnss-sdr_logo.png.license create mode 100644 docs/doxygen/images/gnss-sdr_logo_round.png.license create mode 100644 docs/doxygen/images/overview.png.license create mode 100644 docs/protobuf/README.md create mode 100644 docs/protobuf/galileo_ephemeris.proto create mode 100644 docs/protobuf/gnss_synchro.proto create mode 100644 docs/protobuf/gps_ephemeris.proto create mode 100644 docs/protobuf/monitor_pvt.proto create mode 100644 docs/protobuf/nav_message.proto create mode 100644 docs/xml-schemas/README.md create mode 100644 docs/xml-schemas/cnav_ephemeris_map.xsd create mode 100644 docs/xml-schemas/cnav_utc_model.xsd create mode 100644 docs/xml-schemas/ephemeris_map.xsd create mode 100644 docs/xml-schemas/gal_almanac_map.xsd create mode 100644 docs/xml-schemas/gal_ephemeris_map.xsd create mode 100644 docs/xml-schemas/gal_iono_model.xsd create mode 100644 docs/xml-schemas/gal_utc_model.xsd create mode 100644 docs/xml-schemas/gps_almanac_map.xsd create mode 100644 docs/xml-schemas/iono_model.xsd create mode 100644 docs/xml-schemas/utc_model.xsd delete mode 100644 drivers/gr-dbfcttc/CMakeLists.txt delete mode 100644 drivers/gr-dbfcttc/README delete mode 100644 drivers/gr-dbfcttc/apps/CMakeLists.txt delete mode 100644 drivers/gr-dbfcttc/build/.gitignore delete mode 100644 drivers/gr-dbfcttc/cmake/Modules/CMakeParseArgumentsCopy.cmake delete mode 100644 drivers/gr-dbfcttc/cmake/Modules/FindCppUnit.cmake delete mode 100644 drivers/gr-dbfcttc/cmake/Modules/FindGnuradioRuntime.cmake delete mode 100644 drivers/gr-dbfcttc/cmake/Modules/FindPCAP.cmake delete mode 100644 drivers/gr-dbfcttc/cmake/Modules/GrMiscUtils.cmake delete mode 100644 drivers/gr-dbfcttc/cmake/Modules/GrPlatform.cmake delete mode 100644 drivers/gr-dbfcttc/cmake/Modules/GrPython.cmake delete mode 100644 drivers/gr-dbfcttc/cmake/Modules/GrSwig.cmake delete mode 100644 drivers/gr-dbfcttc/cmake/Modules/GrTest.cmake delete mode 100644 drivers/gr-dbfcttc/cmake/Modules/dbfcttcConfig.cmake delete mode 100644 drivers/gr-dbfcttc/cmake/cmake_uninstall.cmake.in delete mode 100644 drivers/gr-dbfcttc/docs/CMakeLists.txt delete mode 100644 drivers/gr-dbfcttc/docs/README.dbfcttc delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/CMakeLists.txt delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/Doxyfile.in delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/Doxyfile.swig_doc.in delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/doxyxml/__init__.py delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/doxyxml/base.py delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/doxyxml/doxyindex.py delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/doxyxml/generated/__init__.py delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/doxyxml/generated/compound.py delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/doxyxml/generated/compoundsuper.py delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/doxyxml/generated/index.py delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/doxyxml/generated/indexsuper.py delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/doxyxml/text.py delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/other/group_defs.dox delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/other/main_page.dox delete mode 100644 drivers/gr-dbfcttc/docs/doxygen/swig_doc.py delete mode 100644 drivers/gr-dbfcttc/examples/README delete mode 100644 drivers/gr-dbfcttc/grc/CMakeLists.txt delete mode 100644 drivers/gr-dbfcttc/grc/dbfcttc_raw_array.xml delete mode 100644 drivers/gr-dbfcttc/grc/test_grc2.grc delete mode 100755 drivers/gr-dbfcttc/grc/top_block.py delete mode 100644 drivers/gr-dbfcttc/include/dbfcttc/CMakeLists.txt delete mode 100644 drivers/gr-dbfcttc/include/dbfcttc/api.h delete mode 100644 drivers/gr-dbfcttc/include/dbfcttc/raw_array.h delete mode 100644 drivers/gr-dbfcttc/lib/CMakeLists.txt delete mode 100644 drivers/gr-dbfcttc/lib/qa_dbfcttc.cc delete mode 100644 drivers/gr-dbfcttc/lib/qa_dbfcttc.h delete mode 100644 drivers/gr-dbfcttc/lib/qa_raw_array.cc delete mode 100644 drivers/gr-dbfcttc/lib/qa_raw_array.h delete mode 100644 drivers/gr-dbfcttc/lib/raw_array_impl.cc delete mode 100644 drivers/gr-dbfcttc/lib/raw_array_impl.h delete mode 100644 drivers/gr-dbfcttc/lib/test_dbfcttc.cc delete mode 100644 drivers/gr-dbfcttc/python/.unittests/python/qa_raw_array.xml delete mode 100644 drivers/gr-dbfcttc/python/CMakeLists.txt delete mode 100644 drivers/gr-dbfcttc/python/__init__.py delete mode 100644 drivers/gr-dbfcttc/python/build_utils.py delete mode 100644 drivers/gr-dbfcttc/python/build_utils_codes.py delete mode 100755 drivers/gr-dbfcttc/python/qa_raw_array.py delete mode 100644 drivers/gr-dbfcttc/swig/CMakeLists.txt delete mode 100644 drivers/gr-dbfcttc/swig/dbfcttc_swig.i delete mode 100644 drivers/gr-gn3s/CMakeLists.txt delete mode 100644 drivers/gr-gn3s/README delete mode 100644 drivers/gr-gn3s/build/.gitignore delete mode 100644 drivers/gr-gn3s/cmake/Modules/FindGnuradioRuntime.cmake delete mode 100644 drivers/gr-gn3s/cmake/Modules/FindUSB.cmake delete mode 100644 drivers/gr-gn3s/cmake/Modules/GrMiscUtils.cmake delete mode 100644 drivers/gr-gn3s/cmake/Modules/GrPlatform.cmake delete mode 100644 drivers/gr-gn3s/cmake/Modules/GrPython.cmake delete mode 100644 drivers/gr-gn3s/cmake/Modules/GrSwig.cmake delete mode 100644 drivers/gr-gn3s/cmake/Modules/GrTest.cmake delete mode 100644 drivers/gr-gn3s/cmake/cmake_uninstall.cmake.in delete mode 100644 drivers/gr-gn3s/docs/CMakeLists.txt delete mode 100644 drivers/gr-gn3s/docs/doxygen/CMakeLists.txt delete mode 100644 drivers/gr-gn3s/docs/doxygen/Doxyfile.in delete mode 100644 drivers/gr-gn3s/docs/doxygen/Doxyfile.swig_doc.in delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/__init__.py delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/base.py delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/doxyindex.py delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/example/Doxyfile delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/example/aadvark.cc delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/example/aadvark.h delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/example/xml/aadvark_8cc.xml delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/example/xml/aadvark_8h.xml delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/example/xml/classAadvark.xml delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/example/xml/combine.xslt delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/example/xml/compound.xsd delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/example/xml/index.xml delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/example/xml/index.xsd delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/generated/__init__.py delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/generated/compound.py delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/generated/compoundsuper.py delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/generated/index.py delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/generated/indexsuper.py delete mode 100644 drivers/gr-gn3s/docs/doxygen/doxyxml/text.py delete mode 100644 drivers/gr-gn3s/docs/doxygen/other/group_defs.dox delete mode 100644 drivers/gr-gn3s/docs/doxygen/other/main_page.dox delete mode 100644 drivers/gr-gn3s/docs/doxygen/swig_doc.py delete mode 100644 drivers/gr-gn3s/grc/CMakeLists.txt delete mode 100644 drivers/gr-gn3s/grc/gn3s_source_cc.xml delete mode 100644 drivers/gr-gn3s/include/CMakeLists.txt delete mode 100644 drivers/gr-gn3s/include/fusb.h delete mode 100644 drivers/gr-gn3s/include/fusb_linux.h delete mode 100644 drivers/gr-gn3s/include/gn3s.h delete mode 100644 drivers/gr-gn3s/include/gn3s_api.h delete mode 100644 drivers/gr-gn3s/include/gn3s_defines.h delete mode 100644 drivers/gr-gn3s/include/gn3s_source.h delete mode 100644 drivers/gr-gn3s/include/gn3s_source_cc.h delete mode 100644 drivers/gr-gn3s/include/libusb_types.h delete mode 100644 drivers/gr-gn3s/lib/CMakeLists.txt delete mode 100644 drivers/gr-gn3s/lib/fusb.cc delete mode 100644 drivers/gr-gn3s/lib/fusb_linux.cc delete mode 100644 drivers/gr-gn3s/lib/fusb_sysconfig_linux.cc delete mode 100644 drivers/gr-gn3s/lib/gn3s.cc delete mode 100644 drivers/gr-gn3s/lib/gn3s_firmware.ihx delete mode 100644 drivers/gr-gn3s/lib/gn3s_source.cc delete mode 100644 drivers/gr-gn3s/lib/gn3s_source_cc.cc delete mode 100644 drivers/gr-gn3s/lib/qa_gn3s_source_cc.cc delete mode 100644 drivers/gr-gn3s/python/CMakeLists.txt delete mode 100644 drivers/gr-gn3s/python/Makefile delete mode 100644 drivers/gr-gn3s/python/__init__.py delete mode 100755 drivers/gr-gn3s/python/qa_gn3s.py delete mode 100644 drivers/gr-gn3s/swig/CMakeLists.txt delete mode 100644 drivers/gr-gn3s/swig/gn3s_swig.i delete mode 100644 firmware/GN3S_v2/COPYING_GPL.txt delete mode 100644 firmware/GN3S_v2/README delete mode 100644 firmware/GN3S_v2/bin/gn3s_firmware.ihx delete mode 100644 firmware/GN3S_v2/include/delay.h delete mode 100644 firmware/GN3S_v2/include/eeprom.h delete mode 100644 firmware/GN3S_v2/include/fx2regs.h delete mode 100644 firmware/GN3S_v2/include/fx2utils.h delete mode 100644 firmware/GN3S_v2/include/gn3s_main.h delete mode 100644 firmware/GN3S_v2/include/gn3s_regs.h delete mode 100644 firmware/GN3S_v2/include/gn3s_se4110.h delete mode 100644 firmware/GN3S_v2/include/gpif_inline.h delete mode 100644 firmware/GN3S_v2/include/isr.h delete mode 100644 firmware/GN3S_v2/include/syncdelay.h delete mode 100644 firmware/GN3S_v2/include/timer.h delete mode 100644 firmware/GN3S_v2/include/usb_common.h delete mode 100644 firmware/GN3S_v2/include/usb_descriptors.h delete mode 100644 firmware/GN3S_v2/include/usb_requests.h delete mode 100644 firmware/GN3S_v2/include/usrp_commands.h delete mode 100644 firmware/GN3S_v2/include/usrp_common.h delete mode 100644 firmware/GN3S_v2/lib/Makefile delete mode 100644 firmware/GN3S_v2/lib/delay.asm delete mode 100644 firmware/GN3S_v2/lib/delay.c delete mode 100644 firmware/GN3S_v2/lib/delay.lst delete mode 100644 firmware/GN3S_v2/lib/delay.rel delete mode 100644 firmware/GN3S_v2/lib/delay.sym delete mode 100644 firmware/GN3S_v2/lib/fx2utils.asm delete mode 100644 firmware/GN3S_v2/lib/fx2utils.c delete mode 100644 firmware/GN3S_v2/lib/fx2utils.lst delete mode 100644 firmware/GN3S_v2/lib/fx2utils.rel delete mode 100644 firmware/GN3S_v2/lib/fx2utils.sym delete mode 100644 firmware/GN3S_v2/lib/i2c.c delete mode 100644 firmware/GN3S_v2/lib/isr.asm delete mode 100644 firmware/GN3S_v2/lib/isr.c delete mode 100644 firmware/GN3S_v2/lib/isr.lst delete mode 100644 firmware/GN3S_v2/lib/isr.rel delete mode 100644 firmware/GN3S_v2/lib/isr.sym delete mode 100644 firmware/GN3S_v2/lib/libfx2.lib delete mode 100644 firmware/GN3S_v2/lib/timer.asm delete mode 100644 firmware/GN3S_v2/lib/timer.c delete mode 100644 firmware/GN3S_v2/lib/timer.lst delete mode 100644 firmware/GN3S_v2/lib/timer.rel delete mode 100644 firmware/GN3S_v2/lib/timer.sym delete mode 100644 firmware/GN3S_v2/lib/usb_common.asm delete mode 100644 firmware/GN3S_v2/lib/usb_common.c delete mode 100644 firmware/GN3S_v2/lib/usb_common.lst delete mode 100644 firmware/GN3S_v2/lib/usb_common.rel delete mode 100644 firmware/GN3S_v2/lib/usb_common.sym delete mode 100644 firmware/GN3S_v2/src/Makefile delete mode 100644 firmware/GN3S_v2/src/_startup.a51 delete mode 100644 firmware/GN3S_v2/src/edit-gpif delete mode 100644 firmware/GN3S_v2/src/eeprom.c delete mode 100644 firmware/GN3S_v2/src/gn3s_gpif.c delete mode 100644 firmware/GN3S_v2/src/gn3s_main.adb delete mode 100644 firmware/GN3S_v2/src/gn3s_main.c delete mode 100644 firmware/GN3S_v2/src/gn3s_se4120.c delete mode 100644 firmware/GN3S_v2/src/gpif.c delete mode 100644 firmware/GN3S_v2/src/gpif.gpf delete mode 100644 firmware/GN3S_v2/src/init_gpif.c delete mode 100644 firmware/GN3S_v2/src/readme.txt delete mode 100644 firmware/GN3S_v2/src/tags delete mode 100644 firmware/GN3S_v2/src/usb_descriptors.a51 delete mode 100644 firmware/GN3S_v2/src/usrp_common.c delete mode 100644 firmware/GN3S_v2/src/usrp_gpif.c delete mode 100644 firmware/GN3S_v2/src/vectors.a51 delete mode 100644 src/algorithms/PVT/adapters/galileo_e1_pvt.cc delete mode 100644 src/algorithms/PVT/adapters/galileo_e1_pvt.h delete mode 100644 src/algorithms/PVT/adapters/gps_l1_ca_pvt.cc delete mode 100644 src/algorithms/PVT/adapters/gps_l1_ca_pvt.h delete mode 100644 src/algorithms/PVT/adapters/hybrid_pvt.cc delete mode 100644 src/algorithms/PVT/adapters/hybrid_pvt.h create mode 100644 src/algorithms/PVT/adapters/rtklib_pvt.cc create mode 100644 src/algorithms/PVT/adapters/rtklib_pvt.h delete mode 100644 src/algorithms/PVT/gnuradio_blocks/galileo_e1_pvt_cc.cc delete mode 100644 src/algorithms/PVT/gnuradio_blocks/galileo_e1_pvt_cc.h delete mode 100644 src/algorithms/PVT/gnuradio_blocks/gps_l1_ca_pvt_cc.cc delete mode 100644 src/algorithms/PVT/gnuradio_blocks/gps_l1_ca_pvt_cc.h delete mode 100644 src/algorithms/PVT/gnuradio_blocks/hybrid_pvt_cc.cc delete mode 100644 src/algorithms/PVT/gnuradio_blocks/hybrid_pvt_cc.h create mode 100644 src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc create mode 100644 src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.h create mode 100644 src/algorithms/PVT/libs/an_packet_printer.cc create mode 100644 src/algorithms/PVT/libs/an_packet_printer.h delete mode 100644 src/algorithms/PVT/libs/galileo_e1_ls_pvt.cc delete mode 100644 src/algorithms/PVT/libs/galileo_e1_ls_pvt.h create mode 100644 src/algorithms/PVT/libs/geohash.cc create mode 100644 src/algorithms/PVT/libs/geohash.h create mode 100644 src/algorithms/PVT/libs/geojson_printer.cc create mode 100644 src/algorithms/PVT/libs/geojson_printer.h delete mode 100644 src/algorithms/PVT/libs/gps_l1_ca_ls_pvt.cc delete mode 100644 src/algorithms/PVT/libs/gps_l1_ca_ls_pvt.h create mode 100644 src/algorithms/PVT/libs/gpx_printer.cc create mode 100644 src/algorithms/PVT/libs/gpx_printer.h create mode 100644 src/algorithms/PVT/libs/has_simple_printer.cc create mode 100644 src/algorithms/PVT/libs/has_simple_printer.h delete mode 100644 src/algorithms/PVT/libs/hybrid_ls_pvt.cc delete mode 100644 src/algorithms/PVT/libs/hybrid_ls_pvt.h create mode 100644 src/algorithms/PVT/libs/monitor_ephemeris_udp_sink.cc create mode 100644 src/algorithms/PVT/libs/monitor_ephemeris_udp_sink.h create mode 100644 src/algorithms/PVT/libs/monitor_pvt.h create mode 100644 src/algorithms/PVT/libs/monitor_pvt_udp_sink.cc create mode 100644 src/algorithms/PVT/libs/monitor_pvt_udp_sink.h create mode 100644 src/algorithms/PVT/libs/pvt_conf.h create mode 100644 src/algorithms/PVT/libs/pvt_kf.cc create mode 100644 src/algorithms/PVT/libs/pvt_kf.h create mode 100644 src/algorithms/PVT/libs/pvt_solution.cc create mode 100644 src/algorithms/PVT/libs/pvt_solution.h create mode 100644 src/algorithms/PVT/libs/rtcm.cc create mode 100644 src/algorithms/PVT/libs/rtcm.h create mode 100644 src/algorithms/PVT/libs/rtklib_solver.cc create mode 100644 src/algorithms/PVT/libs/rtklib_solver.h create mode 100644 src/algorithms/PVT/libs/serdes_galileo_eph.h create mode 100644 src/algorithms/PVT/libs/serdes_gps_eph.h create mode 100644 src/algorithms/PVT/libs/serdes_monitor_pvt.h create mode 100644 src/algorithms/acquisition/adapters/beidou_b1i_pcps_acquisition.cc create mode 100644 src/algorithms/acquisition/adapters/beidou_b1i_pcps_acquisition.h create mode 100644 src/algorithms/acquisition/adapters/beidou_b3i_pcps_acquisition.cc create mode 100644 src/algorithms/acquisition/adapters/beidou_b3i_pcps_acquisition.h create mode 100644 src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.cc create mode 100644 src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.h create mode 100644 src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition.cc create mode 100644 src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition.h create mode 100644 src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.cc create mode 100644 src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.h create mode 100644 src/algorithms/acquisition/adapters/galileo_e5b_pcps_acquisition.cc create mode 100644 src/algorithms/acquisition/adapters/galileo_e5b_pcps_acquisition.h create mode 100644 src/algorithms/acquisition/adapters/galileo_e5b_pcps_acquisition_fpga.cc create mode 100644 src/algorithms/acquisition/adapters/galileo_e5b_pcps_acquisition_fpga.h create mode 100644 src/algorithms/acquisition/adapters/galileo_e6_pcps_acquisition.cc create mode 100644 src/algorithms/acquisition/adapters/galileo_e6_pcps_acquisition.h create mode 100644 src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.cc create mode 100644 src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.h create mode 100644 src/algorithms/acquisition/adapters/glonass_l2_ca_pcps_acquisition.cc create mode 100644 src/algorithms/acquisition/adapters/glonass_l2_ca_pcps_acquisition.h create mode 100644 src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.cc create mode 100644 src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.h delete mode 100644 src/algorithms/acquisition/adapters/gps_l1_ca_pcps_multithread_acquisition.cc delete mode 100644 src/algorithms/acquisition/adapters/gps_l1_ca_pcps_multithread_acquisition.h create mode 100644 src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.cc create mode 100644 src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.h create mode 100644 src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition.cc create mode 100644 src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition.h create mode 100644 src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.cc create mode 100644 src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.h create mode 100644 src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.cc create mode 100644 src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition.h delete mode 100644 src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc delete mode 100644 src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.h create mode 100644 src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.cc create mode 100644 src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.h delete mode 100644 src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.cc delete mode 100644 src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.h create mode 100644 src/algorithms/acquisition/libs/CMakeLists.txt create mode 100644 src/algorithms/acquisition/libs/acq_conf.cc create mode 100644 src/algorithms/acquisition/libs/acq_conf.h create mode 100644 src/algorithms/acquisition/libs/acq_conf_fpga.cc create mode 100644 src/algorithms/acquisition/libs/acq_conf_fpga.h create mode 100644 src/algorithms/acquisition/libs/fpga_acquisition.cc create mode 100644 src/algorithms/acquisition/libs/fpga_acquisition.h create mode 100644 src/algorithms/channel/libs/channel_msg_receiver_cc.cc create mode 100644 src/algorithms/channel/libs/channel_msg_receiver_cc.h create mode 100644 src/algorithms/data_type_adapter/adapters/cshort_to_grcomplex.cc create mode 100644 src/algorithms/data_type_adapter/adapters/cshort_to_grcomplex.h create mode 100644 src/algorithms/data_type_adapter/adapters/ibyte_to_cshort.cc create mode 100644 src/algorithms/data_type_adapter/adapters/ibyte_to_cshort.h create mode 100644 src/algorithms/data_type_adapter/gnuradio_blocks/cshort_to_gr_complex.cc create mode 100644 src/algorithms/data_type_adapter/gnuradio_blocks/cshort_to_gr_complex.h create mode 100644 src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_byte_to_complex_short.cc create mode 100644 src/algorithms/data_type_adapter/gnuradio_blocks/interleaved_byte_to_complex_short.h create mode 100644 src/algorithms/input_filter/adapters/notch_filter.cc create mode 100644 src/algorithms/input_filter/adapters/notch_filter.h create mode 100644 src/algorithms/input_filter/adapters/notch_filter_lite.cc create mode 100644 src/algorithms/input_filter/adapters/notch_filter_lite.h create mode 100644 src/algorithms/input_filter/adapters/pulse_blanking_filter.cc create mode 100644 src/algorithms/input_filter/adapters/pulse_blanking_filter.h create mode 100644 src/algorithms/input_filter/gnuradio_blocks/notch_cc.cc create mode 100644 src/algorithms/input_filter/gnuradio_blocks/notch_cc.h create mode 100644 src/algorithms/input_filter/gnuradio_blocks/notch_lite_cc.cc create mode 100644 src/algorithms/input_filter/gnuradio_blocks/notch_lite_cc.h create mode 100644 src/algorithms/input_filter/gnuradio_blocks/pulse_blanking_cc.cc create mode 100644 src/algorithms/input_filter/gnuradio_blocks/pulse_blanking_cc.h create mode 100644 src/algorithms/libs/beidou_b1i_signal_replica.cc create mode 100644 src/algorithms/libs/beidou_b1i_signal_replica.h create mode 100644 src/algorithms/libs/beidou_b3i_signal_replica.cc create mode 100644 src/algorithms/libs/beidou_b3i_signal_replica.h delete mode 100644 src/algorithms/libs/cl.hpp delete mode 100644 src/algorithms/libs/clFFT.h create mode 100644 src/algorithms/libs/conjugate_cc.cc create mode 100644 src/algorithms/libs/conjugate_cc.h create mode 100644 src/algorithms/libs/conjugate_ic.cc create mode 100644 src/algorithms/libs/conjugate_ic.h create mode 100644 src/algorithms/libs/conjugate_sc.cc create mode 100644 src/algorithms/libs/conjugate_sc.h delete mode 100644 src/algorithms/libs/fft_base_kernels.h delete mode 100644 src/algorithms/libs/fft_execute.cc delete mode 100644 src/algorithms/libs/fft_internal.h delete mode 100644 src/algorithms/libs/fft_kernelstring.cc delete mode 100644 src/algorithms/libs/fft_setup.cc delete mode 100644 src/algorithms/libs/galileo_e1_signal_processing.cc delete mode 100644 src/algorithms/libs/galileo_e1_signal_processing.h create mode 100644 src/algorithms/libs/galileo_e1_signal_replica.cc create mode 100644 src/algorithms/libs/galileo_e1_signal_replica.h delete mode 100644 src/algorithms/libs/galileo_e5_signal_processing.cc delete mode 100644 src/algorithms/libs/galileo_e5_signal_processing.h create mode 100644 src/algorithms/libs/galileo_e5_signal_replica.cc create mode 100644 src/algorithms/libs/galileo_e5_signal_replica.h create mode 100644 src/algorithms/libs/galileo_e6_signal_replica.cc create mode 100644 src/algorithms/libs/galileo_e6_signal_replica.h create mode 100644 src/algorithms/libs/geofunctions.cc create mode 100644 src/algorithms/libs/geofunctions.h create mode 100644 src/algorithms/libs/glonass_l1_signal_replica.cc create mode 100644 src/algorithms/libs/glonass_l1_signal_replica.h create mode 100644 src/algorithms/libs/glonass_l2_signal_replica.cc create mode 100644 src/algorithms/libs/glonass_l2_signal_replica.h create mode 100644 src/algorithms/libs/gnss_circular_deque.h create mode 100644 src/algorithms/libs/gnss_sdr_create_directory.cc create mode 100644 src/algorithms/libs/gnss_sdr_create_directory.h create mode 100644 src/algorithms/libs/gnss_sdr_fft.h create mode 100644 src/algorithms/libs/gnss_sdr_filesystem.h create mode 100644 src/algorithms/libs/gnss_sdr_flags.cc create mode 100644 src/algorithms/libs/gnss_sdr_flags.h create mode 100644 src/algorithms/libs/gnss_sdr_make_unique.h create mode 100644 src/algorithms/libs/gnss_sdr_string_literals.cc create mode 100644 src/algorithms/libs/gnss_sdr_string_literals.h delete mode 100644 src/algorithms/libs/gnss_sdr_valve.cc delete mode 100644 src/algorithms/libs/gnss_sdr_valve.h delete mode 100644 src/algorithms/libs/gnss_signal_processing.cc delete mode 100644 src/algorithms/libs/gnss_signal_processing.h create mode 100644 src/algorithms/libs/gnss_signal_replica.cc create mode 100644 src/algorithms/libs/gnss_signal_replica.h create mode 100644 src/algorithms/libs/gnss_time.h delete mode 100644 src/algorithms/libs/gps_l2c_signal.cc delete mode 100644 src/algorithms/libs/gps_l2c_signal.h create mode 100644 src/algorithms/libs/gps_l2c_signal_replica.cc create mode 100644 src/algorithms/libs/gps_l2c_signal_replica.h create mode 100644 src/algorithms/libs/gps_l5_signal_replica.cc create mode 100644 src/algorithms/libs/gps_l5_signal_replica.h delete mode 100644 src/algorithms/libs/gps_sdr_signal_processing.cc delete mode 100644 src/algorithms/libs/gps_sdr_signal_processing.h create mode 100644 src/algorithms/libs/gps_sdr_signal_replica.cc create mode 100644 src/algorithms/libs/gps_sdr_signal_replica.h create mode 100644 src/algorithms/libs/gsl/include/gsl/gsl create mode 100644 src/algorithms/libs/gsl/include/gsl/gsl-lite.hpp create mode 100644 src/algorithms/libs/item_type_helpers.cc create mode 100644 src/algorithms/libs/item_type_helpers.h delete mode 100644 src/algorithms/libs/nco_lib.cc delete mode 100644 src/algorithms/libs/nco_lib.h create mode 100644 src/algorithms/libs/opencl/cl.hpp create mode 100644 src/algorithms/libs/opencl/clFFT.h create mode 100644 src/algorithms/libs/opencl/fft_base_kernels.h create mode 100644 src/algorithms/libs/opencl/fft_execute.cc create mode 100644 src/algorithms/libs/opencl/fft_internal.h create mode 100644 src/algorithms/libs/opencl/fft_kernelstring.cc create mode 100644 src/algorithms/libs/opencl/fft_setup.cc create mode 100644 src/algorithms/libs/rtklib/CMakeLists.txt create mode 100644 src/algorithms/libs/rtklib/rtklib.h create mode 100644 src/algorithms/libs/rtklib/rtklib_conversions.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_conversions.h create mode 100644 src/algorithms/libs/rtklib/rtklib_ephemeris.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_ephemeris.h create mode 100644 src/algorithms/libs/rtklib/rtklib_ionex.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_ionex.h create mode 100644 src/algorithms/libs/rtklib/rtklib_lambda.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_lambda.h create mode 100644 src/algorithms/libs/rtklib/rtklib_pntpos.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_pntpos.h create mode 100644 src/algorithms/libs/rtklib/rtklib_ppp.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_ppp.h create mode 100644 src/algorithms/libs/rtklib/rtklib_preceph.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_preceph.h create mode 100644 src/algorithms/libs/rtklib/rtklib_rtcm.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_rtcm.h create mode 100644 src/algorithms/libs/rtklib/rtklib_rtcm2.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_rtcm2.h create mode 100644 src/algorithms/libs/rtklib/rtklib_rtcm3.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_rtcm3.h create mode 100644 src/algorithms/libs/rtklib/rtklib_rtkcmn.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_rtkcmn.h create mode 100644 src/algorithms/libs/rtklib/rtklib_rtkpos.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_rtkpos.h create mode 100644 src/algorithms/libs/rtklib/rtklib_rtksvr.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_rtksvr.h create mode 100644 src/algorithms/libs/rtklib/rtklib_sbas.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_sbas.h create mode 100644 src/algorithms/libs/rtklib/rtklib_solution.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_solution.h create mode 100644 src/algorithms/libs/rtklib/rtklib_stream.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_stream.h create mode 100644 src/algorithms/libs/rtklib/rtklib_tides.cc create mode 100644 src/algorithms/libs/rtklib/rtklib_tides.h create mode 100644 src/algorithms/libs/trackingcmd.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/.gitignore create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/COPYING create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/README.md delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/README.txt create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/apps/plot_best_vs_generic.py create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/apps/volk_gnsssdr_option_helpers.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/apps/volk_gnsssdr_option_helpers.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/apps/volk_gnsssdr_profile.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/CMakeParseArgumentsCopy.cmake delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/FindORC.cmake delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/GrPython.cmake rename {drivers/gr-gn3s => src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr}/cmake/Modules/CMakeParseArgumentsCopy.cmake (88%) create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Modules/FindCPUFEATURES.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Modules/FindFILESYSTEM.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Modules/FindORC.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Modules/VolkAddTest.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Modules/VolkBoost.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Modules/VolkBuildTypes.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Modules/VolkGnsssdrConfig.cmake.in create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Modules/VolkGnsssdrConfigVersion.cmake.in create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Modules/VolkGnsssdrVersion.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Modules/VolkPython.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Modules/XcodeRemoveWarningDuplicates.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Packaging/volk_gnsssdr-config-info-manpage create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Toolchains/aarch64-linux-gnu.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Toolchains/arm-linux-gnueabihf.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Toolchains/arm_cortex_a15_hardfp_native.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Toolchains/arm_cortex_a53_hardfp_native.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Toolchains/arm_cortex_a72_hardfp_native.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Toolchains/arm_cortex_a8_hardfp_native.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Toolchains/arm_cortex_a8_softfp_native.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Toolchains/arm_cortex_a9_hardfp_native.cmake create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/Toolchains/oe-sdk_cross.cmake delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/VolkBoost.cmake delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/VolkConfig.cmake delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/msvc/inttypes.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/msvc/stdbool.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/msvc/stdint.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cmake/msvc/sys/time.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/CMakeLists.txt create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/README.md create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/cmake/CpuFeaturesConfig.cmake.in create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/cmake/CpuFeaturesNdkCompatConfig.cmake.in create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/cmake/README.md create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/cmake/googletest.CMakeLists.txt.in create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/cpu_features_cache_info.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/cpu_features_macros.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/cpuinfo_aarch64.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/cpuinfo_arm.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/cpuinfo_loongarch.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/cpuinfo_mips.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/cpuinfo_ppc.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/cpuinfo_riscv.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/cpuinfo_s390x.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/cpuinfo_x86.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/internal/bit_utils.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/internal/cpuid_aarch64.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/internal/cpuid_x86.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/internal/filesystem.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/internal/hwcaps.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/internal/stack_line_reader.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/internal/string_view.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/include/internal/windows_utils.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/ndk_compat/CMakeLists.txt create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/ndk_compat/README.md create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/ndk_compat/cpu-features.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/ndk_compat/cpu-features.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/ndk_compat/ndk-compat-test.c create mode 100755 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/scripts/run_integration.sh create mode 100755 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/scripts/test_integration.sh create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/copy.inl create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/define_introspection.inl create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/define_introspection_and_hwcaps.inl create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/equals.inl create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/filesystem.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/hwcaps.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/hwcaps_freebsd.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/hwcaps_linux_or_android.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_aarch64__base_implementation.inl create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_aarch64_cpuid.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_aarch64_freebsd.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_aarch64_linux_or_android.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_aarch64_macos_or_iphone.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_aarch64_windows.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_arm_linux_or_android.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_loongarch_linux.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_mips_linux_or_android.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_ppc_linux.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_riscv_linux.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_s390x_linux.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_x86__base_implementation.inl create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_x86_freebsd.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_x86_linux_or_android.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_x86_macos.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/impl_x86_windows.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/stack_line_reader.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/string_view.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/src/utils/list_cpu_features.c create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/CMakeLists.txt create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/bit_utils_test.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/cpuinfo_aarch64_test.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/cpuinfo_arm_test.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/cpuinfo_loongarch_test.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/cpuinfo_mips_test.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/cpuinfo_ppc_test.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/cpuinfo_riscv_test.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/cpuinfo_s390x_test.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/cpuinfo_x86_test.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/filesystem_for_testing.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/filesystem_for_testing.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/hwcaps_for_testing.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/hwcaps_for_testing.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/stack_line_reader_test.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/string_view_test.cc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/docs/CMakeLists.txt create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/docs/Doxyfile.in create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/docs/DoxygenLayout.xml create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/docs/extending_volk.dox create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/docs/images/VOLK_GNSSSDR_Usage_Example.png create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/docs/images/VOLK_GNSSSDR_Usage_Example.png.license create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/docs/kernels.dox create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/docs/main_page.dox create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/docs/terms_and_techniques.dox create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/docs/using_volk_gnsssdr.dox create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/archs_old.xml rename src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/gen/{volk_gnsssdr_arch_defs.py => volk_gnsssdr_arch_defs.py.in} (68%) create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/saturation_arithmetic.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/volk_gnsssdr_alloc.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/volk_gnsssdr_avx_intrinsics.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/volk_gnsssdr_neon_intrinsics.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/volk_gnsssdr_sine_table.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/volk_gnsssdr_sse3_intrinsics.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include/volk_gnsssdr/volk_gnsssdr_sse_intrinsics.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/CommonMacros/CommonMacros.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/CommonMacros/CommonMacros_16ic_cw_epl_corr_32fc.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/CommonMacros/CommonMacros_8ic_cw_epl_corr_32fc.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/CommonMacros/README.txt delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/README.txt create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/asm/orc/volk_gnsssdr_16sc_magnitude_32f_aligned16_orc_impl.orc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/asm/orc/volk_gnsssdr_32f_x2_add_32f.orc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/asm/orc/volk_gnsssdr_32fc_s32fc_multiply_32fc.orc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/asm/orc/volk_gnsssdr_32fc_x2_multiply_32fc.orc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/asm/orc/volk_gnsssdr_8i_accumulator_s8i.orc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/asm/orc/volk_gnsssdr_8i_x2_add_8i.orc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/asm/orc/volk_gnsssdr_8ic_magnitude_squared_8i.orc rename src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/{ => kernels/volk_gnsssdr/asm}/orc/volk_gnsssdr_8ic_x2_dot_prod_8ic.orc (52%) create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/asm/orc/volk_gnsssdr_8ic_x2_multiply_8ic.orc rename src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/{ => kernels/volk_gnsssdr/asm}/orc/volk_gnsssdr_8ic_x5_cw_epl_corr_8ic_x3.orc (78%) create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/asm/orc/volk_gnsssdr_8u_x2_multiply_8u.orc create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16i_resamplerxnpuppet_16i.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16i_xn_resampler_16i_xn.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_16i_rotator_dot_prod_16ic_xn.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_16i_rotator_dotprodxnpuppet_16ic.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_conjugate_16ic.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_convert_32fc.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resampler_fast_16ic.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resamplerfastpuppet_16ic.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resamplerfastxnpuppet_16ic.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_resamplerxnpuppet_16ic.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_rotatorpuppet_16ic.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_s32fc_x2_rotator_16ic.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dot_prod_16ic_xn.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_dotprodxnpuppet_16ic.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_multiply_16ic.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_rotator_dot_prod_16ic_xn.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x2_rotator_dotprodxnpuppet_16ic.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x5_cw_epl_corr_32fc_x3.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x5_cw_epl_corr_TEST_32fc_x3.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_x7_cw_vepl_corr_32fc_x5.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_xn_resampler_16ic_xn.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_16ic_xn_resampler_fast_16ic_xn.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_high_dynamics_resamplerxnpuppet_32f.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_index_max_32u.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_resamplerxnpuppet_32f.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_sincos_32fc.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_xn_high_dynamics_resampler_32f_xn.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32f_xn_resampler_32f_xn.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_high_dynamic_rotator_dot_prod_32fc_xn.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_high_dynamic_rotator_dotprodxnpuppet_32fc.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_rotator_dot_prod_32fc_xn.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_32f_rotator_dotprodxnpuppet_32fc.h mode change 100755 => 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_convert_8ic.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_resamplerxnpuppet_32fc.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_s32f_convert_8ic.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_s32f_x4_update_local_code_32fc.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_x2_rotator_dot_prod_32fc_xn.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_x2_rotator_dotprodxnpuppet_32fc.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_x5_cw_epl_corr_32fc_x3.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_x7_cw_vepl_corr_32fc_x5.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_32fc_xn_resampler_32fc_xn.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_s8ic_multiply_8ic.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x5_cw_epl_corr_32fc_x3.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x5_cw_epl_corr_8ic_x3.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x7_cw_vepl_corr_32fc_x5.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x7_cw_vepl_corr_TEST_32fc_x5.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x7_cw_vepl_corr_safe_32fc_x5.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_8ic_x7_cw_vepl_corr_unsafe_32fc_x5.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_s32f_sincos_32fc.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_s32f_sincospuppet_32fc.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/kernels/volk_gnsssdr/volk_gnsssdr_s32f_x2_update_local_carrier_32fc.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/gcc_x86_cpuid.h create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/kernel_tests.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_16s_add_quad_aligned16.cc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_16s_add_quad_aligned16.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_16s_branch_4_state_8_aligned16.cc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_16s_branch_4_state_8_aligned16.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_16s_permute_and_scalar_add_aligned16.cc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_16s_permute_and_scalar_add_aligned16.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_16s_quad_max_star_aligned16.cc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_16s_quad_max_star_aligned16.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_32f_fm_detect_aligned16.cc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_32f_fm_detect_aligned16.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_32f_index_max_aligned16.cc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_32f_index_max_aligned16.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_32fc_index_max_aligned16.cc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_32fc_index_max_aligned16.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_32fc_power_spectral_density_32f_aligned16.cc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/lib/qa_32fc_power_spectral_density_32f_aligned16.h delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/orc/volk_gnsssdr_16sc_magnitude_32f_aligned16_orc_impl.orc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/orc/volk_gnsssdr_32f_x2_add_32f.orc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/orc/volk_gnsssdr_32fc_s32fc_multiply_32fc.orc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/orc/volk_gnsssdr_32fc_x2_multiply_32fc.orc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/orc/volk_gnsssdr_8i_accumulator_s8i.orc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/orc/volk_gnsssdr_8i_x2_add_8i.orc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/orc/volk_gnsssdr_8ic_conjugate_8ic.orc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/orc/volk_gnsssdr_8ic_magnitude_squared_8i.orc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/orc/volk_gnsssdr_8ic_s8ic_multiply_8ic.orc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/orc/volk_gnsssdr_8ic_x2_multiply_8ic.orc delete mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/orc/volk_gnsssdr_8u_x2_multiply_8u.orc rename src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/{ => tmpl}/volk_gnsssdr.pc.in (66%) create mode 100644 src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/tmpl/volk_gnsssdr_cpu.tmpl.old.c delete mode 100644 src/algorithms/observables/adapters/galileo_e1_observables.cc delete mode 100644 src/algorithms/observables/adapters/galileo_e1_observables.h delete mode 100644 src/algorithms/observables/adapters/gps_l1_ca_observables.cc delete mode 100644 src/algorithms/observables/adapters/gps_l1_ca_observables.h delete mode 100644 src/algorithms/observables/adapters/mixed_observables.cc delete mode 100644 src/algorithms/observables/adapters/mixed_observables.h delete mode 100644 src/algorithms/observables/gnuradio_blocks/galileo_e1_observables_cc.cc delete mode 100644 src/algorithms/observables/gnuradio_blocks/galileo_e1_observables_cc.h delete mode 100644 src/algorithms/observables/gnuradio_blocks/gps_l1_ca_observables_cc.cc delete mode 100644 src/algorithms/observables/gnuradio_blocks/gps_l1_ca_observables_cc.h delete mode 100644 src/algorithms/observables/gnuradio_blocks/hybrid_observables_cc.cc delete mode 100644 src/algorithms/observables/gnuradio_blocks/hybrid_observables_cc.h create mode 100644 src/algorithms/observables/gnuradio_blocks/hybrid_observables_gs.cc create mode 100644 src/algorithms/observables/gnuradio_blocks/hybrid_observables_gs.h delete mode 100644 src/algorithms/observables/gnuradio_blocks/mixed_observables_cc.cc delete mode 100644 src/algorithms/observables/gnuradio_blocks/mixed_observables_cc.h create mode 100644 src/algorithms/observables/libs/CMakeLists.txt create mode 100644 src/algorithms/observables/libs/obs_conf.cc create mode 100644 src/algorithms/observables/libs/obs_conf.h delete mode 100644 src/algorithms/output_filter/CMakeLists.txt delete mode 100644 src/algorithms/output_filter/adapters/CMakeLists.txt delete mode 100644 src/algorithms/output_filter/adapters/file_output_filter.cc delete mode 100644 src/algorithms/output_filter/adapters/file_output_filter.h delete mode 100644 src/algorithms/output_filter/adapters/null_sink_output_filter.cc delete mode 100644 src/algorithms/output_filter/adapters/null_sink_output_filter.h create mode 100644 src/algorithms/resampler/adapters/mmse_resampler_conditioner.cc create mode 100644 src/algorithms/resampler/adapters/mmse_resampler_conditioner.h create mode 100644 src/algorithms/signal_source/adapters/ad936x_custom_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/ad936x_custom_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/adrv9361_z7035_signal_source_fpga.cc create mode 100644 src/algorithms/signal_source/adapters/adrv9361_z7035_signal_source_fpga.h create mode 100644 src/algorithms/signal_source/adapters/custom_udp_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/custom_udp_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/dma_signal_source_fpga.cc create mode 100644 src/algorithms/signal_source/adapters/dma_signal_source_fpga.h create mode 100644 src/algorithms/signal_source/adapters/fifo_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/fifo_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/file_source_base.cc create mode 100644 src/algorithms/signal_source/adapters/file_source_base.h create mode 100644 src/algorithms/signal_source/adapters/file_timestamp_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/file_timestamp_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/fmcomms2_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/fmcomms2_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/fmcomms5_signal_source_fpga.cc create mode 100644 src/algorithms/signal_source/adapters/fmcomms5_signal_source_fpga.h create mode 100644 src/algorithms/signal_source/adapters/four_bit_cpx_file_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/four_bit_cpx_file_signal_source.h delete mode 100644 src/algorithms/signal_source/adapters/gn3s_signal_source.cc delete mode 100644 src/algorithms/signal_source/adapters/gn3s_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/ion_gsms_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/ion_gsms_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/labsat_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/labsat_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/limesdr_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/limesdr_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/max2771_evkit_signal_source_fpga.cc create mode 100644 src/algorithms/signal_source/adapters/max2771_evkit_signal_source_fpga.h create mode 100644 src/algorithms/signal_source/adapters/multichannel_file_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/multichannel_file_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/plutosdr_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/plutosdr_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/signal_source_base.cc create mode 100644 src/algorithms/signal_source/adapters/signal_source_base.h create mode 100644 src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.h create mode 100644 src/algorithms/signal_source/adapters/zmq_signal_source.cc create mode 100644 src/algorithms/signal_source/adapters/zmq_signal_source.h create mode 100644 src/algorithms/signal_source/gnuradio_blocks/ad936x_iio_source.cc create mode 100644 src/algorithms/signal_source/gnuradio_blocks/ad936x_iio_source.h create mode 100644 src/algorithms/signal_source/gnuradio_blocks/fifo_reader.cc create mode 100644 src/algorithms/signal_source/gnuradio_blocks/fifo_reader.h create mode 100644 src/algorithms/signal_source/gnuradio_blocks/gr_complex_ip_packet_source.cc create mode 100644 src/algorithms/signal_source/gnuradio_blocks/gr_complex_ip_packet_source.h create mode 100644 src/algorithms/signal_source/gnuradio_blocks/ion_gsms.cc create mode 100644 src/algorithms/signal_source/gnuradio_blocks/ion_gsms.h create mode 100644 src/algorithms/signal_source/gnuradio_blocks/labsat23_source.cc create mode 100644 src/algorithms/signal_source/gnuradio_blocks/labsat23_source.h create mode 100644 src/algorithms/signal_source/gnuradio_blocks/unpack_2bit_samples.cc create mode 100644 src/algorithms/signal_source/gnuradio_blocks/unpack_2bit_samples.h create mode 100644 src/algorithms/signal_source/gnuradio_blocks/unpack_byte_2bit_cpx_samples.cc create mode 100644 src/algorithms/signal_source/gnuradio_blocks/unpack_byte_2bit_cpx_samples.h create mode 100644 src/algorithms/signal_source/gnuradio_blocks/unpack_byte_4bit_samples.cc create mode 100644 src/algorithms/signal_source/gnuradio_blocks/unpack_byte_4bit_samples.h create mode 100644 src/algorithms/signal_source/gnuradio_blocks/unpack_short_byte_samples.cc create mode 100644 src/algorithms/signal_source/gnuradio_blocks/unpack_short_byte_samples.h create mode 100644 src/algorithms/signal_source/gnuradio_blocks/unpack_spir_gss6450_samples.cc create mode 100644 src/algorithms/signal_source/gnuradio_blocks/unpack_spir_gss6450_samples.h create mode 100644 src/algorithms/signal_source/libs/ad9361_manager.cc create mode 100644 src/algorithms/signal_source/libs/ad9361_manager.h create mode 100644 src/algorithms/signal_source/libs/ad936x_iio_custom.cc create mode 100644 src/algorithms/signal_source/libs/ad936x_iio_custom.h create mode 100644 src/algorithms/signal_source/libs/ad936x_iio_samples.h create mode 100644 src/algorithms/signal_source/libs/fpga_buffer_monitor.cc create mode 100644 src/algorithms/signal_source/libs/fpga_buffer_monitor.h create mode 100644 src/algorithms/signal_source/libs/fpga_dma-proxy.cc create mode 100644 src/algorithms/signal_source/libs/fpga_dma-proxy.h create mode 100644 src/algorithms/signal_source/libs/fpga_dynamic_bit_selection.cc create mode 100644 src/algorithms/signal_source/libs/fpga_dynamic_bit_selection.h create mode 100644 src/algorithms/signal_source/libs/fpga_spidev.cc create mode 100644 src/algorithms/signal_source/libs/fpga_spidev.h create mode 100644 src/algorithms/signal_source/libs/fpga_switch.cc create mode 100644 src/algorithms/signal_source/libs/fpga_switch.h create mode 100644 src/algorithms/signal_source/libs/gnss_sdr_timestamp.cc create mode 100644 src/algorithms/signal_source/libs/gnss_sdr_timestamp.h create mode 100644 src/algorithms/signal_source/libs/gnss_sdr_valve.cc create mode 100644 src/algorithms/signal_source/libs/gnss_sdr_valve.h create mode 100644 src/algorithms/signal_source/libs/ion_gsms_chunk_data.cc create mode 100644 src/algorithms/signal_source/libs/ion_gsms_chunk_data.h create mode 100644 src/algorithms/signal_source/libs/ion_gsms_chunk_unpacking_ctx.h create mode 100644 src/algorithms/signal_source/libs/ion_gsms_stream_encodings.h create mode 100644 src/algorithms/signal_source/libs/pps_samplestamp.h create mode 100644 src/algorithms/signal_source/libs/ppstcprx.cc create mode 100644 src/algorithms/signal_source/libs/ppstcprx.h create mode 100644 src/algorithms/telemetry_decoder/adapters/beidou_b1i_telemetry_decoder.cc create mode 100644 src/algorithms/telemetry_decoder/adapters/beidou_b1i_telemetry_decoder.h create mode 100644 src/algorithms/telemetry_decoder/adapters/beidou_b3i_telemetry_decoder.cc create mode 100644 src/algorithms/telemetry_decoder/adapters/beidou_b3i_telemetry_decoder.h create mode 100644 src/algorithms/telemetry_decoder/adapters/galileo_e5b_telemetry_decoder.cc create mode 100644 src/algorithms/telemetry_decoder/adapters/galileo_e5b_telemetry_decoder.h create mode 100644 src/algorithms/telemetry_decoder/adapters/galileo_e6_telemetry_decoder.cc create mode 100644 src/algorithms/telemetry_decoder/adapters/galileo_e6_telemetry_decoder.h create mode 100644 src/algorithms/telemetry_decoder/adapters/glonass_l1_ca_telemetry_decoder.cc create mode 100644 src/algorithms/telemetry_decoder/adapters/glonass_l1_ca_telemetry_decoder.h create mode 100644 src/algorithms/telemetry_decoder/adapters/glonass_l2_ca_telemetry_decoder.cc create mode 100644 src/algorithms/telemetry_decoder/adapters/glonass_l2_ca_telemetry_decoder.h delete mode 100644 src/algorithms/telemetry_decoder/adapters/gps_l2_m_telemetry_decoder.cc delete mode 100644 src/algorithms/telemetry_decoder/adapters/gps_l2_m_telemetry_decoder.h create mode 100644 src/algorithms/telemetry_decoder/adapters/gps_l2c_telemetry_decoder.cc create mode 100644 src/algorithms/telemetry_decoder/adapters/gps_l2c_telemetry_decoder.h create mode 100644 src/algorithms/telemetry_decoder/adapters/gps_l5_telemetry_decoder.cc create mode 100644 src/algorithms/telemetry_decoder/adapters/gps_l5_telemetry_decoder.h create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/beidou_b1i_telemetry_decoder_gs.cc create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/beidou_b1i_telemetry_decoder_gs.h create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/beidou_b3i_telemetry_decoder_gs.cc create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/beidou_b3i_telemetry_decoder_gs.h delete mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_e1b_telemetry_decoder_cc.cc delete mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_e1b_telemetry_decoder_cc.h delete mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_e5a_telemetry_decoder_cc.cc delete mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_e5a_telemetry_decoder_cc.h create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_telemetry_decoder_gs.cc create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/galileo_telemetry_decoder_gs.h create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l1_ca_telemetry_decoder_gs.cc create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l1_ca_telemetry_decoder_gs.h create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l2_ca_telemetry_decoder_gs.cc create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/glonass_l2_ca_telemetry_decoder_gs.h delete mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.cc delete mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_gs.cc create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_gs.h delete mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2_m_telemetry_decoder_cc.cc delete mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2_m_telemetry_decoder_cc.h create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_gs.cc create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_gs.h create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l5_telemetry_decoder_gs.cc create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l5_telemetry_decoder_gs.h delete mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/sbas_l1_telemetry_decoder_cc.cc delete mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/sbas_l1_telemetry_decoder_cc.h create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/sbas_l1_telemetry_decoder_gs.cc create mode 100644 src/algorithms/telemetry_decoder/gnuradio_blocks/sbas_l1_telemetry_decoder_gs.h delete mode 100644 src/algorithms/telemetry_decoder/libs/convolutional.h delete mode 100644 src/algorithms/telemetry_decoder/libs/gps_l1_ca_subframe_fsm.cc delete mode 100644 src/algorithms/telemetry_decoder/libs/gps_l1_ca_subframe_fsm.h create mode 100644 src/algorithms/telemetry_decoder/libs/libswiftcnav/CMakeLists.txt create mode 100644 src/algorithms/telemetry_decoder/libs/libswiftcnav/bits.c create mode 100644 src/algorithms/telemetry_decoder/libs/libswiftcnav/bits.h create mode 100644 src/algorithms/telemetry_decoder/libs/libswiftcnav/cnav_msg.c create mode 100644 src/algorithms/telemetry_decoder/libs/libswiftcnav/cnav_msg.h create mode 100644 src/algorithms/telemetry_decoder/libs/libswiftcnav/edc.c create mode 100644 src/algorithms/telemetry_decoder/libs/libswiftcnav/edc.h create mode 100644 src/algorithms/telemetry_decoder/libs/libswiftcnav/fec.h create mode 100644 src/algorithms/telemetry_decoder/libs/libswiftcnav/swift_common.h create mode 100644 src/algorithms/telemetry_decoder/libs/libswiftcnav/viterbi27.c create mode 100644 src/algorithms/telemetry_decoder/libs/tlm_conf.cc create mode 100644 src/algorithms/telemetry_decoder/libs/tlm_conf.h create mode 100644 src/algorithms/telemetry_decoder/libs/tlm_crc_stats.cc create mode 100644 src/algorithms/telemetry_decoder/libs/tlm_crc_stats.h create mode 100644 src/algorithms/telemetry_decoder/libs/tlm_utils.cc create mode 100644 src/algorithms/telemetry_decoder/libs/tlm_utils.h create mode 100644 src/algorithms/telemetry_decoder/libs/viterbi_decoder_sbas.cc create mode 100644 src/algorithms/telemetry_decoder/libs/viterbi_decoder_sbas.h create mode 100644 src/algorithms/tracking/adapters/beidou_b1i_dll_pll_tracking.cc create mode 100644 src/algorithms/tracking/adapters/beidou_b1i_dll_pll_tracking.h create mode 100644 src/algorithms/tracking/adapters/beidou_b3i_dll_pll_tracking.cc create mode 100644 src/algorithms/tracking/adapters/beidou_b3i_dll_pll_tracking.h mode change 100755 => 100644 src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.cc mode change 100755 => 100644 src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.h create mode 100644 src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking_fpga.cc create mode 100644 src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking_fpga.h create mode 100644 src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking_fpga.cc create mode 100644 src/algorithms/tracking/adapters/galileo_e5a_dll_pll_tracking_fpga.h create mode 100644 src/algorithms/tracking/adapters/galileo_e5b_dll_pll_tracking.cc create mode 100644 src/algorithms/tracking/adapters/galileo_e5b_dll_pll_tracking.h create mode 100644 src/algorithms/tracking/adapters/galileo_e6_dll_pll_tracking.cc create mode 100644 src/algorithms/tracking/adapters/galileo_e6_dll_pll_tracking.h delete mode 100644 src/algorithms/tracking/adapters/galileo_volk_e1_dll_pll_veml_tracking.cc delete mode 100644 src/algorithms/tracking/adapters/galileo_volk_e1_dll_pll_veml_tracking.h create mode 100644 src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_c_aid_tracking.cc create mode 100644 src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_c_aid_tracking.h create mode 100644 src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_tracking.cc create mode 100644 src/algorithms/tracking/adapters/glonass_l1_ca_dll_pll_tracking.h create mode 100644 src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_c_aid_tracking.cc create mode 100644 src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_c_aid_tracking.h create mode 100644 src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_tracking.cc create mode 100644 src/algorithms/tracking/adapters/glonass_l2_ca_dll_pll_tracking.h delete mode 100644 src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.cc delete mode 100644 src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.h delete mode 100644 src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_optim_tracking.cc delete mode 100644 src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_optim_tracking.h create mode 100644 src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_fpga.cc create mode 100644 src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_fpga.h create mode 100644 src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_gpu.cc create mode 100644 src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking_gpu.h create mode 100644 src/algorithms/tracking/adapters/gps_l1_ca_gaussian_tracking.cc create mode 100644 src/algorithms/tracking/adapters/gps_l1_ca_gaussian_tracking.h create mode 100644 src/algorithms/tracking/adapters/gps_l1_ca_kf_tracking.cc create mode 100644 src/algorithms/tracking/adapters/gps_l1_ca_kf_tracking.h create mode 100644 src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking_fpga.cc create mode 100644 src/algorithms/tracking/adapters/gps_l2_m_dll_pll_tracking_fpga.h create mode 100644 src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking.cc create mode 100644 src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking.h create mode 100644 src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking_fpga.cc create mode 100644 src/algorithms/tracking/adapters/gps_l5_dll_pll_tracking_fpga.h create mode 100644 src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking.cc create mode 100644 src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking.h create mode 100644 src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.cc create mode 100644 src/algorithms/tracking/gnuradio_blocks/dll_pll_veml_tracking_fpga.h delete mode 100755 src/algorithms/tracking/gnuradio_blocks/galileo_e1_dll_pll_veml_tracking_cc.cc delete mode 100755 src/algorithms/tracking/gnuradio_blocks/galileo_e1_dll_pll_veml_tracking_cc.h delete mode 100644 src/algorithms/tracking/gnuradio_blocks/galileo_e5a_dll_pll_tracking_cc.cc delete mode 100644 src/algorithms/tracking/gnuradio_blocks/galileo_e5a_dll_pll_tracking_cc.h delete mode 100644 src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.cc delete mode 100644 src/algorithms/tracking/gnuradio_blocks/galileo_volk_e1_dll_pll_veml_tracking_cc.h create mode 100644 src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc create mode 100644 src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.h create mode 100644 src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc create mode 100644 src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.h create mode 100644 src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.cc create mode 100644 src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.h create mode 100644 src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc create mode 100644 src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.h create mode 100644 src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc create mode 100644 src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.h create mode 100644 src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.cc create mode 100644 src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.h delete mode 100644 src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_fll_pll_tracking_cc.cc delete mode 100644 src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_fll_pll_tracking_cc.h delete mode 100644 src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_optim_tracking_cc.cc delete mode 100644 src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_optim_tracking_cc.h delete mode 100644 src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_cc.cc delete mode 100644 src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_cc.h create mode 100644 src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.cc create mode 100644 src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_gpu_cc.h create mode 100644 src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_gaussian_tracking_cc.cc create mode 100644 src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_gaussian_tracking_cc.h delete mode 100644 src/algorithms/tracking/gnuradio_blocks/gps_l2_m_dll_pll_tracking_cc.cc delete mode 100644 src/algorithms/tracking/gnuradio_blocks/gps_l2_m_dll_pll_tracking_cc.h create mode 100644 src/algorithms/tracking/gnuradio_blocks/kf_tracking.cc create mode 100644 src/algorithms/tracking/gnuradio_blocks/kf_tracking.h create mode 100644 src/algorithms/tracking/libs/bayesian_estimation.cc create mode 100644 src/algorithms/tracking/libs/bayesian_estimation.h delete mode 100644 src/algorithms/tracking/libs/correlator.cc delete mode 100644 src/algorithms/tracking/libs/correlator.h create mode 100644 src/algorithms/tracking/libs/cpu_multicorrelator.cc create mode 100644 src/algorithms/tracking/libs/cpu_multicorrelator.h create mode 100644 src/algorithms/tracking/libs/cpu_multicorrelator_16sc.cc create mode 100644 src/algorithms/tracking/libs/cpu_multicorrelator_16sc.h create mode 100644 src/algorithms/tracking/libs/cpu_multicorrelator_real_codes.cc create mode 100644 src/algorithms/tracking/libs/cpu_multicorrelator_real_codes.h create mode 100644 src/algorithms/tracking/libs/cuda_multicorrelator.cu create mode 100644 src/algorithms/tracking/libs/cuda_multicorrelator.h create mode 100644 src/algorithms/tracking/libs/dll_pll_conf.cc create mode 100644 src/algorithms/tracking/libs/dll_pll_conf.h create mode 100644 src/algorithms/tracking/libs/dll_pll_conf_fpga.cc create mode 100644 src/algorithms/tracking/libs/dll_pll_conf_fpga.h create mode 100644 src/algorithms/tracking/libs/exponential_smoother.cc create mode 100644 src/algorithms/tracking/libs/exponential_smoother.h create mode 100644 src/algorithms/tracking/libs/fpga_multicorrelator.cc create mode 100644 src/algorithms/tracking/libs/fpga_multicorrelator.h create mode 100644 src/algorithms/tracking/libs/kf_conf.cc create mode 100644 src/algorithms/tracking/libs/kf_conf.h create mode 100644 src/algorithms/tracking/libs/nonlinear_tracking.cc create mode 100644 src/algorithms/tracking/libs/nonlinear_tracking.h delete mode 100644 src/algorithms/tracking/libs/tcp_packet_data.cc create mode 100644 src/algorithms/tracking/libs/tracking_loop_filter.cc create mode 100644 src/algorithms/tracking/libs/tracking_loop_filter.h delete mode 100644 src/algorithms/tracking/libs/volk_cw_epl_corr.h create mode 100644 src/core/interfaces/signal_source_interface.h create mode 100644 src/core/libs/channel_event.cc create mode 100644 src/core/libs/channel_event.h create mode 100644 src/core/libs/channel_status_msg_receiver.cc create mode 100644 src/core/libs/channel_status_msg_receiver.h create mode 100644 src/core/libs/command_event.cc create mode 100644 src/core/libs/command_event.h create mode 100644 src/core/libs/galileo_e6_has_msg_receiver.cc create mode 100644 src/core/libs/galileo_e6_has_msg_receiver.h create mode 100644 src/core/libs/galileo_tow_map.cc create mode 100644 src/core/libs/galileo_tow_map.h create mode 100644 src/core/libs/gnss_crypto.cc create mode 100644 src/core/libs/gnss_crypto.h create mode 100644 src/core/libs/gnss_sdr_fpga_sample_counter.cc create mode 100644 src/core/libs/gnss_sdr_fpga_sample_counter.h create mode 100644 src/core/libs/gnss_sdr_sample_counter.cc create mode 100644 src/core/libs/gnss_sdr_sample_counter.h create mode 100644 src/core/libs/gnss_sdr_time_counter.cc create mode 100644 src/core/libs/gnss_sdr_time_counter.h create mode 100644 src/core/libs/nav_message_monitor.cc create mode 100644 src/core/libs/nav_message_monitor.h create mode 100644 src/core/libs/nav_message_packet.h create mode 100644 src/core/libs/nav_message_udp_sink.cc create mode 100644 src/core/libs/nav_message_udp_sink.h create mode 100644 src/core/libs/osnma_helper.cc create mode 100644 src/core/libs/osnma_helper.h create mode 100644 src/core/libs/osnma_msg_receiver.cc create mode 100644 src/core/libs/osnma_msg_receiver.h create mode 100644 src/core/libs/osnma_nav_data_manager.cc create mode 100644 src/core/libs/osnma_nav_data_manager.h create mode 100644 src/core/libs/serdes_nav_message.h delete mode 100644 src/core/libs/supl/asn-rrlp/BIT_STRING.c delete mode 100644 src/core/libs/supl/asn-rrlp/BIT_STRING.h delete mode 100644 src/core/libs/supl/asn-rrlp/BOOLEAN.c delete mode 100644 src/core/libs/supl/asn-rrlp/BOOLEAN.h delete mode 100644 src/core/libs/supl/asn-rrlp/ENUMERATED.c delete mode 100644 src/core/libs/supl/asn-rrlp/ENUMERATED.h delete mode 100644 src/core/libs/supl/asn-rrlp/INTEGER.c delete mode 100644 src/core/libs/supl/asn-rrlp/INTEGER.h delete mode 100644 src/core/libs/supl/asn-rrlp/NativeEnumerated.c delete mode 100644 src/core/libs/supl/asn-rrlp/NativeEnumerated.h delete mode 100644 src/core/libs/supl/asn-rrlp/NativeInteger.c delete mode 100644 src/core/libs/supl/asn-rrlp/NativeInteger.h delete mode 100644 src/core/libs/supl/asn-rrlp/OCTET_STRING.c delete mode 100644 src/core/libs/supl/asn-rrlp/OCTET_STRING.h delete mode 100644 src/core/libs/supl/asn-rrlp/asn_SEQUENCE_OF.c delete mode 100644 src/core/libs/supl/asn-rrlp/asn_SEQUENCE_OF.h delete mode 100644 src/core/libs/supl/asn-rrlp/asn_SET_OF.c delete mode 100644 src/core/libs/supl/asn-rrlp/asn_SET_OF.h delete mode 100644 src/core/libs/supl/asn-rrlp/asn_application.h delete mode 100644 src/core/libs/supl/asn-rrlp/asn_codecs.h delete mode 100644 src/core/libs/supl/asn-rrlp/asn_codecs_prim.c delete mode 100644 src/core/libs/supl/asn-rrlp/asn_codecs_prim.h delete mode 100644 src/core/libs/supl/asn-rrlp/asn_internal.h delete mode 100644 src/core/libs/supl/asn-rrlp/asn_system.h delete mode 100644 src/core/libs/supl/asn-rrlp/ber_decoder.c delete mode 100644 src/core/libs/supl/asn-rrlp/ber_decoder.h delete mode 100644 src/core/libs/supl/asn-rrlp/ber_tlv_length.c delete mode 100644 src/core/libs/supl/asn-rrlp/ber_tlv_length.h delete mode 100644 src/core/libs/supl/asn-rrlp/ber_tlv_tag.c delete mode 100644 src/core/libs/supl/asn-rrlp/ber_tlv_tag.h delete mode 100644 src/core/libs/supl/asn-rrlp/constr_CHOICE.c delete mode 100644 src/core/libs/supl/asn-rrlp/constr_CHOICE.h delete mode 100644 src/core/libs/supl/asn-rrlp/constr_SEQUENCE.c delete mode 100644 src/core/libs/supl/asn-rrlp/constr_SEQUENCE.h delete mode 100644 src/core/libs/supl/asn-rrlp/constr_SEQUENCE_OF.c delete mode 100644 src/core/libs/supl/asn-rrlp/constr_SEQUENCE_OF.h delete mode 100644 src/core/libs/supl/asn-rrlp/constr_SET_OF.c delete mode 100644 src/core/libs/supl/asn-rrlp/constr_SET_OF.h delete mode 100644 src/core/libs/supl/asn-rrlp/constr_TYPE.c delete mode 100644 src/core/libs/supl/asn-rrlp/constr_TYPE.h delete mode 100644 src/core/libs/supl/asn-rrlp/constraints.c delete mode 100644 src/core/libs/supl/asn-rrlp/constraints.h delete mode 100644 src/core/libs/supl/asn-rrlp/der_encoder.c delete mode 100644 src/core/libs/supl/asn-rrlp/der_encoder.h delete mode 100644 src/core/libs/supl/asn-rrlp/per_decoder.c delete mode 100644 src/core/libs/supl/asn-rrlp/per_decoder.h delete mode 100644 src/core/libs/supl/asn-rrlp/per_encoder.c delete mode 100644 src/core/libs/supl/asn-rrlp/per_encoder.h delete mode 100644 src/core/libs/supl/asn-rrlp/per_opentype.c delete mode 100644 src/core/libs/supl/asn-rrlp/per_opentype.h delete mode 100644 src/core/libs/supl/asn-rrlp/per_support.c delete mode 100644 src/core/libs/supl/asn-rrlp/per_support.h delete mode 100644 src/core/libs/supl/asn-rrlp/xer_decoder.c delete mode 100644 src/core/libs/supl/asn-rrlp/xer_decoder.h delete mode 100644 src/core/libs/supl/asn-rrlp/xer_encoder.c delete mode 100644 src/core/libs/supl/asn-rrlp/xer_encoder.h delete mode 100644 src/core/libs/supl/asn-rrlp/xer_support.c delete mode 100644 src/core/libs/supl/asn-rrlp/xer_support.h delete mode 100644 src/core/libs/supl/asn-supl/BIT_STRING.c delete mode 100644 src/core/libs/supl/asn-supl/BIT_STRING.h delete mode 100644 src/core/libs/supl/asn-supl/BOOLEAN.c delete mode 100644 src/core/libs/supl/asn-supl/BOOLEAN.h delete mode 100644 src/core/libs/supl/asn-supl/ENUMERATED.c delete mode 100644 src/core/libs/supl/asn-supl/ENUMERATED.h delete mode 100644 src/core/libs/supl/asn-supl/INTEGER.c delete mode 100644 src/core/libs/supl/asn-supl/INTEGER.h delete mode 100644 src/core/libs/supl/asn-supl/NativeEnumerated.c delete mode 100644 src/core/libs/supl/asn-supl/NativeEnumerated.h delete mode 100644 src/core/libs/supl/asn-supl/NativeInteger.c delete mode 100644 src/core/libs/supl/asn-supl/NativeInteger.h delete mode 100644 src/core/libs/supl/asn-supl/OCTET_STRING.c delete mode 100644 src/core/libs/supl/asn-supl/OCTET_STRING.h delete mode 100644 src/core/libs/supl/asn-supl/asn_SEQUENCE_OF.c delete mode 100644 src/core/libs/supl/asn-supl/asn_SEQUENCE_OF.h delete mode 100644 src/core/libs/supl/asn-supl/asn_SET_OF.c delete mode 100644 src/core/libs/supl/asn-supl/asn_SET_OF.h delete mode 100644 src/core/libs/supl/asn-supl/asn_application.h delete mode 100644 src/core/libs/supl/asn-supl/asn_codecs.h delete mode 100644 src/core/libs/supl/asn-supl/asn_codecs_prim.c delete mode 100644 src/core/libs/supl/asn-supl/asn_codecs_prim.h delete mode 100644 src/core/libs/supl/asn-supl/asn_internal.h delete mode 100644 src/core/libs/supl/asn-supl/asn_system.h delete mode 100644 src/core/libs/supl/asn-supl/ber_decoder.c delete mode 100644 src/core/libs/supl/asn-supl/ber_decoder.h delete mode 100644 src/core/libs/supl/asn-supl/ber_tlv_length.c delete mode 100644 src/core/libs/supl/asn-supl/ber_tlv_length.h delete mode 100644 src/core/libs/supl/asn-supl/ber_tlv_tag.c delete mode 100644 src/core/libs/supl/asn-supl/ber_tlv_tag.h delete mode 100644 src/core/libs/supl/asn-supl/constr_CHOICE.c delete mode 100644 src/core/libs/supl/asn-supl/constr_CHOICE.h delete mode 100644 src/core/libs/supl/asn-supl/constr_SEQUENCE.c delete mode 100644 src/core/libs/supl/asn-supl/constr_SEQUENCE.h delete mode 100644 src/core/libs/supl/asn-supl/constr_SEQUENCE_OF.c delete mode 100644 src/core/libs/supl/asn-supl/constr_SEQUENCE_OF.h delete mode 100644 src/core/libs/supl/asn-supl/constr_SET_OF.c delete mode 100644 src/core/libs/supl/asn-supl/constr_SET_OF.h delete mode 100644 src/core/libs/supl/asn-supl/constr_TYPE.c delete mode 100644 src/core/libs/supl/asn-supl/constr_TYPE.h delete mode 100644 src/core/libs/supl/asn-supl/constraints.c delete mode 100644 src/core/libs/supl/asn-supl/constraints.h delete mode 100644 src/core/libs/supl/asn-supl/der_encoder.c delete mode 100644 src/core/libs/supl/asn-supl/der_encoder.h delete mode 100644 src/core/libs/supl/asn-supl/per_decoder.c delete mode 100644 src/core/libs/supl/asn-supl/per_decoder.h delete mode 100644 src/core/libs/supl/asn-supl/per_encoder.c delete mode 100644 src/core/libs/supl/asn-supl/per_encoder.h delete mode 100644 src/core/libs/supl/asn-supl/per_opentype.c delete mode 100644 src/core/libs/supl/asn-supl/per_opentype.h delete mode 100644 src/core/libs/supl/asn-supl/per_support.c delete mode 100644 src/core/libs/supl/asn-supl/per_support.h delete mode 100644 src/core/libs/supl/asn-supl/xer_decoder.c delete mode 100644 src/core/libs/supl/asn-supl/xer_decoder.h delete mode 100644 src/core/libs/supl/asn-supl/xer_encoder.c delete mode 100644 src/core/libs/supl/asn-supl/xer_encoder.h delete mode 100644 src/core/libs/supl/asn-supl/xer_support.c delete mode 100644 src/core/libs/supl/asn-supl/xer_support.h create mode 100644 src/core/libs/supl/types/BIT_STRING.c create mode 100644 src/core/libs/supl/types/BIT_STRING.h create mode 100644 src/core/libs/supl/types/BOOLEAN.c create mode 100644 src/core/libs/supl/types/BOOLEAN.h create mode 100644 src/core/libs/supl/types/ENUMERATED.c create mode 100644 src/core/libs/supl/types/ENUMERATED.h create mode 100644 src/core/libs/supl/types/INTEGER.c create mode 100644 src/core/libs/supl/types/INTEGER.h create mode 100644 src/core/libs/supl/types/NativeEnumerated.c create mode 100644 src/core/libs/supl/types/NativeEnumerated.h create mode 100644 src/core/libs/supl/types/NativeInteger.c create mode 100644 src/core/libs/supl/types/NativeInteger.h create mode 100644 src/core/libs/supl/types/OCTET_STRING.c create mode 100644 src/core/libs/supl/types/OCTET_STRING.h create mode 100644 src/core/libs/supl/types/asn_SEQUENCE_OF.c create mode 100644 src/core/libs/supl/types/asn_SEQUENCE_OF.h create mode 100644 src/core/libs/supl/types/asn_SET_OF.c create mode 100644 src/core/libs/supl/types/asn_SET_OF.h create mode 100644 src/core/libs/supl/types/asn_application.h create mode 100644 src/core/libs/supl/types/asn_codecs.h create mode 100644 src/core/libs/supl/types/asn_codecs_prim.c create mode 100644 src/core/libs/supl/types/asn_codecs_prim.h create mode 100644 src/core/libs/supl/types/asn_internal.h create mode 100644 src/core/libs/supl/types/asn_system.h create mode 100644 src/core/libs/supl/types/ber_decoder.c create mode 100644 src/core/libs/supl/types/ber_decoder.h create mode 100644 src/core/libs/supl/types/ber_tlv_length.c create mode 100644 src/core/libs/supl/types/ber_tlv_length.h create mode 100644 src/core/libs/supl/types/ber_tlv_tag.c create mode 100644 src/core/libs/supl/types/ber_tlv_tag.h create mode 100644 src/core/libs/supl/types/constr_CHOICE.c create mode 100644 src/core/libs/supl/types/constr_CHOICE.h create mode 100644 src/core/libs/supl/types/constr_SEQUENCE.c create mode 100644 src/core/libs/supl/types/constr_SEQUENCE.h create mode 100644 src/core/libs/supl/types/constr_SEQUENCE_OF.c create mode 100644 src/core/libs/supl/types/constr_SEQUENCE_OF.h create mode 100644 src/core/libs/supl/types/constr_SET_OF.c create mode 100644 src/core/libs/supl/types/constr_SET_OF.h create mode 100644 src/core/libs/supl/types/constr_TYPE.c create mode 100644 src/core/libs/supl/types/constr_TYPE.h create mode 100644 src/core/libs/supl/types/constraints.c create mode 100644 src/core/libs/supl/types/constraints.h create mode 100644 src/core/libs/supl/types/der_encoder.c create mode 100644 src/core/libs/supl/types/der_encoder.h create mode 100644 src/core/libs/supl/types/per_decoder.c create mode 100644 src/core/libs/supl/types/per_decoder.h create mode 100644 src/core/libs/supl/types/per_encoder.c create mode 100644 src/core/libs/supl/types/per_encoder.h create mode 100644 src/core/libs/supl/types/per_opentype.c create mode 100644 src/core/libs/supl/types/per_opentype.h create mode 100644 src/core/libs/supl/types/per_support.c create mode 100644 src/core/libs/supl/types/per_support.h create mode 100644 src/core/libs/supl/types/xer_decoder.c create mode 100644 src/core/libs/supl/types/xer_decoder.h create mode 100644 src/core/libs/supl/types/xer_encoder.c create mode 100644 src/core/libs/supl/types/xer_encoder.h create mode 100644 src/core/libs/supl/types/xer_support.c create mode 100644 src/core/libs/supl/types/xer_support.h create mode 100644 src/core/libs/uio_fpga.cc create mode 100644 src/core/libs/uio_fpga.h create mode 100644 src/core/monitor/CMakeLists.txt create mode 100644 src/core/monitor/gnss_synchro_monitor.cc create mode 100644 src/core/monitor/gnss_synchro_monitor.h create mode 100644 src/core/monitor/gnss_synchro_udp_sink.cc create mode 100644 src/core/monitor/gnss_synchro_udp_sink.h create mode 100644 src/core/monitor/serdes_gnss_synchro.h delete mode 100644 src/core/receiver/control_message.h delete mode 100644 src/core/receiver/control_message_factory.cc delete mode 100644 src/core/receiver/control_message_factory.h create mode 100644 src/core/receiver/tcp_cmd_interface.cc create mode 100644 src/core/receiver/tcp_cmd_interface.h create mode 100644 src/core/system_parameters/Beidou_B1I.h create mode 100644 src/core/system_parameters/Beidou_B3I.h create mode 100644 src/core/system_parameters/Beidou_DNAV.h create mode 100644 src/core/system_parameters/GLONASS_L1_L2_CA.h create mode 100644 src/core/system_parameters/GPS_CNAV.h create mode 100644 src/core/system_parameters/GPS_L5.h create mode 100644 src/core/system_parameters/Galileo_CNAV.h create mode 100644 src/core/system_parameters/Galileo_E5b.h create mode 100644 src/core/system_parameters/Galileo_E6.h create mode 100644 src/core/system_parameters/Galileo_FNAV.h create mode 100644 src/core/system_parameters/Galileo_INAV.h create mode 100644 src/core/system_parameters/Galileo_OSNMA.h create mode 100644 src/core/system_parameters/agnss_ref_location.h create mode 100644 src/core/system_parameters/agnss_ref_time.h create mode 100644 src/core/system_parameters/beidou_dnav_almanac.h create mode 100644 src/core/system_parameters/beidou_dnav_ephemeris.cc create mode 100644 src/core/system_parameters/beidou_dnav_ephemeris.h create mode 100644 src/core/system_parameters/beidou_dnav_iono.h create mode 100644 src/core/system_parameters/beidou_dnav_navigation_message.cc create mode 100644 src/core/system_parameters/beidou_dnav_navigation_message.h create mode 100644 src/core/system_parameters/beidou_dnav_utc_model.h create mode 100644 src/core/system_parameters/display.h delete mode 100644 src/core/system_parameters/galileo_almanac.cc create mode 100644 src/core/system_parameters/galileo_almanac_helper.cc create mode 100644 src/core/system_parameters/galileo_almanac_helper.h create mode 100644 src/core/system_parameters/galileo_cnav_message.cc create mode 100644 src/core/system_parameters/galileo_cnav_message.h create mode 100644 src/core/system_parameters/galileo_has_data.cc create mode 100644 src/core/system_parameters/galileo_has_data.h create mode 100644 src/core/system_parameters/galileo_has_page.h create mode 100644 src/core/system_parameters/galileo_inav_message.cc create mode 100644 src/core/system_parameters/galileo_inav_message.h delete mode 100644 src/core/system_parameters/galileo_iono.cc create mode 100644 src/core/system_parameters/galileo_ism.cc create mode 100644 src/core/system_parameters/galileo_ism.h delete mode 100644 src/core/system_parameters/galileo_navigation_message.cc delete mode 100644 src/core/system_parameters/galileo_navigation_message.h create mode 100644 src/core/system_parameters/galileo_reduced_ced.cc create mode 100644 src/core/system_parameters/galileo_reduced_ced.h create mode 100644 src/core/system_parameters/glonass_gnav_almanac.h create mode 100644 src/core/system_parameters/glonass_gnav_ephemeris.cc create mode 100644 src/core/system_parameters/glonass_gnav_ephemeris.h create mode 100644 src/core/system_parameters/glonass_gnav_navigation_message.cc create mode 100644 src/core/system_parameters/glonass_gnav_navigation_message.h create mode 100644 src/core/system_parameters/glonass_gnav_utc_model.cc create mode 100644 src/core/system_parameters/glonass_gnav_utc_model.h create mode 100644 src/core/system_parameters/gnss_almanac.cc create mode 100644 src/core/system_parameters/gnss_almanac.h create mode 100644 src/core/system_parameters/gnss_ephemeris.cc create mode 100644 src/core/system_parameters/gnss_ephemeris.h create mode 100644 src/core/system_parameters/gnss_frequencies.h create mode 100644 src/core/system_parameters/gnss_obs_codes.h delete mode 100644 src/core/system_parameters/gps_acq_assist.cc delete mode 100644 src/core/system_parameters/gps_almanac.cc delete mode 100644 src/core/system_parameters/gps_cnav_ephemeris.cc delete mode 100644 src/core/system_parameters/gps_cnav_iono.cc delete mode 100644 src/core/system_parameters/gps_cnav_utc_model.cc delete mode 100644 src/core/system_parameters/gps_iono.cc delete mode 100644 src/core/system_parameters/gps_ref_location.cc delete mode 100644 src/core/system_parameters/gps_ref_location.h delete mode 100644 src/core/system_parameters/gps_ref_time.cc delete mode 100644 src/core/system_parameters/gps_ref_time.h delete mode 100644 src/core/system_parameters/gps_utc_model.cc create mode 100644 src/core/system_parameters/osnma_data.cc create mode 100644 src/core/system_parameters/osnma_data.h create mode 100644 src/core/system_parameters/osnma_dsm_reader.cc create mode 100644 src/core/system_parameters/osnma_dsm_reader.h create mode 100644 src/core/system_parameters/reed_solomon.cc create mode 100644 src/core/system_parameters/reed_solomon.h delete mode 100644 src/core/system_parameters/sbas_ionospheric_correction.cc delete mode 100644 src/core/system_parameters/sbas_ionospheric_correction.h delete mode 100644 src/core/system_parameters/sbas_satellite_correction.cc delete mode 100644 src/core/system_parameters/sbas_satellite_correction.h delete mode 100644 src/core/system_parameters/sbas_telemetry_data.cc delete mode 100644 src/core/system_parameters/sbas_telemetry_data.h delete mode 100644 src/core/system_parameters/sbas_time.h delete mode 100644 src/tests/CMakeLists.txt delete mode 100644 src/tests/arithmetic/code_generation_test.cc delete mode 100644 src/tests/arithmetic/complex_carrier_test.cc delete mode 100644 src/tests/arithmetic/conjugate_test.cc delete mode 100644 src/tests/arithmetic/magnitude_squared_test.cc delete mode 100644 src/tests/arithmetic/multiply_test.cc delete mode 100644 src/tests/configuration/file_configuration_test.cc delete mode 100644 src/tests/configuration/in_memory_configuration_test.cc delete mode 100644 src/tests/control_thread/control_message_factory_test.cc delete mode 100644 src/tests/control_thread/control_thread_test.cc delete mode 100644 src/tests/data/gps_l2c_m_prn7_5msps.dat delete mode 100644 src/tests/flowgraph/gnss_flowgraph_test.cc delete mode 100644 src/tests/flowgraph/pass_through_test.cc delete mode 100644 src/tests/gnss_block/file_output_filter_test.cc delete mode 100644 src/tests/gnss_block/file_signal_source_test.cc delete mode 100644 src/tests/gnss_block/fir_filter_test.cc delete mode 100644 src/tests/gnss_block/galileo_e1_dll_pll_veml_tracking_test.cc delete mode 100644 src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc delete mode 100644 src/tests/gnss_block/galileo_e1_pcps_ambiguous_acquisition_test.cc delete mode 100644 src/tests/gnss_block/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc delete mode 100644 src/tests/gnss_block/galileo_e5a_tracking_test.cc delete mode 100644 src/tests/gnss_block/gnss_block_factory_test.cc delete mode 100644 src/tests/gnss_block/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc delete mode 100644 src/tests/gnss_block/gps_l1_ca_pcps_acquisition_test.cc delete mode 100644 src/tests/gnss_block/gps_l1_ca_pcps_multithread_acquisition_gsoc2013_test.cc delete mode 100644 src/tests/gnss_block/gps_l1_ca_pcps_opencl_acquisition_gsoc2013_test.cc delete mode 100644 src/tests/gnss_block/gps_l2_m_dll_pll_tracking_test.cc delete mode 100644 src/tests/gnss_block/gps_l2_m_pcps_acquisition_test.cc delete mode 100644 src/tests/gnss_block/rtcm_printer_test.cc delete mode 100644 src/tests/gnuradio_block/direct_resampler_conditioner_cc_test.cc delete mode 100644 src/tests/gnuradio_block/gnss_sdr_valve_test.cc delete mode 100644 src/tests/signal_samples/GPS_L1_CA_ID_1_Fs_4Msps_2ms.dat delete mode 100644 src/tests/signal_samples/GPS_L1_CA_ID_1_Fs_4Msps_signal_analysis.txt delete mode 100644 src/tests/signal_samples/GSoC_CTTC_capture_2012_07_26_4Msps_4ms.dat delete mode 100644 src/tests/signal_samples/GSoC_CTTC_capture_2012_07_26_4Msps_4ms_analysis.txt delete mode 100644 src/tests/signal_samples/Galileo_E1_ID_1_Fs_4Msps_8ms.dat delete mode 100644 src/tests/signal_samples/Galileo_E1_ID_1_Fs_4Msps_8ms_signal_analysis.txt delete mode 100644 src/tests/single_test_main.cc delete mode 100644 src/tests/string_converter/string_converter_test.cc delete mode 100644 src/tests/test_main.cc delete mode 100644 src/utils/CMakeLists.txt delete mode 100644 src/utils/front-end-cal/CMakeLists.txt delete mode 100644 src/utils/front-end-cal/main.cc delete mode 100644 src/utils/gnuplot/4_GPS_3_GAL.plt delete mode 100644 src/utils/gnuplot/4_GPS_3_GAL_GNSS_SDR_solutions.txt delete mode 100644 src/utils/gnuplot/4_GPS_3_GAL_accuracy_precision.jpeg delete mode 100644 src/utils/gnuplot/8_GALILEO_accuracy_precision.jpeg delete mode 100644 src/utils/gnuplot/8_GAL_GNSS_SDR_solutions.txt delete mode 100644 src/utils/gnuplot/8_GPS.plt delete mode 100644 src/utils/gnuplot/8_GPS_GNSS_SDR_solutions.txt delete mode 100644 src/utils/gnuplot/8_GPS_accuracy_precision.jpeg delete mode 100644 src/utils/gnuplot/8_Galileo.plt delete mode 100644 src/utils/gnuplot/8_sat_accuracy_precision.jpeg delete mode 100644 src/utils/gnuplot/8_sat_accuracy_precision.plt delete mode 100644 src/utils/gnuplot/statistics/4_GPS_3_GAL_GNSS_SDR_statitics.txt delete mode 100644 src/utils/gnuplot/statistics/8_GAL_GNSS_SDR_statitics.txt delete mode 100644 src/utils/gnuplot/statistics/8_GPS_GNSS_SDR_statitics.txt delete mode 100644 src/utils/gpstk/gnsspvt/CMakeLists.txt delete mode 100644 src/utils/gpstk/gnsspvt/CMakeModules/FindGLOG.cmake delete mode 100644 src/utils/gpstk/gnsspvt/CMakeModules/FindGPSTK.cmake delete mode 100644 src/utils/gpstk/gnsspvt/README delete mode 100644 src/utils/gpstk/gnsspvt/src/gnsspvt.cpp delete mode 100644 src/utils/gpstk/gnsspvt/src/kml_printer_gpstk.cpp delete mode 100644 src/utils/gpstk/gnsspvt/src/kml_printer_gpstk.h delete mode 100644 src/utils/matlab/galileo_e1_dll_pll_veml_plot_sample_32bits.m delete mode 100644 src/utils/matlab/galileo_e1_dll_pll_veml_plot_sample_64bits.m delete mode 100644 src/utils/matlab/galileo_e1b_observables_plot_sample.m delete mode 100644 src/utils/matlab/galileo_e5a_dll_pll_plot_sample_64bits.m delete mode 100644 src/utils/matlab/gps_l1_ca_dll_fll_pll_plot_sample.m delete mode 100644 src/utils/matlab/gps_l1_ca_dll_pll_plot_sample.m delete mode 100644 src/utils/matlab/gps_l1_ca_dll_pll_plot_sample_64bits.m delete mode 100644 src/utils/matlab/gps_l1_ca_observables_plot_sample.m delete mode 100644 src/utils/matlab/gps_l1_ca_pvt_plot_sample_agilent_cap2.m delete mode 100644 src/utils/matlab/gps_l1_ca_pvt_raw_plot_sample.m delete mode 100644 src/utils/matlab/gps_l1_ca_telemetry_plot_sample.m delete mode 100644 src/utils/matlab/help_script2.m delete mode 100644 src/utils/matlab/libs/galileo_e1_dll_pll_veml_read_tracking_dump.m delete mode 100644 src/utils/matlab/libs/galileo_e1_dll_pll_veml_read_tracking_dump_32bits.m delete mode 100644 src/utils/matlab/libs/geoFunctions/cart2utm.m delete mode 100644 src/utils/matlab/libs/geoFunctions/clsin.m delete mode 100644 src/utils/matlab/libs/geoFunctions/dms2deg.m delete mode 100644 src/utils/matlab/libs/gps_l1_ca_dll_fll_pll_read_tracking_dump.m delete mode 100644 src/utils/matlab/libs/gps_l1_ca_dll_pll_read_observables_dump.m delete mode 100644 src/utils/matlab/libs/gps_l1_ca_dll_pll_read_tracking_dump.m delete mode 100644 src/utils/matlab/libs/gps_l1_ca_dll_pll_read_tracking_dump_64bits.m delete mode 100644 src/utils/matlab/libs/gps_l1_ca_pvt_read_pvt_dump.m delete mode 100644 src/utils/matlab/libs/gps_l1_ca_read_observables_dump.m delete mode 100644 src/utils/matlab/libs/gps_l1_ca_read_pvt_raw_dump.m delete mode 100644 src/utils/matlab/libs/gps_l1_ca_read_telemetry_dump.m delete mode 100644 src/utils/matlab/libs/plotTracking.m delete mode 100644 src/utils/matlab/libs/plotVEMLTracking.m delete mode 100644 src/utils/matlab/plotTrackingE5a.m create mode 100644 tests/CMakeLists.txt create mode 100644 tests/benchmarks/CMakeLists.txt create mode 100644 tests/benchmarks/README.md create mode 100644 tests/benchmarks/benchmark_atan2.cc create mode 100644 tests/benchmarks/benchmark_copy.cc create mode 100644 tests/benchmarks/benchmark_crypto.cc create mode 100644 tests/benchmarks/benchmark_detector.cc create mode 100644 tests/benchmarks/benchmark_osnma.cc create mode 100644 tests/benchmarks/benchmark_preamble.cc create mode 100644 tests/benchmarks/benchmark_reed_solomon.cc create mode 100644 tests/common-files/gnuplot_i.h create mode 100644 tests/common-files/observable_tests_flags.h create mode 100644 tests/common-files/signal_generator_flags.h create mode 100644 tests/common-files/test_flags.h create mode 100644 tests/common-files/tracking_tests_flags.h rename {src/tests => tests}/data/config_file_sample.txt (78%) create mode 100644 tests/data/gnsstk_gcc13.patch create mode 100644 tests/data/gnsstk_static13.patch create mode 100644 tests/data/gnsstk_static14.patch create mode 100644 tests/data/rtklib_test/eph_GPS_L1CA_test1.xml create mode 100644 tests/data/rtklib_test/obs_test1.xml create mode 100644 tests/single_test_main.cc create mode 100644 tests/system-tests/libs/CMakeLists.txt create mode 100644 tests/system-tests/libs/position_test_flags.h create mode 100644 tests/system-tests/libs/rtklib_solver_dump_reader.cc create mode 100644 tests/system-tests/libs/rtklib_solver_dump_reader.h create mode 100644 tests/system-tests/libs/spirent_motion_csv_dump_reader.cc create mode 100644 tests/system-tests/libs/spirent_motion_csv_dump_reader.h create mode 100644 tests/system-tests/position_test.cc create mode 100644 tests/system-tests/ttff.cc create mode 100644 tests/test_main.cc create mode 100644 tests/unit-tests/arithmetic/code_generation_test.cc create mode 100644 tests/unit-tests/arithmetic/complex_carrier_test.cc create mode 100644 tests/unit-tests/arithmetic/conjugate_test.cc create mode 100644 tests/unit-tests/arithmetic/fft_length_test.cc create mode 100644 tests/unit-tests/arithmetic/fft_speed_test.cc create mode 100644 tests/unit-tests/arithmetic/magnitude_squared_test.cc create mode 100644 tests/unit-tests/arithmetic/matio_test.cc create mode 100644 tests/unit-tests/arithmetic/multiply_test.cc create mode 100644 tests/unit-tests/arithmetic/preamble_correlator_test.cc create mode 100644 tests/unit-tests/control-plane/control_thread_test.cc create mode 100644 tests/unit-tests/control-plane/file_configuration_test.cc create mode 100644 tests/unit-tests/control-plane/gnss_block_factory_test.cc create mode 100644 tests/unit-tests/control-plane/gnss_flowgraph_test.cc create mode 100644 tests/unit-tests/control-plane/in_memory_configuration_test.cc create mode 100644 tests/unit-tests/control-plane/protobuf_test.cc create mode 100644 tests/unit-tests/control-plane/string_converter_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/acq_performance_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/beidou_b1i_pcps_acquisition_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/beidou_b3i_pcps_acquisition_test.cc rename {src/tests/gnss_block => tests/unit-tests/signal-processing-blocks/acquisition}/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc (54%) rename {src/tests/gnss_block => tests/unit-tests/signal-processing-blocks/acquisition}/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc (51%) create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_test_fpga.cc rename {src/tests/gnss_block => tests/unit-tests/signal-processing-blocks/acquisition}/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc (51%) rename {src/tests/gnss_block => tests/unit-tests/signal-processing-blocks/acquisition}/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc (54%) rename {src/tests/gnss_block => tests/unit-tests/signal-processing-blocks/acquisition}/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc (52%) create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/galileo_e5b_pcps_acquisition_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/galileo_e6_pcps_acquisition_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_gsoc2017_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/glonass_l2_ca_pcps_acquisition_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test_fpga.cc create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_opencl_acquisition_gsoc2013_test.cc rename {src/tests/gnss_block => tests/unit-tests/signal-processing-blocks/acquisition}/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc (56%) rename {src/tests/gnss_block => tests/unit-tests/signal-processing-blocks/acquisition}/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc (51%) create mode 100644 tests/unit-tests/signal-processing-blocks/acquisition/gps_l2_m_pcps_acquisition_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/adapter/adapter_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/adapter/pass_through_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/filter/fir_filter_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/filter/notch_filter_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/libs/CMakeLists.txt create mode 100644 tests/unit-tests/signal-processing-blocks/libs/acquisition_dump_reader.cc create mode 100644 tests/unit-tests/signal-processing-blocks/libs/acquisition_dump_reader.h create mode 100644 tests/unit-tests/signal-processing-blocks/libs/acquisition_msg_rx.cc create mode 100644 tests/unit-tests/signal-processing-blocks/libs/acquisition_msg_rx.h create mode 100644 tests/unit-tests/signal-processing-blocks/libs/item_type_helpers_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/libs/observables_dump_reader.cc create mode 100644 tests/unit-tests/signal-processing-blocks/libs/observables_dump_reader.h create mode 100644 tests/unit-tests/signal-processing-blocks/libs/tlm_dump_reader.cc create mode 100644 tests/unit-tests/signal-processing-blocks/libs/tlm_dump_reader.h create mode 100644 tests/unit-tests/signal-processing-blocks/libs/tracking_dump_reader.cc create mode 100644 tests/unit-tests/signal-processing-blocks/libs/tracking_dump_reader.h create mode 100644 tests/unit-tests/signal-processing-blocks/libs/tracking_true_obs_reader.cc create mode 100644 tests/unit-tests/signal-processing-blocks/libs/tracking_true_obs_reader.h create mode 100644 tests/unit-tests/signal-processing-blocks/libs/true_observables_reader.cc create mode 100644 tests/unit-tests/signal-processing-blocks/libs/true_observables_reader.h create mode 100644 tests/unit-tests/signal-processing-blocks/observables/hybrid_observables_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/observables/hybrid_observables_test_fpga.cc create mode 100644 tests/unit-tests/signal-processing-blocks/osnma/gnss_crypto_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/osnma/osnma_msg_receiver_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/osnma/osnma_test_vectors.cc create mode 100644 tests/unit-tests/signal-processing-blocks/pvt/geohash_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/pvt/nmea_printer_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/pvt/rinex_printer_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/pvt/rtcm_printer_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/pvt/rtcm_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/pvt/rtklib_solver_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/pvt/serdes_monitor_pvt_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/resampler/direct_resampler_conditioner_cc_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/resampler/mmse_resampler_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/sources/file_signal_source_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/sources/gnss_sdr_valve_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/sources/unpack_2bit_samples_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/telemetry_decoder/galileo_fnav_inav_decoder_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/telemetry_decoder/gps_l1_ca_telemetry_decoder_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/bayesian_estimation_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_real_codes_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/cpu_multicorrelator_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/cubature_filter_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/discriminator_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/galileo_e5a_tracking_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/galileo_e5b_dll_pll_tracking_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_tracking_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_dll_pll_tracking_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_dll_pll_tracking_test_fpga.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/gps_l1_ca_gaussian_tracking_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/gps_l2_m_dll_pll_tracking_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/gpu_multicorrelator_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/tracking_loop_filter_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test_fpga.cc create mode 100644 tests/unit-tests/signal-processing-blocks/tracking/unscented_filter_test.cc create mode 100644 tests/unit-tests/system-parameters/galileo_e1b_reed_solomon_test.cc create mode 100644 tests/unit-tests/system-parameters/galileo_e6b_reed_solomon_test.cc create mode 100644 tests/unit-tests/system-parameters/galileo_ism_test.cc create mode 100644 tests/unit-tests/system-parameters/glonass_gnav_crc_test.cc create mode 100644 tests/unit-tests/system-parameters/glonass_gnav_ephemeris_test.cc create mode 100644 tests/unit-tests/system-parameters/glonass_gnav_nav_message_test.cc create mode 100644 tests/unit-tests/system-parameters/has_decoding_test.cc create mode 100644 utils/CMakeLists.txt create mode 100644 utils/front-end-cal/CMakeLists.txt rename {src/utils => utils}/front-end-cal/front_end_cal.cc (60%) rename {src/utils => utils}/front-end-cal/front_end_cal.h (70%) create mode 100644 utils/front-end-cal/main.cc create mode 100644 utils/matlab/dll_pll_veml_plot_sample.m create mode 100644 utils/matlab/gps_l1_ca_kf_plot_sample.m create mode 100644 utils/matlab/gps_l1_ca_pvt_plot_sample_agilent_cap2.m create mode 100644 utils/matlab/gps_l1_ca_pvt_raw_plot_sample.m create mode 100644 utils/matlab/gps_l1_ca_telemetry_plot_sample.m rename {src/utils => utils}/matlab/help_script1.m (70%) create mode 100644 utils/matlab/help_script2.m create mode 100644 utils/matlab/hybrid_observables_plot_sample.m create mode 100644 utils/matlab/libs/dll_pll_veml_read_tracking_dump.m rename {src/utils => utils}/matlab/libs/geoFunctions/cart2geo.m (51%) create mode 100644 utils/matlab/libs/geoFunctions/cart2utm.m rename {src/utils => utils}/matlab/libs/geoFunctions/check_t.m (55%) rename {src/utils => utils}/matlab/libs/geoFunctions/clksin.m (68%) create mode 100644 utils/matlab/libs/geoFunctions/clsin.m rename {src/utils => utils}/matlab/libs/geoFunctions/deg2dms.m (58%) create mode 100644 utils/matlab/libs/geoFunctions/dms2deg.m rename {src/utils => utils}/matlab/libs/geoFunctions/dms2mat.m (86%) rename {src/utils => utils}/matlab/libs/geoFunctions/e_r_corr.m (60%) rename {src/utils => utils}/matlab/libs/geoFunctions/findUtmZone.m (51%) rename {src/utils => utils}/matlab/libs/geoFunctions/geo2cart.m (69%) rename {src/utils => utils}/matlab/libs/geoFunctions/leastSquarePos.m (80%) rename {src/utils => utils}/matlab/libs/geoFunctions/mat2dms.m (90%) rename {src/utils => utils}/matlab/libs/geoFunctions/roundn.m (69%) rename {src/utils => utils}/matlab/libs/geoFunctions/satpos.m (76%) rename {src/utils => utils}/matlab/libs/geoFunctions/togeod.m (83%) rename {src/utils => utils}/matlab/libs/geoFunctions/topocent.m (63%) rename {src/utils => utils}/matlab/libs/geoFunctions/tropo.m (84%) create mode 100644 utils/matlab/libs/gps_l1_ca_dll_pll_read_tracking_dump.m create mode 100644 utils/matlab/libs/gps_l1_ca_kf_read_tracking_dump.m create mode 100644 utils/matlab/libs/gps_l1_ca_pvt_read_pvt_dump.m create mode 100644 utils/matlab/libs/gps_l1_ca_read_pvt_raw_dump.m create mode 100644 utils/matlab/libs/gps_l1_ca_read_telemetry_dump.m create mode 100644 utils/matlab/libs/plotKalman.m rename {src/utils => utils}/matlab/libs/plotNavigation.m (51%) create mode 100644 utils/matlab/libs/plotTracking.m create mode 100644 utils/matlab/libs/plotVEMLTracking.m create mode 100644 utils/matlab/libs/quantize_signal.m create mode 100644 utils/matlab/libs/read_complex_binary.m create mode 100644 utils/matlab/libs/read_complex_char_binary.m create mode 100644 utils/matlab/libs/read_complex_short_binary.m create mode 100644 utils/matlab/libs/read_hybrid_observables_dump.m create mode 100644 utils/matlab/libs/read_true_sim_observables_dump.m create mode 100644 utils/matlab/plotTrackingE5a.m create mode 100644 utils/matlab/plot_acq_grid.m rename {src/utils => utils}/matlab/plot_acq_grid_gsoc.m (52%) rename {src/utils => utils}/matlab/plot_acq_grid_gsoc_e5.m (57%) create mode 100644 utils/matlab/plot_acq_grid_gsoc_glonass.m create mode 100644 utils/matlab/plot_tracking_quality_indicators.m create mode 100644 utils/nav-listener/CMakeLists.txt create mode 100644 utils/nav-listener/README.md create mode 100644 utils/nav-listener/cmake/cmake_uninstall.cmake.in create mode 100644 utils/nav-listener/main.cc create mode 100644 utils/nav-listener/nav_message.proto create mode 100644 utils/nav-listener/nav_msg_udp_listener.cc create mode 100644 utils/nav-listener/nav_msg_udp_listener.h create mode 100644 utils/python/dll_pll_veml_plot_sample.py create mode 100644 utils/python/gps_l1_ca_kf_plot_sample.py create mode 100644 utils/python/gps_l1_ca_pvt_raw_plot_sample.py create mode 100644 utils/python/gps_l1_ca_telemetry_plot_sample.py create mode 100644 utils/python/hybrid_observables_plot_sample.py create mode 100644 utils/python/lib/dll_pll_veml_read_tracking_dump.py create mode 100644 utils/python/lib/gps_l1_ca_kf_read_tracking_dump.py create mode 100644 utils/python/lib/gps_l1_ca_read_pvt_dump.py create mode 100644 utils/python/lib/gps_l1_ca_read_telemetry_dump.py create mode 100644 utils/python/lib/plotKalman.py create mode 100644 utils/python/lib/plotNavigation.py create mode 100644 utils/python/lib/plotPosition.py create mode 100644 utils/python/lib/plotTracking.py create mode 100644 utils/python/lib/plotVEMLTracking.py create mode 100644 utils/python/lib/read_hybrid_observables_dump.py create mode 100644 utils/python/plot_acq_grid.py create mode 100644 utils/python/plot_tracking_quality_indicators.py create mode 100644 utils/reproducibility/ieee-access18/L2-access18.conf create mode 100644 utils/reproducibility/ieee-access18/README.md create mode 100644 utils/reproducibility/ieee-access18/plot_dump.m create mode 100644 utils/rinex-tools/CMakeLists.txt create mode 100644 utils/rinex-tools/README.md create mode 100644 utils/rinex-tools/obsdiff.cc create mode 100644 utils/rinex-tools/obsdiff_flags.h create mode 100644 utils/rinex2assist/CMakeLists.txt create mode 100644 utils/rinex2assist/README.md create mode 100644 utils/rinex2assist/main.cc create mode 100755 utils/scripts/download-galileo-almanac.sh create mode 100755 utils/scripts/gnss-sdr-harness.sh rename {src/utils/simulink/Multi Thread => utils/simulink/MultiThread}/README_gnss_sdr_tcp_connector_parallel_tracking.txt (70%) rename {src/utils/simulink/Multi Thread => utils/simulink/MultiThread}/gnss_sdr_tcp_connector_parallel_tracking_start.m (79%) rename {src/utils/simulink/Multi Thread => utils/simulink/MultiThread}/gnss_sdr_tcp_connector_tracking_lib.mdl (96%) create mode 100644 utils/simulink/MultiThread/gnss_sdr_tcp_connector_tracking_lib.mdl.license rename {src/utils/simulink/Single Thread => utils/simulink/SingleThread}/README_gnss_sdr_galileo_e1_tcp_connector_tracking.txt (69%) rename {src/utils/simulink/Single Thread => utils/simulink/SingleThread}/README_gnss_sdr_tcp_connector_tracking.txt (69%) rename {src/utils/simulink/Single Thread => utils/simulink/SingleThread}/gnss_sdr_galileo_e1_tcp_connector_tracking_lib.mdl (96%) create mode 100644 utils/simulink/SingleThread/gnss_sdr_galileo_e1_tcp_connector_tracking_lib.mdl.license rename {src/utils/simulink/Single Thread => utils/simulink/SingleThread}/gnss_sdr_galileo_e1_tcp_connector_tracking_start.m (79%) rename {src/utils/simulink/Single Thread => utils/simulink/SingleThread}/gnss_sdr_tcp_connector_tracking_lib.mdl (96%) create mode 100644 utils/simulink/SingleThread/gnss_sdr_tcp_connector_tracking_lib.mdl.license rename {src/utils/simulink/Single Thread => utils/simulink/SingleThread}/gnss_sdr_tcp_connector_tracking_start.m (78%) diff --git a/.clang-format b/.clang-format new file mode 100644 index 000000000..949f7e5a6 --- /dev/null +++ b/.clang-format @@ -0,0 +1,289 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2018-2024 Carles Fernandez-Prades +--- +Language: Cpp +# BasedOnStyle: Google +# More info: https://clang.llvm.org/docs/ClangFormatStyleOptions.html +AccessModifierOffset: -4 +AlignAfterOpenBracket: DontAlign +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: true +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveShortCaseStatements: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCaseArrows: false + AlignCaseColons: false +AlignConsecutiveTableGenBreakingDAGArgColons: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveTableGenCondOperatorColons: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveTableGenDefinitionColons: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignEscapedNewlines: Left +AlignOperands: Align +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowBreakBeforeNoexceptSpecifier: Never +AllowShortBlocksOnASingleLine: Never +AllowShortCaseExpressionOnASingleLine: true +AllowShortCaseLabelsOnASingleLine: false +AllowShortCompoundRequirementOnASingleLine: true +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: WithoutElse +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: true +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: true + AfterClass: true + AfterControlStatement: Always + AfterEnum: true + AfterExternBlock: true + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: true + AfterStruct: true + AfterUnion: true + BeforeCatch: true + BeforeElse: true + BeforeLambdaBody: false + BeforeWhile: true + IndentBraces: true + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAdjacentStringLiterals: true +BreakAfterAttributes: Leave +BreakAfterJavaFieldAnnotations: false +BreakAfterReturnType: None +BreakArrays: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: GNU +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakFunctionDefinitionParameters: false +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +BreakTemplateDeclarations: MultiLine +ColumnLimit: 0 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: true +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Merge +IncludeCategories: + - Regex: '^.*.h"' + Priority: 1 + SortPriority: 0 + CaseSensitive: false + - Regex: '^.*(benchmark|boost|gflags|glog|gnsssdr|gnuradio|gnsstk|gsl|gtest|pmt|uhd|volk)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^.*(armadillo|iio|matio|pugixml)' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '^<.*\.h>' + Priority: 4 + SortPriority: 0 + CaseSensitive: false + - Regex: '^<.*' + Priority: 5 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 4 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLines: + AtEndOfFile: false + AtStartOfBlock: false + AtStartOfFile: true +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MainIncludeChar: Quote +MaxEmptyLinesToKeep: 2 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: false +PackConstructorInitializers: NextLine +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 1 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakScopeResolution: 500 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 200 +PointerAlignment: Left +PPIndentWidth: -1 +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveParentheses: Leave +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SkipMacroDefinitionBody: false +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterPlacementOperator: true + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: Never +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + ExceptDoubleParentheses: false + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false +SpacesInSquareBrackets: false +Standard: Auto +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TableGenBreakInsideDAGArg: DontBreak +TabWidth: 8 +UseTab: Never +VerilogBreakBetweenInstancePorts: true +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE +... diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 000000000..3ddbd1a51 --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,441 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2018-2020 Carles Fernandez-Prades +--- +Checks: '-*, + boost-use-to-string, + bugprone-argument-comment, + bugprone-assert-side-effect, + bugprone-bool-pointer-implicit-conversion, + bugprone-copy-constructor-init, + bugprone-dangling-handle, + bugprone-exception-escape, + bugprone-fold-init-type, + bugprone-forward-declaration-namespace, + bugprone-forwarding-reference-overload, + bugprone-inaccurate-erase, + bugprone-incorrect-roundings, + bugprone-integer-division, + bugprone-lambda-function-name, + bugprone-macro-parentheses, + bugprone-macro-repeated-side-effects, + bugprone-misplaced-operator-in-strlen-in-alloc, + bugprone-misplaced-widening-cast, + bugprone-move-forwarding-reference, + bugprone-multiple-statement-macro, + bugprone-parent-virtual-call, + bugprone-redundant-branch-condition, + bugprone-reserved-identifier, + bugprone-sizeof-container, + bugprone-sizeof-expression, + bugprone-string-constructor, + bugprone-string-integer-assignment, + bugprone-string-literal-with-embedded-nul, + bugprone-suspicious-enum-usage, + bugprone-suspicious-memset-usage, + bugprone-suspicious-missing-comma, + bugprone-suspicious-semicolon, + bugprone-suspicious-string-compare, + bugprone-swapped-arguments, + bugprone-terminating-continue, + bugprone-throw-keyword-missing, + bugprone-too-small-loop-variable, + bugprone-undefined-memory-manipulation, + bugprone-undelegated-constructor, + bugprone-unused-raii, + bugprone-unused-return-value, + bugprone-use-after-move, + bugprone-virtual-near-miss, + cert-dcl21-cpp, + cert-dcl58-cpp, + cert-env33-c, + cert-err52-cpp, + cert-err60-cpp, + cert-flp30-c, + cert-msc50-cpp, + cert-msc51-cpp, + clang-analyzer-cplusplus.*, + clang-analyzer-optin.performance.*, + clang-analyzer-optin.portability.UnixAPI, + clang-analyzer-security.*, + cppcoreguidelines-prefer-member-initializer, + cppcoreguidelines-pro-type-cstyle-cast, + cppcoreguidelines-pro-type-static-cast-downcast, + cppcoreguidelines-slicing, + cppcoreguidelines-special-member-functions, + google-build-namespaces, + google-global-names-in-headers, + google-runtime-int, + hicpp-exception-baseclass, + hicpp-explicit-conversions, + hicpp-noexcept-move, + misc-misplaced-const, + misc-new-delete-overloads, + misc-non-copyable-objects, + misc-redundant-expression, + misc-static-assert, + misc-throw-by-value-catch-by-reference, + misc-uniqueptr-reset-release, + misc-unused-using-decls, + modernize-avoid-bind, + modernize-use-default-member-init, + modernize-deprecated-headers, + modernize-loop-convert, + modernize-raw-string-literal, + modernize-redundant-void-arg, + modernize-return-braced-init-list, + modernize-shrink-to-fit, + modernize-use-auto, + modernize-use-bool-literals, + modernize-use-emplace, + modernize-use-equals-default, + modernize-use-equals-delete, + modernize-use-noexcept, + modernize-use-nullptr, + modernize-use-override, + performance-faster-string-find, + performance-for-range-copy, + performance-implicit-conversion-in-loop, + performance-inefficient-algorithm, + performance-inefficient-string-concatenation, + performance-inefficient-vector-operation, + performance-move-const-arg, + performance-move-constructor-init, + performance-noexcept-move-constructor, + performance-type-promotion-in-math-fn, + performance-unnecessary-copy-initialization, + performance-unnecessary-value-param, + readability-avoid-const-params-in-decls, + readability-braces-around-statements, + readability-container-size-empty, + readability-identifier-naming, + readability-inconsistent-declaration-parameter-name, + readability-isolate-declaration, + readability-make-member-function-const, + readability-named-parameter, + readability-non-const-parameter, + readability-qualified-auto, + readability-redundant-control-flow, + readability-redundant-member-init, + readability-string-compare, + readability-uppercase-literal-suffix' +WarningsAsErrors: '' +HeaderFilterRegex: '' +FormatStyle: 'file' +CheckOptions: + - key: performance-unnecessary-copy-initialization.ExcludedContainerTypes + value: '' + - key: modernize-replace-auto-ptr.IncludeStyle + value: llvm + - key: performance-move-const-arg.CheckTriviallyCopyableMove + value: 'true' + - key: modernize-use-auto.MinTypeNameLength + value: '5' + - key: bugprone-reserved-identifier.Invert + value: 'false' + - key: bugprone-unused-return-value.CheckedFunctions + value: 'std::async; +std::launder; +std::remove; +std::remove_if; +std::unique; +std::unique_ptr::release; +std::basic_string::empty; +std::vector::empty; +std::back_inserter; +std::distance; +std::find; +std::find_if; +std::inserter; +std::lower_bound; +std::make_pair; +std::map::count; +std::map::find; +std::map::lower_bound; +std::multimap::equal_range; +std::multimap::upper_bound; +std::set::count; +std::set::find; +std::setfill; +std::setprecision; +std::setw; +std::upper_bound; +std::vector::at; +::bsearch; +::ferror; +::feof; +::isalnum; +::isalpha; +::isblank; +::iscntrl; +::isdigit; +::isgraph; +::islower; +::isprint; +::ispunct; +::isspace; +::isupper; +::iswalnum; +::iswprint; +::iswspace; +::isxdigit; +::memchr; +::memcmp; +::strcmp; +::strcoll; +::strncmp; +::strpbrk; +::strrchr; +::strspn; +::strstr; +::wcscmp; +::access; +::bind; +::connect; +::difftime; +::dlsym; +::fnmatch; +::getaddrinfo; +::getopt; +::htonl; +::htons; +::iconv_open; +::inet_addr; +::isascii; +::isatty; +::mmap; +::newlocale; +::openat; +::pathconf; +::pthread_equal; +::pthread_getspecific; +::pthread_mutex_trylock; +::readdir; +::readlink; +::recvmsg; +::regexec; +::scandir; +::semget; +::setjmp; +::shm_open; +::shmget; +::sigismember; +::strcasecmp; +::strsignal; +::ttyname' + - key: cert-dcl16-c.NewSuffixes + value: 'L;LL;LU;LLU' + - key: readability-identifier-naming.GetConfigPerFile + value: 'true' + - key: readability-inconsistent-declaration-parameter-name.Strict + value: 'false' + - key: modernize-use-default-member-init.UseAssignment + value: 'false' + - key: modernize-use-override.AllowOverrideAndFinal + value: 'false' + - key: modernize-loop-convert.IncludeStyle + value: llvm + - key: cert-str34-c.DiagnoseSignedUnsignedCharComparisons + value: 'false' + - key: misc-uniqueptr-reset-release.IncludeStyle + value: llvm + - key: bugprone-suspicious-string-compare.WarnOnLogicalNotComparison + value: 'false' + - key: readability-identifier-naming.AggressiveDependentMemberLookup + value: 'false' + - key: bugprone-suspicious-string-compare.WarnOnImplicitComparison + value: 'true' + - key: modernize-use-emplace.TupleTypes + value: 'std::pair;std::tuple' + - key: modernize-use-emplace.TupleMakeFunctions + value: 'std::make_pair;std::make_tuple' + - key: bugprone-argument-comment.CommentNullPtrs + value: '0' + - key: bugprone-argument-comment.StrictMode + value: '0' + - key: modernize-loop-convert.MakeReverseRangeHeader + value: '' + - key: modernize-use-bool-literals.IgnoreMacros + value: 'true' + - key: google-readability-namespace-comments.ShortNamespaceLines + value: '10' + - key: bugprone-suspicious-string-compare.StringCompareLikeFunctions + value: '' + - key: modernize-avoid-bind.PermissiveParameterList + value: 'false' + - key: modernize-use-override.FinalSpelling + value: final + - key: modernize-loop-convert.UseCxx20ReverseRanges + value: 'true' + - key: modernize-use-noexcept.ReplacementString + value: '' + - key: cppcoreguidelines-prefer-member-initializer.UseAssignment + value: 'false' + - key: performance-type-promotion-in-math-fn.IncludeStyle + value: llvm + - key: modernize-loop-convert.NamingStyle + value: CamelCase + - key: bugprone-suspicious-missing-comma.SizeThreshold + value: '5' + - key: readability-inconsistent-declaration-parameter-name.IgnoreMacros + value: 'true' + - key: performance-for-range-copy.WarnOnAllAutoCopies + value: 'false' + - key: bugprone-argument-comment.CommentIntegerLiterals + value: '0' + - key: google-runtime-int.UnsignedTypePrefix + value: uint + - key: modernize-loop-convert.MakeReverseRangeFunction + value: '' + - key: readability-identifier-naming.IgnoreFailedSplit + value: 'false' + - key: modernize-pass-by-value.IncludeStyle + value: llvm + - key: readability-qualified-auto.AddConstToQualified + value: 'true' + - key: bugprone-sizeof-expression.WarnOnSizeOfThis + value: 'true' + - key: bugprone-string-constructor.WarnOnLargeLength + value: 'true' + - key: bugprone-argument-comment.CommentCharacterLiterals + value: '0' + - key: bugprone-too-small-loop-variable.MagnitudeBitsUpperLimit + value: '16' + - key: bugprone-argument-comment.CommentFloatLiterals + value: '0' + - key: google-global-names-in-headers.HeaderFileExtensions + value: ';h;hh;hpp;hxx' + - key: readability-uppercase-literal-suffix.IgnoreMacros + value: 'true' + - key: modernize-use-nullptr.NullMacros + value: 'NULL' + - key: bugprone-suspicious-enum-usage.StrictMode + value: 'false' + - key: performance-unnecessary-copy-initialization.AllowedTypes + value: '' + - key: bugprone-suspicious-missing-comma.MaxConcatenatedTokens + value: '5' + - key: misc-throw-by-value-catch-by-reference.CheckThrowTemporaries + value: 'true' + - key: bugprone-string-constructor.LargeLengthThreshold + value: '8388608' + - key: cppcoreguidelines-special-member-functions.AllowMissingMoveFunctions + value: 'false' + - key: cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField + value: 'false' + - key: bugprone-exception-escape.FunctionsThatShouldNotThrow + value: '' + - key: performance-inefficient-vector-operation.EnableProto + value: 'false' + - key: bugprone-argument-comment.CommentStringLiterals + value: '0' + - key: modernize-loop-convert.MaxCopySize + value: '16' + - key: google-build-namespaces.HeaderFileExtensions + value: ';h;hh;hpp;hxx' + - key: cppcoreguidelines-explicit-virtual-functions.IgnoreDestructors + value: 'true' + - key: performance-for-range-copy.AllowedTypes + value: '' + - key: modernize-use-override.IgnoreDestructors + value: 'false' + - key: bugprone-sizeof-expression.WarnOnSizeOfConstant + value: 'true' + - key: modernize-use-emplace.ContainersWithPushBack + value: 'std::vector;std::list;std::deque' + - key: bugprone-argument-comment.CommentBoolLiterals + value: '0' + - key: readability-braces-around-statements.ShortStatementLines + value: '0' + - key: bugprone-argument-comment.CommentUserDefinedLiterals + value: '0' + - key: modernize-use-override.OverrideSpelling + value: override + - key: performance-inefficient-string-concatenation.StrictMode + value: 'false' + - key: google-readability-braces-around-statements.ShortStatementLines + value: '1' + - key: google-runtime-int.TypeSuffix + value: _t + - key: bugprone-reserved-identifier.AllowedIdentifiers + value: '_pb;_pbi' + - key: modernize-use-emplace.IgnoreImplicitConstructors + value: 'false' + - key: modernize-use-equals-delete.IgnoreMacros + value: 'true' + - key: bugprone-misplaced-widening-cast.CheckImplicitCasts + value: 'false' + - key: readability-uppercase-literal-suffix.NewSuffixes + value: '' + - key: modernize-loop-convert.MinConfidence + value: reasonable + - key: performance-unnecessary-value-param.AllowedTypes + value: '' + - key: bugprone-suspicious-missing-comma.RatioThreshold + value: '0.200000' + - key: cppcoreguidelines-special-member-functions.AllowMissingMoveFunctionsWhenCopyIsDeleted + value: 'false' + - key: modernize-use-noexcept.UseNoexceptFalse + value: 'true' + - key: google-readability-namespace-comments.SpacesBeforeComments + value: '2' + - key: misc-throw-by-value-catch-by-reference.MaxSize + value: '64' + - key: cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic + value: 'true' + - key: bugprone-argument-comment.IgnoreSingleArgument + value: '0' + - key: bugprone-sizeof-expression.WarnOnSizeOfIntegerExpression + value: 'false' + - key: performance-faster-string-find.StringLikeClasses + value: 'std::basic_string;std::basic_string_view' + - key: bugprone-assert-side-effect.CheckFunctionCalls + value: 'false' + - key: bugprone-string-constructor.StringNames + value: '::std::basic_string;::std::basic_string_view' + - key: bugprone-assert-side-effect.AssertMacros + value: assert + - key: bugprone-exception-escape.IgnoredExceptions + value: '' + - key: modernize-use-default-member-init.IgnoreMacros + value: 'true' + - key: llvm-qualified-auto.AddConstToQualified + value: 'false' + - key: readability-identifier-naming.IgnoreMainLikeFunctions + value: 'false' + - key: google-runtime-int.SignedTypePrefix + value: int + - key: google-readability-function-size.StatementThreshold + value: '800' + - key: llvm-else-after-return.WarnOnConditionVariables + value: 'false' + - key: cert-msc51-cpp.DisallowedSeedTypes + value: 'time_t,std::time_t' + - key: bugprone-sizeof-expression.WarnOnSizeOfCompareToConstant + value: 'true' + - key: bugprone-reserved-identifier.AggressiveDependentMemberLookup + value: 'false' + - key: modernize-raw-string-literal.DelimiterStem + value: lit + - key: modernize-use-equals-default.IgnoreMacros + value: 'true' + - key: misc-throw-by-value-catch-by-reference.WarnOnLargeObjects + value: 'false' + - key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor + value: 'false' + - key: modernize-raw-string-literal.ReplaceShorterLiterals + value: 'false' + - key: modernize-use-emplace.SmartPointers + value: 'std::shared_ptr;std::unique_ptr;std::auto_ptr;std::weak_ptr' + - key: performance-inefficient-vector-operation.VectorLikeClasses + value: 'std::vector' + - key: modernize-use-auto.RemoveStars + value: 'false' + - key: bugprone-dangling-handle.HandleClasses + value: 'std::basic_string_view;std::experimental::basic_string_view' + - key: performance-unnecessary-value-param.IncludeStyle + value: llvm + - key: readability-redundant-member-init.IgnoreBaseInCopyConstructors + value: 'false' + - key: llvm-else-after-return.WarnOnUnfixable + value: 'false' +... diff --git a/.github/DCO.txt b/.github/DCO.txt new file mode 100644 index 000000000..0e07a66b3 --- /dev/null +++ b/.github/DCO.txt @@ -0,0 +1,41 @@ +Developer Certificate of Origin +Version 1.1 + +SPDX-License-Identifier: GPL-3.0-or-later +Copyright (C) 2021 Centre Tecnològic de Telecomunicacions de Catalunya (CTTC) +and its contributors. + +Parc Mediterrani de la Tecnologia (PMT) +Building B4 +Av. Carl Friedrich Gauss 7 +08860 - Castelldefels (Spain) + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..58ddd89f7 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,54 @@ +:+1::tada: Hello, and thanks for contributing to +[GNSS-SDR](https://gnss-sdr.org)! :tada::+1: + + +[comment]: # ( +SPDX-License-Identifier: GPL-3.0-or-later +) + +[comment]: # ( +SPDX-FileCopyrightText: 2011-2021 Carles Fernandez-Prades +) + + +Any code contributions going into GNSS-SDR will become part of a GPL-licensed, +open source repository. It is therefore imperative that code submissions belong +to the authors, and that submitters have the authority to merge that code into +the public GNSS-SDR codebase. + +For that purpose, we use the +[Developer's Certificate of Origin](https://github.com/gnss-sdr/gnss-sdr/blob/next/.github/DCO.txt). +It is the same document used by other projects. Signing the DCO states that +there are no legal reasons to not merge your code. + +To sign the DCO, suffix your git commits with a `Signed-off-by:` line. When +using the command line, you can use `git commit -s` to automatically add this +line. If there were multiple authors of the code, or other types of +stakeholders, make sure that all are listed, each with a separate +`Signed-off-by:` line. + +Before submitting your pull request, please make sure the following is done: + +1. You undertake the + [Contributor Covenant Code of Conduct](https://github.com/gnss-sdr/gnss-sdr/blob/main/CODE_OF_CONDUCT.md). +2. You have read the + [Developer's Certificate of Origin](https://github.com/gnss-sdr/gnss-sdr/blob/next/.github/DCO.txt) + and + [signed your commits](https://gnss-sdr.org/docs/tutorials/using-git/#sign-your-commits) + as an indication of fulfillment. +3. You have read the + [Contributing Guidelines](https://github.com/gnss-sdr/gnss-sdr/blob/main/CONTRIBUTING.md). +4. You have read the [coding style guide](https://gnss-sdr.org/coding-style/). + Specifically, you have read + [about clang-format](https://gnss-sdr.org/coding-style/#use-tools-for-automated-code-formatting) + and [about clang-tidy](https://gnss-sdr.org/coding-style/#use-code-linters), + and you have applied those tools to your changes. +5. 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). +6. 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, and explain your intend +below.** diff --git a/.github/workflows/citation.yml b/.github/workflows/citation.yml new file mode 100644 index 000000000..db667992c --- /dev/null +++ b/.github/workflows/citation.yml @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2022 Carles Fernandez-Prades +on: + push: + paths: + - CITATION.cff + pull_request: + paths: + - CITATION.cff + workflow_dispatch: + +name: CITATION.cff +jobs: + Validate-CITATION-cff: + runs-on: ubuntu-latest + name: Validate CITATION.cff + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Validate CITATION.cff + uses: dieghernan/cff-validator@main + # Upload artifact in case of failure + - name: Update artifact + uses: actions/upload-artifact@v4 + if: failure() + with: + name: citation-cff-errors + path: citation_cff_errors.md diff --git a/.github/workflows/gnss-sdr_archs.yml b/.github/workflows/gnss-sdr_archs.yml new file mode 100644 index 000000000..ca9595187 --- /dev/null +++ b/.github/workflows/gnss-sdr_archs.yml @@ -0,0 +1,79 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2023 Carles Fernandez-Prades + +name: Run gnss-sdr in non-x86 archs + +on: + push: + branches: + - "**-archs" + - main + workflow_dispatch: + +jobs: + gnss-sdr-non-x86: + runs-on: ubuntu-latest + name: ${{ matrix.distro }} ${{ matrix.arch }} ${{ matrix.compiler.name }} + + # Run steps on a matrix of archs. + strategy: + fail-fast: false + matrix: + include: + - arch: aarch64 + distro: ubuntu22.04 + compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 } + - arch: aarch64 + distro: ubuntu22.04 + compiler: { name: clang-14, cc: clang-14, cxx: clang++-14 } + - arch: armv7 + distro: ubuntu22.04 + compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 } + - arch: riscv64 + distro: ubuntu22.04 + compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 } + # - arch: ppc64le + # distro: ubuntu22.04 + # compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 } + # - arch: s390x + # distro: ubuntu22.04 + # compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 } + + steps: + - uses: actions/checkout@v4 + - uses: uraimo/run-on-arch-action@v2.7.1 + name: Test in non-x86 container + continue-on-error: ${{ contains(fromJson('["ppc64le", "s390x"]'), matrix.arch) }} + id: test + with: + arch: ${{ matrix.arch }} + distro: ${{ matrix.distro }} + githubToken: ${{ github.token }} # Not required, but speeds up builds + setup: | + mkdir -p "${PWD}/testing" + dockerRunArgs: | + --volume "${PWD}:/gnss-sdr" + env: | + CC: ${{ matrix.compiler.cc }} + CXX: ${{ matrix.compiler.cxx }} + shell: /bin/sh + install: | + apt-get update -q -y + apt-get install -q -y ${{ matrix.compiler.name }} git ninja-build cmake \ + libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev \ + libboost-thread-dev libboost-chrono-dev libboost-serialization-dev \ + liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev \ + liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev \ + libgnutls-openssl-dev libmatio-dev googletest protobuf-compiler libprotobuf-dev \ + python3-mako liborc-0.4-dev + run: | + git config --global --add safe.directory /gnss-sdr + cd /gnss-sdr + cd testing + mkdir install + cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON -DCMAKE_INSTALL_PREFIX=/gnss-sdr/testing/install -DENABLE_INSTALL_TESTS=ON .. + echo "Build with $(nproc) thread(s)" + make -j$(nproc) + make install + cd install/bin + ./position_test diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..e98da271c --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,301 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2020-2024 Carles Fernandez-Prades +name: Simple CI + +on: + pull_request: + paths-ignore: + - "**/CITATION.cff" + push: + paths-ignore: + - "**/CITATION.cff" + workflow_dispatch: + +jobs: + build-ubuntu: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: | + sudo apt-get update -y + sudo apt install -y libunwind-dev + sudo apt-get install -y --no-install-recommends ninja-build cmake \ + libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev \ + libboost-thread-dev libboost-chrono-dev libboost-serialization-dev \ + liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev \ + liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev \ + libgnutls-openssl-dev libmatio-dev googletest protobuf-compiler libprotobuf-dev \ + python3-mako liborc-0.4-dev + - name: configure + run: cmake -S . -B build -GNinja + - name: build + run: cmake --build build + - name: check + run: cmake --build build --target check && ./install/volk_gnsssdr_profile && ./install/run_tests + - name: default position_test + run: | + cmake -S . -B build -DENABLE_SYSTEM_TESTING_EXTRA=ON -DENABLE_UNIT_TESTING_EXTRA=OFF && \ + cmake --build build && ./install/position_test && ./install/run_tests --gtest_filter=Osnma* + + build-macos: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: install dependencies + run: | + brew update + rm /usr/local/bin/2to3 || true + rm /usr/local/bin/idle3 || true + rm /usr/local/bin/pydoc3 || true + rm /usr/local/bin/python3 || true + rm /usr/local/bin/python3-config || true + rm /usr/local/bin/2to3-3.1* || true + rm /usr/local/bin/idle3.1* || true + rm /usr/local/bin/pydoc3.1* || true + rm /usr/local/bin/python3.1* || true + export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 + brew link --overwrite python@3.12 + brew install ninja hdf5 automake armadillo lapack libmatio gnuradio openssl pugixml protobuf boost + pip3 install mako + - name: configure + run: cmake -S . -B build -GNinja + - name: build + run: cmake --build build + - name: check + run: cmake --build build --target check && ./install/volk_gnsssdr_profile && ./install/run_tests + - name: default position_test + run: | + cmake -S . -B build -DENABLE_SYSTEM_TESTING_EXTRA=ON -DENABLE_UNIT_TESTING_EXTRA=OFF && \ + cmake --build build && ./install/position_test && ./install/run_tests --gtest_filter=Osnma* + + build-macos-xcode: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: install dependencies + run: | + brew update + rm /usr/local/bin/2to3 || true + rm /usr/local/bin/idle3 || true + rm /usr/local/bin/pydoc3 || true + rm /usr/local/bin/python3 || true + rm /usr/local/bin/python3-config || true + rm /usr/local/bin/2to3-3.1* || true + rm /usr/local/bin/idle3.1* || true + rm /usr/local/bin/pydoc3.1* || true + rm /usr/local/bin/python3.1* || true + export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 + brew link --overwrite python@3.12 + brew install ninja pkg-config hdf5 automake armadillo lapack libmatio gnuradio openssl pugixml protobuf boost + pip3 install mako + - name: configure + run: cmake -S . -B build -GXcode + - name: build + run: cmake --build build --config Release + - name: check + run: | + cmake --build build --config Release --target check + ./install/volk_gnsssdr_profile + ./install/run_tests + - name: default position_test + run: | + cmake -S . -B build -DENABLE_SYSTEM_TESTING_EXTRA=ON -DENABLE_UNIT_TESTING_EXTRA=OFF + cmake --build build --config Release --target position_test + ./install/position_test + ./install/run_tests --gtest_filter=Osnma* + + clang-format: + runs-on: ubuntu-latest + strategy: + matrix: + path: + - 'src' + - 'tests' + - 'utils' + steps: + - uses: actions/checkout@v4 + - name: run clang-format + uses: jidicula/clang-format-action@v4.14.0 + with: + clang-format-version: "19" + check-path: ${{ matrix.path }} + exclude-regex: '(libs\/gsl\/)|(tmpl)|(cpu_features)|^.*\.(cu|proto)$' + + clang-tidy: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: install dependencies + run: | + brew update + rm /usr/local/bin/2to3 || true + rm /usr/local/bin/idle3 || true + rm /usr/local/bin/pydoc3 || true + rm /usr/local/bin/python3 || true + rm /usr/local/bin/python3-config || true + rm /usr/local/bin/2to3-3.1* || true + rm /usr/local/bin/idle3.1* || true + rm /usr/local/bin/pydoc3.1* || true + rm /usr/local/bin/python3.1* || true + export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 + brew link --overwrite python@3.12 + brew install ninja pkg-config hdf5 automake armadillo lapack libmatio gnuradio openssl pugixml protobuf llvm boost + pip3 install mako + ln -s $(brew --prefix llvm)/bin/clang-tidy /usr/local/bin + ln -s $(brew --prefix llvm)/bin/clang-apply-replacements /usr/local/bin + ln -s $(brew --prefix llvm)/bin/run-clang-tidy.py /usr/local/bin + - name: Prepare run + run: cmake -S . -B build && cmake --build build --target volk_gnsssdr_module gtest-1.15.2 core_monitor core_libs pvt_libs + - name: run clang-tidy + run: cd build && /opt/homebrew/opt/llvm/bin/run-clang-tidy -fix + - name: check + run: | + git diff > clang_tidy.patch + echo -e "if \n [ -s clang_tidy.patch ] \nthen \n echo "clang_tidy not applied:"; echo ""; more clang_tidy.patch; exit 1 \nfi \n" > detect + chmod +x ./detect + ./detect + + cpplint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo apt-get install python3-pip && sudo pip3 install cpplint + - name: run checks + run: "find ./src/ ./utils ./tests -iname *.h -o -iname *.cc | xargs cpplint + --filter=-,+build/class,+build/deprecated,+build/explicit_make_pair,\ + +build/forward_decl,+build/printf_format,+build/storage_class,\ + +readability/constructors,+readability/namespace,+readability/newline,\ + +readability/utf8,+runtime/casting,+runtime/explicit,\ + +runtime/indentation_namespace,+runtime/init,+runtime/invalid_increment,\ + +runtime/member_string_references,+runtime/memset,+runtime/operator,\ + +runtime/printf,+runtime/printf_format,+whitespace/blank_line,\ + +whitespace/comma,+whitespace/comments,+whitespace/empty_conditional_body,\ + +whitespace/end-of-line,+whitespace/ending-newline,+whitespace/semicolon,\ + +whitespace/tab --exclude=./src/core/interfaces/gnss_block_interface.h + --exclude=./src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/cpu_features/test/hwcaps_for_testing.* + --exclude=./utils/nav-listener/build/nav_message.pb.h" + + prettier-markdown: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo npm install --global prettier + - name: check markdown + run: find . -iname "*.md" | xargs prettier --parser markdown --print-width 80 --prose-wrap always --list-different + + cmakelint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: | + sudo pip install cmakelint + - name: check CMake scripts + run: find . -iname "CMakeLists.txt" -o -iname "*.cmake" | xargs cmakelint --filter=-linelength,-readability/wonkycase + + volk-gnsssdr-windows: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.13' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install mako + - name: configure + shell: powershell + run: cmake -S src\algorithms\libs\volk_gnsssdr_module\volk_gnsssdr -B build -G "Visual Studio 17 2022" + - name: build + run: cmake --build build --config Release + - name: test + shell: powershell + run: ctest -C Release --test-dir build + - name: install + run: cmake --install build + - name: run profile + run: cd 'C:\Program Files (x86)\volk_gnsssdr\bin'; .\volk_gnsssdr_profile.exe + + volk-gnsssdr-ubuntu: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo apt install python3-mako liborc-dev + - name: configure + run: cmake -S src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr -B build + - name: build + run: cmake --build build + - name: install + run: sudo cmake --install build && sudo ldconfig + - name: test + run: volk_gnsssdr_profile + + volk-gnsssdr-macos: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.13' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install mako + - name: configure + run: cmake -S src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr -B build + - name: build + run: cmake --build build && sudo cmake --install build + - name: test + run: ctest -C Release --test-dir build --exclude-regex volk_gnsssdr_32fc_32f_rotator_dotprodxnpuppet_32fc + + volk-gnsssdr-macos-xcode: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.13' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install mako + - name: configure + run: cmake -S src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr -B build -GXcode + - name: build + run: cmake --build build --config Release + - name: install + run: sudo cmake --install build + - name: test + run: ctest -C Release --test-dir build --exclude-regex --exclude-regex volk_gnsssdr_32fc_32f_rotator_dotprodxnpuppet_32fc + + shellcheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo apt install shellcheck + - name: check scripts + run: shellcheck utils/scripts/* + + REUSE-compliance: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Check REUSE compliance + uses: docker://fsfe/reuse + with: + args: lint diff --git a/.github/workflows/volk_gnsssdr_android.yml b/.github/workflows/volk_gnsssdr_android.yml new file mode 100644 index 000000000..b10f894dd --- /dev/null +++ b/.github/workflows/volk_gnsssdr_android.yml @@ -0,0 +1,63 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2022 Carles Fernandez-Prades +on: + push: + paths: + - "src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/**" + - "CMakeLists.txt" + pull_request: + paths: + - "src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/**" + - "CMakeLists.txt" + workflow_dispatch: + +name: Build volk_gnsssdr on Android NDK +jobs: + build: + name: Build on Android NDK ${{ matrix.arch.name }} + + strategy: + fail-fast: false + matrix: + arch: + - { name: armeabi-v7a, allow_fail: false } + - { name: arm64-v8a, allow_fail: false } + - { name: x86, allow_fail: false } + - { name: x86_64, allow_fail: false } + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Update repositories + run: sudo apt update + - name: Install dependencies + run: sudo apt install -y cmake openjdk-11-jre-headless wget unzip make python3-mako + # Setup Android SDK, and auto-accept licenses + - name: Install Android SDK + run: | + wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip + mkdir android-sdk-linux + unzip -qq android-sdk.zip -d android-sdk-linux + export ANDROID_HOME=./android-sdk-linux + echo y | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=android-sdk-linux --update + (echo y; echo y; echo y; echo y; echo y; echo y; echo y; echo y) | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=android-sdk-linux --licenses + # Call SDKManager to install the Android NDK + - name: Install Android NDK + run: $GITHUB_WORKSPACE/android-sdk-linux/cmdline-tools/bin/sdkmanager --sdk_root=$GITHUB_WORKSPACE/android-sdk-linux --install "ndk;24.0.8215888" --channel=3 + # Setup build directory + - name: Setup ${{ matrix.arch.name }} + shell: bash + run: | + cd $GITHUB_WORKSPACE/ + mkdir build + cd build + cmake -DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/android-sdk-linux/ndk/24.0.8215888/build/cmake/android.toolchain.cmake \ + -DANDROID_ABI=${{ matrix.arch.name }} \ + -DANDROID_PLATFORM=android-24 \ + ../src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr + # Build + - name: Build ${{ matrix.arch.name }} + shell: bash + run: cd $GITHUB_WORKSPACE/build && make + continue-on-error: ${{ matrix.arch.allow_fail }} diff --git a/.github/workflows/volk_gnsssdr_archs.yml b/.github/workflows/volk_gnsssdr_archs.yml new file mode 100644 index 000000000..d27294b27 --- /dev/null +++ b/.github/workflows/volk_gnsssdr_archs.yml @@ -0,0 +1,79 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2023 Carles Fernandez-Prades + +name: Run volk_gnsssdr tests + +on: + push: + paths: + - "src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/**" + - "CMakeLists.txt" + pull_request: + paths: + - "src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/**" + - "CMakeLists.txt" + workflow_dispatch: + +jobs: + build-ubuntu-non-x86: + runs-on: ubuntu-latest + name: ${{ matrix.distro }} ${{ matrix.arch }} ${{ matrix.compiler.name }} + + # Run steps on a matrix of archs. + strategy: + fail-fast: false + matrix: + include: + - arch: aarch64 + distro: ubuntu22.04 + compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 } + - arch: aarch64 + distro: ubuntu22.04 + compiler: { name: clang-14, cc: clang-14, cxx: clang++-14 } + - arch: armv7 + distro: ubuntu22.04 + compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 } + - arch: ppc64le + distro: ubuntu22.04 + compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 } + - arch: s390x + distro: ubuntu22.04 + compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 } + - arch: riscv64 + distro: ubuntu22.04 + compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 } + + steps: + - uses: actions/checkout@v4 + - uses: uraimo/run-on-arch-action@v2 + name: Build in non-x86 container + # continue-on-error: ${{ contains(fromJson('["ppc64le", "s390x"]'), matrix.arch) }} + id: build + with: + arch: ${{ matrix.arch }} + distro: ${{ matrix.distro }} + githubToken: ${{ github.token }} # Not required, but speeds up builds + setup: | + mkdir -p "${PWD}/testing" + dockerRunArgs: | + --volume "${PWD}:/volk_gnsssdr" + env: | + CC: ${{ matrix.compiler.cc }} + CXX: ${{ matrix.compiler.cxx }} + shell: /bin/sh + install: | + apt-get update -q -y + apt-get install -q -y git cmake python3-mako liborc-dev ${{ matrix.compiler.name }} + run: | + git config --global --add safe.directory /volk_gnsssdr + cd /volk_gnsssdr + cd testing + cmake ../src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/ + echo "Build with $(nproc) thread(s)" + make -j$(nproc) + ./apps/volk_gnsssdr-config-info --alignment + ./apps/volk_gnsssdr-config-info --avail-machines + ./apps/volk_gnsssdr-config-info --all-machines + ./apps/volk_gnsssdr-config-info --malloc + ./apps/volk_gnsssdr-config-info --cc + ctest -V diff --git a/.gitignore b/.gitignore index d19baabc6..2155a88bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,30 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2011-2024 Carles Fernandez-Prades *~ -docs/doxygen/Doxyfile -docs/html -docs/latex -docs/GNSS-SDR_manual.pdf -src/tests/data/output.dat -thirdparty/ -.project -.cproject +.*.swp +/build/ +/build*/ +/cmake-build-debug/ +/data/ +/docs/doxygen/Doxyfile +/docs/html/ +/docs/latex/ +/docs/GNSS-SDR_manual.pdf +/gnss_sdr_pvt.nmea +/GSDR* +/HAS_* +/PVT_* +/Testing/ +/tests/data/output.dat +/thirdparty/ +/utils/nav-listener/build/ +/utils/nav-listener/build*/ /install -/.DS_Store +.cproject +.DS_Store +.idea +.project +.pydevproject +.settings +.vs/ +.vscode/ diff --git a/AUTHORS b/AUTHORS index 1bfd59f69..00d9a4e75 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,56 +1,76 @@ -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 - ---------------------------- - http://gnss-sdr.org - - - CTTC Homepage - ---------------------------- - http://www.cttc.cat - - - Mailing Lists - ---------------------------- - gnss-sdr-developers@lists.sourceforge.net - http://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.cat Developer -Luis Esteve Elfau luis@epsilon-formacion.com Developer -Pau Closas pau.closas@cttc.cat Consultant -Carlos Aviles carlos.avilesr@googlemail.com Developer -David Pubill david.pubill@cttc.cat Developer -Mara Branzanti mara.branzanti@gmail.com Developer -Marc Molina marc.molina.pena@gmail.com Developer -Daniel Fehr daniel.co@bluewin.ch Developer -Marc Sales marcsales92@gmail.com Developer -Damian Miralles dmiralles2009@gmail.com Developer -Andres Cecilia Luque a.cecilia.luque@gmail.com Developer -Leonardo Tonetto tonetto.dev@gmail.com Contributor -Anthony Arnold anthony.arnold@uqconnect.edu.au Contributor -Fran Fabra fabra@ice.csic.es Contributor -Ignacio Paniego ignacio.paniego@gmail.com Web design -Eva Puchol eva.puchol@gmail.com Web developer -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 from the Navigation & +Positioning Research Unit at CTTC, and it is the combined effort of students, +aficionados, and researchers from different institutions around the World. + +Contact Information +-------------------------------------------------------------------------------- + GNSS-SDR Homepage + ---------------------------- + https://gnss-sdr.org + + + CTTC Homepage + ---------------------------- + https://www.cttc.cat + + + Mailing List + ---------------------------- + gnss-sdr-developers@lists.sourceforge.net + https://sourceforge.net/projects/gnss-sdr/lists/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 +Marc Majoral marc.majoral@cttc.cat Developer +Xavier Guerrero xavier.guerrero@cttc.es Developer +Jordi Vilà-Valls jordi.vila-valls@isae-supaero.fr 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 +Antonio Ramos antonio.ramosdet@gmail.com Contributor +Carlos Avilés carlos.avilesr@googlemail.com Contributor +Cesare Ghionoiu Martinez c.ghionoiu-martinez@tu-braunschweig.de 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 +En Shin seanstone5923@gmail.com Contributor +Fran Fabra fabra@ice.csic.es Contributor +Gabriel Araujo gabriel.araujo.5000@gmail.com Contributor +Gerald LaMountain gerald@gece.neu.edu Contributor +Into Pääkkönen into.paakkonen@aalto.fi Contributor +Irene Pérez Riega iperrie@inta.es Contributor +Jim Melton jim.melton@sncorp.com Contributor +Josh Schindehette jschindehette@geontech.com Contributor +Leonardo Tonetto tonetto.dev@gmail.com Contributor +Malte Lenhart malte.lenhart@mailbox.org Contributor +Mara Branzanti mara.branzanti@gmail.com Contributor +Marc Molina marc.molina.pena@gmail.com Contributor +Marc Sales marcsales92@gmail.com Contributor +Piyush Gupta piyush04111999@gmail.com Contributor +Rodrigo Muñoz rodrigo.munoz@proteinlab.cl Contributor +Stefan van der Linden spvdlinden@gmail.com Contributor +Víctor Castillo-Agüero victorcastilloaguero@gmail.com Contributor +Will Silberman wsilberm@google.com Contributor +Carlos Paniego carpanie@hotmail.com Artwork + + +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2011-2024 Carles Fernandez-Prades diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 000000000..337e4d42a --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,345 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2024 C. Fernandez-Prades carles.fernandez(at)cttc.es +--- +authors: + - affiliation: "Centre Tecnològic de Telecomunicacions de Catalunya (CTTC)" + alias: carlesfernandez + email: carles.fernandez@cttc.es + family-names: "Fernández-Prades" + given-names: Carles + orcid: "https://orcid.org/0000-0002-9201-7007" + - affiliation: "Centre Tecnològic de Telecomunicacions de Catalunya (CTTC)" + alias: Arribas + email: javier.arribas@cttc.es + family-names: Arribas + given-names: Javier + orcid: "https://orcid.org/0000-0001-6346-3406" + - affiliation: "Centre Tecnològic de Telecomunicacions de Catalunya (CTTC)" + alias: mmajoral + email: marc.majoral@cttc.es + family-names: Majoral + given-names: Marc + orcid: "https://orcid.org/0000-0001-6161-6747" + - affiliation: "Centre Tecnològic de Telecomunicacions de Catalunya (CTTC)" + alias: xguerreropau + email: xavier.guerrero@cttc.es + family-names: Guerrero + given-names: Xavier + - alias: Gastd + email: gabriel.araujo.5000@gmail.com + family-names: Araujo + given-names: Gabriel + - email: anthony.arnold@uqconnect.edu.au + family-names: Arnold + given-names: Anthony + - email: carlos.avilesr@googlemail.com + family-names: Avilés + given-names: Carlos + - alias: marabra + email: mara.branzanti@gmail.com + family-names: Branzanti + given-names: Mara + - alias: castle055 + affiliation: "Instituto Nacional de Técnica Aeroespacial" + email: victorcastilloaguero@gmail.com + family-names: "Castillo-Agüero" + given-names: Víctor + - alias: acebrianjuan + email: acebrianjuan@gmail.com + family-names: "Cebrián-Juan" + given-names: Ãlvaro + - email: a.cecilia.luque@gmail.com + family-names: "Cecilia-Luque" + given-names: Andrés + - alias: luis-esteve + email: luis@epsilon-formacion.com + family-names: Esteve + given-names: Luis + - email: fabra@ice.csic.es + family-names: Fabra + given-names: Fran + - email: daniel.co@bluewin.ch + family-names: Fehr + given-names: Daniel + - alias: cesaaargm + affiliation: "Technische Universität Braunschweig" + email: c.ghionoiu-martinez@tu-braunschweig.de + family-names: "Ghionoiu Martinez" + given-names: Cesare + - alias: piyush0411 + email: piyush04111999@gmail.com + family-names: Gupta + given-names: Piyush + - alias: glamountain + email: gerald@gece.neu.edu + family-names: LaMountain + given-names: Gerald + - alias: lenhart + email: malte.lenhart@mailbox.org + family-names: Lenhart + given-names: Malte + - alias: jwmelto + email: jim.melton@sncorp.com + family-names: Melton + given-names: Jim + - alias: dmiralles2009 + email: dmiralles2009@gmail.com + family-names: Miralles + given-names: Damian + orcid: "https://orcid.org/0000-0001-5820-9569" + - email: marc.molina.pena@gmail.com + family-names: Molina + given-names: Marc + - email: rodrigo.munoz@proteinlab.cl + family-names: Muñoz + given-names: Rodrigo + - alias: odrisci + email: cillian.odriscoll@gmail.com + family-names: "O'Driscoll" + given-names: Cillian + - affiliation: "Finnish Geospatial Research Institute" + alias: IntoPa + email: into.paakkonen@aalto.fi + family-names: "Pääkkönen" + given-names: Into + - alias: Perrielornitorrinco + affiliation: "Instituto Nacional de Técnica Aeroespacial" + email: iperrie@inta.es + given-names: Irene + family-names: "Pérez Riega" + - affiliation: "Centre Tecnològic de Telecomunicacions de Catalunya (CTTC)" + email: david.pubill@cttc.cat + family-names: Pubill + given-names: David + - alias: antonioramosdet + family-names: Ramos + given-names: Antonio + - alias: seanstone + email: seanstone5923@gmail.com + family-names: Shin + given-names: En + - alias: jschindehette + email: jschindehette@geontech.com + family-names: Schindehette + given-names: Josh + - alias: orlando017 + email: wsilberm@google.com + family-names: Silberman + given-names: Will + - email: tonetto.dev@gmail.com + family-names: Tonetto + given-names: Leonardo + - alias: stefanlinden + email: spvdlinden@gmail.com + family-names: "van der Linden" + given-names: Stefan +cff-version: "1.2.0" +date-released: "2024-01-23" +identifiers: + - description: "The concept DOI of the work. This is a DOI always pointing to the latest stable release." + type: doi + value: 10.5281/zenodo.591700 +keywords: + - "Global Navigation Satellite System" + - GNSS + - "software radio" + - SDR + - GPS + - Galileo + - C++ +license: GPL-3.0-or-later +message: "If you use this software, please cite it using the metadata from this file." +references: + - authors: + - family-names: "Fernández-Prades" + given-names: Carles + - family-names: "Vilà-Valls" + given-names: Jordi + - family-names: Arribas + given-names: Javier + - family-names: Ramos + given-names: Antonio + doi: 10.1109/ACCESS.2018.2822835 + issue: 1 + journal: "IEEE Access" + pages: 13 + start: 20451 + end: 20463 + scope: "Discussion on reproducibility in GNSS signal processing." + title: "Continuous Reproducibility in GNSS Signal Processing." + type: article + volume: 6 + year: 2018 + - authors: + - family-names: "Fernández-Prades" + given-names: Carles + - family-names: "Lo Presti" + given-names: Letizia + - family-names: Falleti + given-names: Emanuela + doi: 10.1109/JPROC.2011.2158032 + issue: 11 + journal: "Proceedigs of the IEEE" + month: 11 + pages: 23 + start: 1882 + end: 1904 + scope: "General overview on GNSS receiver technology." + title: "Satellite Radiolocalization From GPS to GNSS and Beyond: Novel Technologies and Applications for Civil Mass Market." + type: article + volume: 99 + year: 2011 + - authors: + - family-names: "Fernández-Prades" + given-names: Carles + - family-names: Arribas + given-names: Javier + - family-names: Majoral + given-names: Marc + - family-names: Ramos + given-names: Antonio + - family-names: "Vilà-Valls" + given-names: Jordi + - family-names: Giordano + given-names: Pietro + conference: + name: "Proc. 9th ESA Workshop on Satellite Navigation Technologies and European Workshop on GNSS Signals and Signal Processing (NAVITEC)" + doi: 10.1109/NAVITEC.2018.8642697 + location: + name: "ESA/ESTEC, Noordwijk, Netherlands." + month: 12 + pages: 9 + scope: "Space applications of the software-defined GNSS embeded receiver." + title: "A Software-Defined Spaceborne GNSS Receiver." + type: conference-paper + year: 2018 + - authors: + - family-names: "Fernández-Prades" + given-names: Carles + - family-names: Pomar + given-names: Christian + - family-names: Arribas + given-names: Javier + - family-names: Fàbrega + given-names: "Josep Maria" + - family-names: "Vilà-Valls" + given-names: Jordi + - family-names: "Svaluto Moreolo" + given-names: Michela + - family-names: Casellas + given-names: Ramon + - family-names: Martínez + given-names: Ricardo + - family-names: Navarro + given-names: Mònica + - family-names: Vílchez + given-names: "Francisco Javier" + - family-names: Muñoz + given-names: Raul + - family-names: Vilalta + given-names: Ricard + - family-names: Nadal + given-names: Laia + - family-names: Mayoral + given-names: Arturo + conference: + name: "Proc. 30th Int. Tech. Meeting Sat. Div. Inst. Navig." + doi: 10.33012/2017.15234 + location: + name: "Portland, OR." + month: 9 + scope: "Introduction of the virtualized GNSS receiver." + pages: 20 + start: 3796 + end: 3815 + title: "A Cloud Optical Access Network for Virtualized GNSS Receivers" + type: conference-paper + year: 2017 + - authors: + - family-names: "Fernández-Prades" + given-names: Carles + - family-names: Arribas + given-names: Javier + - family-names: Closas + given-names: Pau + conference: + name: "Proc. 8th ESA Workshop on Satellite Navigation Technologies and European Workshop on GNSS Signals and Signal Processing (NAVITEC)" + doi: 10.1109/NAVITEC.2016.7931740 + location: + name: "ESA/ESTEC, Noordwijk, Netherlands." + month: 12 + pages: 9 + scope: "Discussion on testing methodologies for software-defined GNSS receivers." + title: "Assessment of Software-Defined GNSS Receivers" + type: conference-paper + year: 2016 + - authors: + - family-names: "Fernández-Prades" + given-names: Carles + - family-names: Arribas + given-names: Javier + - family-names: Closas + given-names: Pau + conference: + name: "Proc. 29th Int. Tech. Meeting Sat. Div. Inst. Navig." + doi: 10.33012/2016.14576 + location: + name: "Portland, OR." + month: 9 + pages: 18 + start: 44 + end: 61 + scope: "Analysis of software strategies for accelerating signal processing." + title: "Accelerating GNSS Software Receivers" + type: conference-paper + year: 2016 + - authors: + - family-names: "Fernández-Prades" + given-names: Carles + - family-names: Arribas + given-names: Javier + - family-names: Closas + given-names: Pau + - family-names: Avilés + given-names: Carlos + - family-names: Esteve + given-names: Luis + conference: + name: "Proc. 24th Int. Tech. Meeting Sat. Div. Inst. Navig." + location: + name: "Portland, OR." + month: 9 + pages: 15 + start: 780 + end: 794 + scope: "General description of the software architecture." + title: "GNSS-SDR: An Open Source Tool For Researchers and Developers" + type: conference-paper + year: 2011 + - authors: + - family-names: "Fernández-Prades" + given-names: Carles + - family-names: Avilés + given-names: Carlos + - family-names: Esteve + given-names: Luis + - family-names: Arribas + given-names: Javier + - family-names: Closas + given-names: Pau + conference: + name: "Proc. 5th ESA Workshop on Satellite Navigation Technologies and European Workshop on GNSS Signals and Signal Processing (NAVITEC)." + doi: 10.1109/NAVITEC.2010.5707981 + location: + name: "ESA/ESTEC, Noordwijk, Netherlands." + month: 12 + pages: 8 + scope: "Seminal work on GNSS-SDR and its software design patterns." + title: "Design patterns for GNSS software receivers" + type: conference-paper + year: 2010 +repository-code: "https://github.com/gnss-sdr/gnss-sdr" +title: GNSS-SDR +type: software +url: "https://gnss-sdr.org" +version: "0.0.19" diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d54097db..eac085fc9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,907 +1,3152 @@ -# Copyright (C) 2010-2015 (see AUTHORS file for a list of contributors) -# +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. # 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 . -# +# SPDX-FileCopyrightText: 2010-2024 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause - -######################################################################## +################################################################################ # Project setup -######################################################################## +################################################################################ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) - message(WARNING "In-tree build is bad practice. Try 'cd build && cmake ../' ") -endif(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) -cmake_minimum_required(VERSION 2.8) + message(FATAL_ERROR "Prevented in-tree build, it is bad practice.\nTry 'cd build && cmake ..' instead.") +endif() + +# Select the release build type by default to get optimization flags. +# This has to come before project() which otherwise initializes it. +# Build type can still be overridden by setting -DCMAKE_BUILD_TYPE= +set(CMAKE_BUILD_TYPE "Release" CACHE STRING "") + +cmake_minimum_required(VERSION 2.8.12...3.31) project(gnss-sdr CXX C) -list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) -file(RELATIVE_PATH RELATIVE_CMAKE_CALL ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) +set(GNSSSDR_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) # Allows to be a sub-project +set(GNSSSDR_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) +list(APPEND CMAKE_MODULE_PATH ${GNSSSDR_SOURCE_DIR}/cmake/Modules) - -######################################################################## +################################################################################ # Determine optional blocks/libraries to be built (default: not built) -# Enable them here or at the command line by doing 'cmake -DENABLE_XXX=ON ../' -######################################################################## +# Enable them at the command line by doing 'cmake -DENABLE_XXX=ON ..' +################################################################################ +include(FeatureSummary) +include(GnsssdrLibPaths) # Support of optional RF front-ends -option(ENABLE_OSMOSDR "Enable the use of OsmoSDR and other front-ends (RTL-based dongles, HackRF, bladeRF, etc.) as signal source (experimental)" OFF) -option(ENABLE_FLEXIBAND "Enable the use of the signal source adater for the Teleorbit Flexiband GNURadio driver" OFF) +option(ENABLE_UHD "Enable the use of UHD (driver for all USRP devices)" ON) + +option(ENABLE_OSMOSDR "Enable the use of OsmoSDR and other front-ends (RTL-based dongles, HackRF, bladeRF, etc.) as signal source" OFF) + +option(ENABLE_LIMESDR "Enable the use of LimeSDR and Custom LimeSDR as signal source" OFF) + +option(ENABLE_FMCOMMS2 "Enable the use of FMCOMMS4-EBZ + ZedBoard hardware, requires gr-iio" OFF) + +option(ENABLE_PLUTOSDR "Enable the use of ADALM-PLUTO Evaluation Boards (Analog Devices Inc.), requires gr-iio" OFF) + +option(ENABLE_AD936X_SDR "Enable the use of AD936X front-ends using libiio, requires libiio" OFF) + +option(ENABLE_AD9361 "Enable the use of AD9361 direct to FPGA hardware, requires libiio" OFF) + +option(ENABLE_MAX2771 "Enable the use of MAX2771 direct to FPGA hardware, requires the spidev driver" OFF) + +option(ENABLE_DMA_PROXY "Enable the use of the DMA direct to FPGA hardware, requires the DMA Proxy driver" OFF) + +option(ENABLE_RAW_UDP "Enable the use of high-optimized custom UDP packet sample source, requires libpcap" OFF) + +option(ENABLE_FLEXIBAND "Enable the use of the signal source adater for the Teleorbit Flexiband GNU Radio driver" OFF) + option(ENABLE_ARRAY "Enable the use of CTTC's antenna array front-end as signal source (experimental)" OFF) -option(ENABLE_GN3S "Enable the use of the GN3S dongle as signal source (experimental)" OFF) + +option(ENABLE_ZMQ "Enable GNU Radio ZeroMQ Messaging, requires gr-zeromq" ON) + +option(ENABLE_ION "Enable ION GNSS-SDR Metadata Standard signal source" OFF) # Performance analysis tools option(ENABLE_GPERFTOOLS "Enable linking to Gperftools libraries (tcmalloc and profiler)" OFF) + option(ENABLE_GPROF "Enable the use of the GNU profiler tool 'gprof'" OFF) +# Code correctness +option(ENABLE_CLANG_TIDY "Enable the use of clang-tidy when compiling" OFF) + # Acceleration +option(ENABLE_PROFILING "Enable execution of volk_gnsssdr_profile at the end of the building" OFF) + option(ENABLE_OPENCL "Enable building of processing blocks implemented with OpenCL (experimental)" OFF) +option(ENABLE_CUDA "Enable building of processing blocks implemented with CUDA (experimental, requires CUDA SDK)" OFF) + +option(ENABLE_FPGA "Enable building of processing blocks implementing FPGA offloading" OFF) + # Building and packaging options -option(ENABLE_GENERIC_ARCH "Builds a portable binary" OFF) option(ENABLE_PACKAGING "Enable software packaging" OFF) + option(ENABLE_OWN_GLOG "Download glog and link it to gflags" OFF) -option(ENABLE_LOG "Enable logging" ON) + +option(ENABLE_GLOG_AND_GFLAGS "Force using Google glog and Gflags instead of Abseil" OFF) + +option(ENABLE_OWN_ABSEIL "Forces downloading and building of Abseil" OFF) +if(CMAKE_VERSION VERSION_LESS 3.24) + set(ENABLE_OWN_ABSEIL OFF) +endif() +if(ENABLE_OWN_ABSEIL) + set(ENABLE_OWN_GLOG OFF) + set(ENABLE_GLOG_AND_GFLAGS OFF) +endif() + +option(ENABLE_OWN_ARMADILLO "Download and build Armadillo locally" OFF) + +option(ENABLE_LOG "Enable internal logging" ON) + +option(ENABLE_ARMA_NO_DEBUG OFF) + +option(ENABLE_STRIP "Create stripped binaries without debugging symbols (in Release build mode only)" OFF) + +option(Boost_USE_STATIC_LIBS "Use Boost static libs" OFF) + +option(ENABLE_GNUTLS "Forces linking against GnuTLS" OFF) + if(ENABLE_PACKAGING) - set(ENABLE_GENERIC_ARCH ON) -endif(ENABLE_PACKAGING) + set(ENABLE_ARMA_NO_DEBUG ON) + set(CMAKE_VERBOSE_MAKEFILE ON) + set(ENABLE_STRIP OFF) +endif() +# Testing +option(ENABLE_UNIT_TESTING "Build unit tests" ON) -############################### +option(ENABLE_UNIT_TESTING_MINIMAL "Build a minimal set of unit tests" OFF) + +option(ENABLE_UNIT_TESTING_EXTRA "Download external files and build extra unit tests" OFF) + +option(ENABLE_SYSTEM_TESTING "Build system tests" OFF) + +option(ENABLE_SYSTEM_TESTING_EXTRA "Download external tools and build extra system tests" OFF) + +option(ENABLE_GNSS_SIM_INSTALL "Enable the installation of gnss_sim on the fly" ON) + +option(ENABLE_CPUFEATURES "Make use of the cpu_features library" ON) + +if(NOT (ENABLE_UNIT_TESTING_EXTRA OR ENABLE_SYSTEM_TESTING_EXTRA OR ENABLE_FPGA)) + set(ENABLE_GNSS_SIM_INSTALL OFF) +endif() + +if(ENABLE_SYSTEM_TESTING_EXTRA) + set(ENABLE_SYSTEM_TESTING ON) +endif() + +option(ENABLE_OWN_GNSSTK "Force to download, build and link gnsstk for system tests, even if it is already installed" OFF) + +if(NOT ENABLE_OWN_GNSSTK) + option(ENABLE_OWN_GPSTK "Force to download, build and link gnsstk for system tests, even if it is already installed" OFF) + if(ENABLE_OWN_GPSTK) + unset(Gnsstk:gnsstk CACHE) + unset(GNSSTK_FOUND CACHE) + message(STATUS "WARNING: Option ENABLE_OWN_GPSTK is deprecated, please use ENABLE_OWN_GNSSTK") + set(ENABLE_OWN_GNSSTK ON) + endif() +endif() + +option(ENABLE_INSTALL_TESTS "Install QA code system-wide" OFF) +if(ENABLE_FPGA) + set(ENABLE_INSTALL_TESTS ON) +endif() + +option(ENABLE_BENCHMARKS "Build code snippets benchmarks" OFF) +if(CMAKE_VERSION VERSION_LESS 3.16.3) + set(ENABLE_BENCHMARKS OFF) +endif() + +option(ENABLE_EXTERNAL_MATHJAX "Use MathJax from an external CDN in HTML docs" ON) + +option(ENABLE_ORC "Use (if available) the Optimized Inner Loop Runtime Compiler (ORC)" OFF) + +################################################################################ # GNSS-SDR version information -############################### +################################################################################ set(THIS_IS_A_RELEASE OFF) # only related to version name, no further implications. if(NOT ${THIS_IS_A_RELEASE}) - # Get the current working branch - execute_process( - COMMAND git rev-parse --abbrev-ref HEAD - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE GIT_BRANCH - OUTPUT_STRIP_TRAILING_WHITESPACE + find_package(Git) + set_package_properties(Git PROPERTIES + URL "https://git-scm.com" + DESCRIPTION "A free and open source distributed version control system (found: v${GIT_VERSION_STRING})" + PURPOSE "Manage version control, get MINOR_VERSION name for version number." + TYPE REQUIRED ) - - # Get the latest abbreviated commit hash of the working branch - execute_process( - COMMAND git log -1 --format=%h - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE GIT_COMMIT_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE - ) -endif(NOT ${THIS_IS_A_RELEASE}) + if(GIT_FOUND) + # was this info set in the CMake commandline? + if(NOT GIT_BRANCH) + # no: try to find it + execute_process( + COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD + WORKING_DIRECTORY ${GNSSSDR_SOURCE_DIR} + OUTPUT_VARIABLE GIT_BRANCH + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + endif() + # was this info set in the CMake commandline? + if(NOT GIT_COMMIT_HASH) + # Get the latest abbreviated commit hash of the working branch + execute_process( + COMMAND ${GIT_EXECUTABLE} log -1 --format=%h + WORKING_DIRECTORY ${GNSSSDR_SOURCE_DIR} + OUTPUT_VARIABLE GIT_COMMIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + endif() + endif() +endif() set(VERSION_INFO_MAJOR_VERSION 0) -set(VERSION_INFO_API_COMPAT 0) +set(VERSION_INFO_API_COMPAT 0) if(${THIS_IS_A_RELEASE}) - set(VERSION_INFO_MINOR_VERSION 5) -else(${THIS_IS_A_RELEASE}) - set(VERSION_INFO_MINOR_VERSION 5.git-${GIT_BRANCH}-${GIT_COMMIT_HASH}) -endif(${THIS_IS_A_RELEASE}) + set(VERSION_INFO_MINOR_VERSION 19) +else() + set(VERSION_INFO_MINOR_VERSION 19.git-${GIT_BRANCH}-${GIT_COMMIT_HASH}) +endif() set(VERSION ${VERSION_INFO_MAJOR_VERSION}.${VERSION_INFO_API_COMPAT}.${VERSION_INFO_MINOR_VERSION}) -######################################################################## + +################################################################################ # Environment setup -######################################################################## +################################################################################ include(ExternalProject) # Detect 64-bits machine -if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - set(ARCH_64BITS TRUE) -endif( CMAKE_SIZEOF_VOID_P EQUAL 8 ) +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(ARCH_64BITS TRUE) +endif() -set(OS_IS_MACOSX "") -set(OS_IS_LINUX "") +# Set prefix path for PyBOMBS and Snaps, if defined in environment variables +if(NOT CMAKE_PREFIX_PATH) + if(DEFINED ENV{PYBOMBS_PREFIX}) + set(CMAKE_PREFIX_PATH $ENV{PYBOMBS_PREFIX}) + endif() + if(DEFINED ENV{SNAP}) + set(CMAKE_PREFIX_PATH $ENV{SNAP}) + endif() +endif() # Detect Linux Distribution -if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") - set(OperatingSystem "Linux") - set(OS_IS_LINUX TRUE) - if(ARCH_64BITS) - set(ARCH_ "(64 bits)") - else(ARCH_64BITS) - set(ARCH_ "(32 bits)") - endif(ARCH_64BITS) - if(EXISTS "/etc/lsb-release") - execute_process(COMMAND cat /etc/lsb-release - COMMAND grep DISTRIB_ID - COMMAND awk -F= "{ print $2 }" - COMMAND tr "\n" " " - COMMAND sed "s/ //" - OUTPUT_VARIABLE LINUX_DISTRIBUTION - RESULT_VARIABLE LINUX_ID_RESULT - ) - execute_process(COMMAND cat /etc/lsb-release - COMMAND grep DISTRIB_RELEASE - COMMAND awk -F= "{ print $2 }" - COMMAND tr "\n" " " - COMMAND sed "s/ //" - OUTPUT_VARIABLE LINUX_VER - RESULT_VARIABLE LINUX_VER_RESULT - ) - endif(EXISTS "/etc/lsb-release") - if(NOT LINUX_DISTRIBUTION) - if(EXISTS "/etc/linuxmint/info") - set(LINUX_DISTRIBUTION "LinuxMint") - execute_process(COMMAND cat /etc/linuxmint/info - COMMAND grep -m1 RELEASE - COMMAND awk -F= "{ print $2 }" - COMMAND tr "\n" " " - COMMAND sed "s/ //" - OUTPUT_VARIABLE LINUX_VER - RESULT_VARIABLE LINUX_VER_RESULT - ) - endif(EXISTS "/etc/linuxmint/info") - endif(NOT LINUX_DISTRIBUTION) - if(NOT LINUX_DISTRIBUTION) - if(EXISTS "/etc/os-release") - execute_process(COMMAND cat /etc/os-release - COMMAND grep -m1 NAME - COMMAND awk -F= "{ print $2 }" - COMMAND tr "\n" " " - COMMAND sed "s/ //" - OUTPUT_VARIABLE LINUX_DISTRIBUTION - RESULT_VARIABLE LINUX_ID_RESULT - ) - execute_process(COMMAND cat /etc/os-release - COMMAND grep VERSION_ID - COMMAND awk -F= "{ print $2 }" - COMMAND tr "\n" " " - COMMAND sed "s/ //" - OUTPUT_VARIABLE LINUX_VER - RESULT_VARIABLE LINUX_VER_RESULT - ) - if(${LINUX_DISTRIBUTION} MATCHES "Debian") - set(LINUX_DISTRIBUTION "Debian") - file(READ /etc/debian_version LINUX_VER) - endif(${LINUX_DISTRIBUTION} MATCHES "Debian") - endif(EXISTS "/etc/os-release") - endif(NOT LINUX_DISTRIBUTION) - if(NOT LINUX_DISTRIBUTION) - if(EXISTS "/etc/redhat-release") - set(LINUX_DISTRIBUTION "Red Hat") - file (READ /etc/redhat-release LINUX_VER) - endif(EXISTS "/etc/redhat-release") - endif(NOT LINUX_DISTRIBUTION) - if(NOT LINUX_DISTRIBUTION) - if(EXISTS "/etc/debian_version") - set(LINUX_DISTRIBUTION "Debian") - file (READ /etc/debian_version LINUX_VER) - endif(EXISTS "/etc/debian_version") - endif(NOT LINUX_DISTRIBUTION) - if(NOT LINUX_DISTRIBUTION) - set(LINUX_DISTRIBUTION "Generic") - set(LINUX_VER "Unknown") - endif(NOT LINUX_DISTRIBUTION) - message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on ${LINUX_DISTRIBUTION} GNU/Linux Release ${LINUX_VER} ${ARCH_}") -endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + include(DetectLinuxDistro) + if(CMAKE_CROSSCOMPILING) + message(STATUS "Configuring GNSS-SDR v${VERSION} to be cross-compiled on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR}") + else() + message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}") + endif() +endif() -# Detect Mac OS X Version +# Detect macOS / Mac OS X Version if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - set(OperatingSystem "Mac OS X") - set(OS_IS_MACOSX TRUE) - exec_program(uname ARGS -v OUTPUT_VARIABLE DARWIN_VERSION) - string(REGEX MATCH "[0-9]+" DARWIN_VERSION ${DARWIN_VERSION}) - if(${DARWIN_VERSION} MATCHES "14") - set(MACOSX_YOSEMITE TRUE) - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") - message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.10 Yosemite") - endif(${DARWIN_VERSION} MATCHES "14") - if(${DARWIN_VERSION} MATCHES "13") - set(MACOSX_MAVERICKS TRUE) - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") - set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION="com.apple.compilers.llvm.clang.1_0") - message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.9 Mavericks") - endif(${DARWIN_VERSION} MATCHES "13") - if(${DARWIN_VERSION} MATCHES "12") - message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.8 Mountain Lion") - endif(${DARWIN_VERSION} MATCHES "12") - if(${DARWIN_VERSION} MATCHES "11") - message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.7 Lion") - endif(${DARWIN_VERSION} MATCHES "11") - if(${DARWIN_VERSION} MATCHES "10") - message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on Mac OS X 10.6 Snow Leopard") - endif(${DARWIN_VERSION} MATCHES "10") -endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + include(DetectMacOSVersion) + message(STATUS "Configuring GNSS-SDR v${VERSION} to be built on ${MACOS_DISTRIBUTION}") +endif() +# Define extra build types and select Release by default to get optimization flags +include(GnsssdrBuildTypes) +# Available options: +# - None: nothing set +# - Debug: -O2 -g +# - Release: -O3 +# - RelWithDebInfo: -O3 -g +# - MinSizeRel: -Os +# - Coverage: -Wall -pedantic -pthread -g -O0 -fprofile-arcs -ftest-coverage +# - NoOptWithASM: -O0 -g -save-temps +# - O2WithASM: -O2 -g -save-temps +# - O3WithASM: -O3 -g -save-temps +# - ASAN: -Wall -Wextra -g -O2 -fsanitize=address -fno-omit-frame-pointer +gnsssdr_check_build_type(${CMAKE_BUILD_TYPE}) +message(STATUS "Build type set to ${CMAKE_BUILD_TYPE}.") -#select the release build type by default to get optimization flags -if(NOT CMAKE_BUILD_TYPE) - if(ENABLE_GPERFTOOLS OR ENABLE_GPROF) - set(CMAKE_BUILD_TYPE "RelWithDebInfo") - message(STATUS "Build type not specified: defaulting to RelWithDebInfo.") - else(ENABLE_GPERFTOOLS OR ENABLE_GPROF) - set(CMAKE_BUILD_TYPE "Release") - message(STATUS "Build type not specified: defaulting to Release.") - endif(ENABLE_GPERFTOOLS OR ENABLE_GPROF) -else(NOT CMAKE_BUILD_TYPE) - message(STATUS "Build type set to ${CMAKE_BUILD_TYPE}.") -endif(NOT CMAKE_BUILD_TYPE) -set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "") +if(NOT (${CMAKE_BUILD_TYPE} STREQUAL "Release")) + set(ENABLE_STRIP OFF) +endif() + +# Enable optimization options in GCC for Release and RelWithDebInfo build types +if((${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")) + if(NOT (${LINUX_DISTRIBUTION} MATCHES "Fedora") AND NOT (${LINUX_DISTRIBUTION} MATCHES "Gentoo")) + # flag -O3 enables tree vectorization + # See https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html + set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG") + set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG") + endif() +endif() +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + # Fix for Debug and None modes in macOS + # without this, get get a runtime error + include(CheckCXXCompilerFlag) + check_cxx_compiler_flag(-fstandalone-debug HAVE_STANDALONE_DEBUG) + check_cxx_compiler_flag(-Og HAVE_OG_FLAG) + if(HAVE_STANDALONE_DEBUG AND HAVE_OG_FLAG) + set(CMAKE_CXX_FLAGS_DEBUG "-Og -g -fstandalone-debug") + set(CMAKE_C_FLAGS_DEBUG "-Og -g -fstandalone-debug") + if(CMAKE_BUILD_TYPE STREQUAL "None") + add_compile_options(-Og -fstandalone-debug) + endif() + endif() + endif() +endif() + +# allow 'large' files in 32 bit builds +if(UNIX) + if(CMAKE_VERSION VERSION_GREATER 3.12.0) + add_compile_definitions(_LARGEFILE_SOURCE _FILE_OFFSET_BITS=64 _LARGE_FILES) + else() + add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES) + endif() +endif() + +# If this is an out-of-tree build, do not pollute the original source directory +if(${GNSSSDR_BINARY_DIR} MATCHES ${GNSSSDR_SOURCE_DIR}) + set(LOCAL_INSTALL_BASE_DIR ${GNSSSDR_SOURCE_DIR}) +else() + set(LOCAL_INSTALL_BASE_DIR ${GNSSSDR_BINARY_DIR}) +endif() + +# Determine if CMake scripts make use of target_sources() +if(CMAKE_VERSION VERSION_GREATER 3.13) + set(USE_CMAKE_TARGET_SOURCES ON) +endif() + +# Determine if we are using make or ninja +if(CMAKE_MAKE_PROGRAM MATCHES "make") + set(CMAKE_MAKE_PROGRAM_PRETTY_NAME "make") +endif() +if(CMAKE_MAKE_PROGRAM MATCHES "ninja") + set(CMAKE_MAKE_PROGRAM_PRETTY_NAME "ninja") +endif() +if(CMAKE_MAKE_PROGRAM MATCHES "xcodebuild") + set(CMAKE_MAKE_PROGRAM_PRETTY_NAME "xcodebuild") +endif() +if(NOT CMAKE_MAKE_PROGRAM_PRETTY_NAME) + set(CMAKE_MAKE_PROGRAM_PRETTY_NAME "${CMAKE_MAKE_PROGRAM}") +endif() + +if(CMAKE_VERSION VERSION_LESS 3.12) + if(POLICY CMP0057) # required by FindDoxygen.cmake module + cmake_policy(SET CMP0057 NEW) # Support if() IN_LIST operator, added in CMake 3.3 + endif() +endif() -# Append -O2 optimization flag for Debug builds -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O2") ################################################################################ -# Checkout cmake version +# Minimum required versions ################################################################################ -if(CMAKE_VERSION VERSION_LESS 2.8.8) - message(STATUS "Your CMake version is too old and does not support some features required by GNSS-SDR. CMake version must be at least 2.8.8. For more information check https://github.com/joakimkarlsson/bandit/issues/40") - message(FATAL_ERROR "Fatal error: CMake >= 2.8.8 required.") -endif(CMAKE_VERSION VERSION_LESS 2.8.8) +set(GNSSSDR_APPLECLANG_MIN_VERSION "500") +set(GNSSSDR_ARMADILLO_MIN_VERSION "5.300.0") +set(GNSSSDR_BOOST_MIN_VERSION "1.53") +set(GNSSSDR_CLANG_MIN_VERSION "3.4.0") +set(GNSSSDR_GCC_MIN_VERSION "4.7.2") +set(GNSSSDR_GFLAGS_MIN_VERSION "2.1.2") +set(GNSSSDR_GNURADIO_MIN_VERSION "3.7.3") +set(GNSSSDR_MAKO_MIN_VERSION "0.4.2") +set(GNSSSDR_MATIO_MIN_VERSION "1.5.3") +set(GNSSSDR_PROTOBUF_MIN_VERSION "3.0.0") +set(GNSSSDR_PYTHON_MIN_VERSION "2.7") +set(GNSSSDR_PYTHON3_MIN_VERSION "3.4") +set(GNSSSDR_ABSEIL_MIN_VERSION "20240116") + ################################################################################ -# Checkout compiler version +# Versions to download and build (but not to install system-wide) if not found ################################################################################ +set(GNSSSDR_ARMADILLO_LOCAL_VERSION "14.2.x") +set(GNSSSDR_GFLAGS_LOCAL_VERSION "2.2.2") +set(GNSSSDR_GLOG_LOCAL_VERSION "0.7.1") +set(GNSSSDR_MATIO_LOCAL_VERSION "1.5.28") +set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "29.2") +set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.14") +set(GNSSSDR_GTEST_LOCAL_VERSION "1.15.2") +set(GNSSSDR_GNSS_SIM_LOCAL_VERSION "origin/master") +set(GNSSSDR_GNSSTK_LOCAL_VERSION "14.3.0") +set(GNSSSDR_BENCHMARK_LOCAL_VERSION "1.9.1") +set(GNSSSDR_MATHJAX_EXTERNAL_VERSION "2.7.7") +set(GNSSSDR_ABSL_LOCAL_VERSION "origin/master") # live at head (see https://abseil.io/about/releases) + +# Downgrade versions if requirements are not met +if(CMAKE_VERSION VERSION_LESS "3.5") + set(GNSSSDR_ARMADILLO_LOCAL_VERSION "12.8.x") +endif() + +if(CMAKE_VERSION VERSION_LESS "3.22") + set(GNSSSDR_GLOG_LOCAL_VERSION "0.6.0") +endif() +if(CMAKE_VERSION VERSION_LESS "3.16") + set(GNSSSDR_GLOG_LOCAL_VERSION "0.5.0") +endif() + +if(CMAKE_VERSION VERSION_LESS "3.3") + set(GNSSSDR_GLOG_LOCAL_VERSION "0.4.0") +endif() + +if(CMAKE_VERSION VERSION_LESS "3.0.2") + set(GNSSSDR_GFLAGS_LOCAL_VERSION "2.2.1") # Fix for CentOS 7 + set(GNSSSDR_GLOG_LOCAL_VERSION "0.3.4") # Fix for Ubuntu 14.04 +endif() + +if(CMAKE_VERSION VERSION_LESS "3.5") + set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.13") +endif() +if(CMAKE_VERSION VERSION_LESS "3.4") + set(GNSSSDR_PUGIXML_LOCAL_VERSION "1.10") +endif() + +if(CMAKE_CROSSCOMPILING OR CMAKE_VERSION VERSION_LESS "3.13" OR + ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0.0)) OR + ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0")) OR + ((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "11"))) + set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "21.12") +endif() + +if(CMAKE_VERSION VERSION_LESS "3.13" OR + (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3.1) OR + (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0.0)) + set(GNSSSDR_GTEST_LOCAL_VERSION "1.13.0") +endif() + +if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) OR + (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) OR + CMAKE_VERSION VERSION_LESS 3.5) + set(GNSSSDR_GTEST_LOCAL_VERSION "1.10.x") +endif() + +if(CMAKE_VERSION VERSION_LESS "3.17") + set(GNSSSDR_GNSSTK_LOCAL_VERSION "13.7.0") +endif() + + + +################################################################################ +# Check compiler version +################################################################################ +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${GNSSSDR_GCC_MIN_VERSION}) + message(STATUS "Your GCC version is too old and does not support some C++ features required by GNSS-SDR. GCC version must be at least ${GNSSSDR_GCC_MIN_VERSION}") + message(FATAL_ERROR "Fatal error: GCC >= ${GNSSSDR_GCC_MIN_VERSION} required.") + endif() +endif() + +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + execute_process(COMMAND + ${CMAKE_CXX_COMPILER} -v + RESULT_VARIABLE _res ERROR_VARIABLE _err + ERROR_STRIP_TRAILING_WHITESPACE + ) + if(${_res} STREQUAL "0") + # output is in error stream + string(REGEX MATCH "^Apple.*" IS_APPLE ${_err}) + if("${IS_APPLE}" STREQUAL "") + set(MIN_VERSION ${GNSSSDR_CLANG_MIN_VERSION}) + set(APPLE_STR "") + # retrieve the compiler's version from it + string(REGEX MATCH "clang version [0-9.]+" CLANG_OTHER_VERSION ${_err}) + string(REGEX MATCH "[0-9.]+" CLANG_VERSION ${CLANG_OTHER_VERSION}) + else() + set(MIN_VERSION ${GNSSSDR_APPLECLANG_MIN_VERSION}) + set(APPLE_STR "Apple ") + # retrieve the compiler's version from it + string(REGEX MATCH "(clang-[0-9.]+)" CLANG_APPLE_VERSION ${_err}) + string(REGEX MATCH "[0-9.]+" CLANG_VERSION ${CLANG_APPLE_VERSION}) + endif() + if(${CLANG_VERSION} VERSION_LESS "${MIN_VERSION}") + message(WARNING "\nThe compiler selected to build GNSS-SDR (${APPLE_STR}Clang version ${CLANG_VERSION} : ${CMAKE_CXX_COMPILER}) is older than that officially supported (${MIN_VERSION} minimum). This build may or not work. We highly recommend using Apple Clang version ${APPLECLANG_MIN_VERSION} or more recent, or Clang version ${CLANG_MIN_VERSION} or more recent.") + endif() + else() + message(WARNING "\nCannot determine the version of the compiler selected to build GNSS-SDR (${APPLE_STR}Clang : ${CMAKE_CXX_COMPILER}). This build may or not work. We highly recommend using Apple Clang version ${APPLECLANG_MIN_VERSION} or more recent, or Clang version ${CLANG_MIN_VERSION} or more recent.") + endif() +endif() + +# Determine if we use lambdas +if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32) + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.1.1") + set(DO_NOT_USE_LAMBDAS ON) + endif() +endif() + +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + if(CLANG_VERSION VERSION_LESS "600") + set(DO_NOT_USE_LAMBDAS ON) + endif() + else() + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.5.0") + set(DO_NOT_USE_LAMBDAS ON) + endif() + endif() +endif() + +# Determine if we try to use generic lambdas +if(NOT DO_NOT_USE_LAMBDAS) + if(CMAKE_VERSION VERSION_GREATER 3.1 AND NOT ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND + (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0))) + set(USE_GENERIC_LAMBDAS ON) + endif() +endif() + + + +################################################################################ +# Set minimal C and C++ standards +################################################################################ +if(NOT (CMAKE_VERSION VERSION_LESS "3.1")) + set(CMAKE_C_STANDARD 11) + set(CMAKE_CXX_STANDARD 14) + set(CMAKE_CXX_EXTENSIONS OFF) +else() + add_compile_options("$<$,C>:-std=gnu11>") + set(CMAKE_C_STANDARD 11) # set variable just for reporting + if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32) + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.1.1") + add_compile_options("$<$,CXX>:-std=c++11>") + set(CMAKE_CXX_STANDARD 11) # set variable just for reporting + else() + add_compile_options("$<$,CXX>:-std=c++14>") + set(CMAKE_CXX_STANDARD 14) # set variable just for reporting + endif() + endif() + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + if(CLANG_VERSION VERSION_LESS "600") + add_compile_options("$<$,CXX>:-std=c++11>") + set(CMAKE_CXX_STANDARD 11) + else() + add_compile_options("$<$,CXX>:-std=c++14>") + set(CMAKE_CXX_STANDARD 14) + endif() + else() + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.5.0") + add_compile_options("$<$,CXX>:-std=c++11>") + set(CMAKE_CXX_STANDARD 11) + else() + add_compile_options("$<$,CXX>:-std=c++14>") + set(CMAKE_CXX_STANDARD 14) + endif() + endif() + endif() +endif() + +# Visibility +# See https://gcc.gnu.org/wiki/Visibility +if(POLICY CMP0063) + cmake_policy(SET CMP0063 NEW) + set(CMAKE_CXX_VISIBILITY_PRESET hidden) + set(CMAKE_C_VISIBILITY_PRESET hidden) + set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) +else() + if((CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32) + add_definitions(-fvisibility=hidden) + endif() +endif() -if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7) - message(STATUS "Your GCC version is too old and does not support some C++11 features required by GNSS-SDR. GCC version must be at least 4.7") - if(${LINUX_DISTRIBUTION} MATCHES "Ubuntu") - if(${LINUX_VER} MATCHES "12.04") - message(STATUS "For instructions on how to upgrade GCC, check http://askubuntu.com/a/271561") - endif(${LINUX_VER} MATCHES "12.04") - endif(${LINUX_DISTRIBUTION} MATCHES "Ubuntu") - message(FATAL_ERROR "Fatal error: GCC >= 4.7 required.") - endif(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7) -endif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") ################################################################################ # Check if the compiler defines the architecture as ARM ################################################################################ -if(NOT OS_IS_MACOSX) - include(TestForARM) -endif(NOT OS_IS_MACOSX) +if(CMAKE_SYSTEM_PROCESSOR MATCHES "(^arm)|(^aarch64)") + set(IS_ARM TRUE) +endif() +if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")) + if(CMAKE_CROSSCOMPILING) + if(NOT CMAKE_NO_SYSTEM_FROM_IMPORTED) + set(CMAKE_NO_SYSTEM_FROM_IMPORTED TRUE) + endif() + endif() +endif() + ################################################################################ -# Check for availability of SSE +# pkg-config - Helper tool used when compiling applications and libraries. ################################################################################ -if(NOT ENABLE_GENERIC_ARCH) - include(TestForSSE) -endif(NOT ENABLE_GENERIC_ARCH) +set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH TRUE) +set(FPHSA_NAME_MISMATCHED ON) +find_package(PkgConfig) + ################################################################################ -# Googletest - http://code.google.com/p/googletest/ +# Find the POSIX thread (pthread) libraries +################################################################################ +if(CMAKE_VERSION VERSION_LESS 3.1) + # Workaround for CMake < 3.1 + find_package(Threads REQUIRED) + add_library(Threads::Threads SHARED IMPORTED) + set_property(TARGET Threads::Threads PROPERTY INTERFACE_LINK_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}") + set_property(TARGET Threads::Threads PROPERTY IMPORTED_LINK_INTERFACE_LANGUAGES "CXX") + include(GNUInstallDirs) + # Fix bug in Debian 8.11 + if(${LINUX_DISTRIBUTION} MATCHES "Debian") + if(${LINUX_VER} VERSION_LESS 8.12) + if(ARCH_64BITS) + set(FIX_PTHREADS_LOCATION "x86_64-linux-gnu/") + endif() + endif() + endif() + set_property(TARGET Threads::Threads PROPERTY IMPORTED_LOCATION /usr/${CMAKE_INSTALL_LIBDIR}/${FIX_PTHREADS_LOCATION}${CMAKE_FIND_LIBRARY_PREFIXES}pthread${CMAKE_SHARED_LIBRARY_SUFFIX}) +else() + set(CMAKE_THREAD_PREFER_PTHREAD TRUE) + if(CMAKE_CROSSCOMPILING) + set(THREADS_PREFER_PTHREAD_FLAG FALSE) + else() + set(THREADS_PREFER_PTHREAD_FLAG TRUE) + endif() + find_package(Threads REQUIRED) +endif() +set_package_properties(Threads PROPERTIES + URL "https://computing.llnl.gov/tutorials/pthreads/" + DESCRIPTION "Implements the POSIX Threads execution model" + PURPOSE "Used to implement parallelism." + TYPE REQUIRED +) + + + +################################################################################ +# Googletest - https://github.com/google/googletest ################################################################################ enable_testing() -if(EXISTS $ENV{GTEST_DIR}) - set(GTEST_DIR $ENV{GTEST_DIR}) -endif(EXISTS $ENV{GTEST_DIR}) -if(GTEST_DIR) - message(STATUS "Googletest root folder set at ${GTEST_DIR}") - find_path(LIBGTEST_DEV_DIR NAMES src/gtest-all.cc PATHS ${GTEST_DIR}) - if(LIBGTEST_DEV_DIR) - message (STATUS "Googletest has been found.") - else(LIBGTEST_DEV_DIR) - message (FATAL_ERROR " Googletest source code has not been found at ${GTEST_DIR}.") - endif(LIBGTEST_DEV_DIR) - find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS ${GTEST_DIR}/include) -else(GTEST_DIR) - find_path(LIBGTEST_DEV_DIR NAMES src/gtest-all.cc PATHS /usr/src/gtest /opt/local/src/gtest-1.7.0) - find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS /usr/include /opt/local/src/gtest-1.7.0/include) - if(LIBGTEST_DEV_DIR) - message (STATUS "Googletest (libgtest-dev package) has been found.") - else(LIBGTEST_DEV_DIR) - message (STATUS " Googletest has not been found.") - message (STATUS " Googletest will be downloaded and built automatically ") - message (STATUS " when doing 'make'. ") - endif(LIBGTEST_DEV_DIR) -endif(GTEST_DIR) +if(ENABLE_UNIT_TESTING OR ENABLE_SYSTEM_TESTING) + if(NOT GTEST_DIR) + if(DEFINED ENV{GTEST_DIR}) + set(GTEST_DIR $ENV{GTEST_DIR}) + message(STATUS "Googletest root folder set at ${GTEST_DIR}") + endif() + endif() +endif() - - -################################################################################ -# Boost - http://www.boost.org -################################################################################ -if(UNIX AND EXISTS "/usr/lib64") - list(APPEND BOOST_LIBRARYDIR "/usr/lib64") # Fedora 64-bit fix -endif(UNIX AND EXISTS "/usr/lib64") -if(GNURADIO_INSTALL_PREFIX) - if(EXISTS "${GNURADIO_INSTALL_PREFIX}/lib/libboost_thread-mt.so") - list(APPEND BOOST_LIBRARYDIR "${GNURADIO_INSTALL_PREFIX}/lib") # Boost installed by PyBOMBS - list(APPEND BOOST_INCLUDEDIR "${GNURADIO_INSTALL_PREFIX}/include") # Boost installed by PyBOMBS - endif(EXISTS "${GNURADIO_INSTALL_PREFIX}/lib/libboost_thread-mt.so") -endif(GNURADIO_INSTALL_PREFIX) -set(Boost_ADDITIONAL_VERSIONS - "1.45.0" "1.45" "1.46.0" "1.46" "1.48.0" "1.48" "1.49.0" "1.49" - "1.50.0" "1.50" "1.51.0" "1.51" "1.53.0" "1.53" "1.54.0" "1.54" - "1.55.0" "1.55" "1.56.0" "1.56" "1.57.0" "1.57" "1.58.0" "1.58" "1.59.0" "1.59" - "1.60.0" "1.60" "1.61.0" "1.61" "1.62.0" "1.62" "1.63.0" "1.63" "1.64.0" "1.64" - "1.65.0" "1.65" "1.66.0" "1.66" "1.67.0" "1.67" "1.68.0" "1.68" "1.69.0" "1.69" +find_package(GOOGLETEST) +set_package_properties(GOOGLETEST PROPERTIES + PURPOSE "Used for Unit and System Tests." + TYPE REQUIRED ) -set(Boost_USE_MULTITHREAD ON) -set(Boost_USE_STATIC_LIBS OFF) -find_package(Boost COMPONENTS date_time system filesystem thread serialization chrono REQUIRED) -if(NOT Boost_FOUND) - message(FATAL_ERROR "Fatal error: Boost (version >=1.45.0) required.") -endif(NOT Boost_FOUND) +if(NOT GOOGLETEST_FOUND) + set_package_properties(GOOGLETEST PROPERTIES + PURPOSE "Googletest v${GNSSSDR_GTEST_LOCAL_VERSION} will be downloaded, built, and statically linked when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'." + ) +endif() -################################################################################ -# GNU Radio - http://gnuradio.org/redmine/projects/gnuradio/wiki -################################################################################ -set(GR_REQUIRED_COMPONENTS RUNTIME ANALOG BLOCKS DIGITAL FFT FILTER PMT FEC TRELLIS UHD) -find_package(Gnuradio) -if(PC_GNURADIO_RUNTIME_VERSION) - if(PC_GNURADIO_RUNTIME_VERSION VERSION_LESS 3.7.3) - set(GNURADIO_RUNTIME_FOUND) - message(STATUS "The GNU Radio version installed in your system is too old.") - endif(PC_GNURADIO_RUNTIME_VERSION VERSION_LESS 3.7.3) -endif(PC_GNURADIO_RUNTIME_VERSION) -if(NOT GNURADIO_RUNTIME_FOUND) - message(STATUS "CMake cannot find GNU Radio >= 3.7.3") - if(OS_IS_LINUX) - message("Go to http://gnuradio.org/redmine/projects/pybombs/wiki") - message("and follow the instructions to install GNU Radio in your system.") - message(FATAL_ERROR "GNU Radio 3.7.3 or later is required to build gnss-sdr") - endif(OS_IS_LINUX) - if(OS_IS_MACOSX) - message("You can install it easily via Macports.") - message("Open a terminal and type:") - message("sudo port install gnuradio ") - message(FATAL_ERROR "GNU Radio 3.7.3 or later is required to build gnss-sdr") - endif(OS_IS_MACOSX) -endif(NOT GNURADIO_RUNTIME_FOUND) - -if(NOT GNURADIO_BLOCKS_FOUND) - message(FATAL_ERROR "*** gnuradio-blocks 3.7 or later is required to build gnss-sdr") -endif() -if(NOT GNURADIO_FILTER_FOUND) - message(FATAL_ERROR "*** gnuradio-filter 3.7 or later is required to build gnss-sdr") -endif() -if(NOT GNURADIO_FFT_FOUND) - message(FATAL_ERROR "*** gnuradio-fft 3.7 or later is required to build gnss-sdr") -endif() -if(NOT GNURADIO_ANALOG_FOUND) - message(FATAL_ERROR "*** gnuradio-analog 3.7 or later is required to build gnss-sdr") -endif() -if(NOT GNURADIO_FEC_FOUND) - message(FATAL_ERROR "*** gnuradio-fec 3.7 or later is required to build gnss-sdr") -endif() -if(NOT GNURADIO_TRELLIS_FOUND) - message(FATAL_ERROR "*** gnuradio-trellis 3.7 or later is required to build gnss-sdr") -endif() - ################################################################################ # VOLK - Vector-Optimized Library of Kernels ################################################################################ -find_package(Volk) +find_package(VOLK) if(NOT VOLK_FOUND) message(FATAL_ERROR "*** VOLK is required to build gnss-sdr") endif() +set_package_properties(VOLK PROPERTIES + PURPOSE "Provides an abstraction of optimized math routines targeting several SIMD processors." + TYPE REQUIRED +) + + + +################################################################################ +# GNU Radio - https://www.gnuradio.org +################################################################################ +list(APPEND GR_REQUIRED_COMPONENTS RUNTIME PMT BLOCKS FFT FILTER ANALOG) +find_package(UHD) +set_package_properties(UHD PROPERTIES + PURPOSE "Used for communication with front-ends of the USRP family." + TYPE OPTIONAL +) +if(ENABLE_UHD) + if(NOT UHD_FOUND) + set(ENABLE_UHD OFF) + else() + list(APPEND GR_REQUIRED_COMPONENTS UHD) + endif() +endif() + +find_package(ZEROMQ) +set_package_properties(ZEROMQ PROPERTIES + PURPOSE "Used by the ZMQ_Signal_Source." + TYPE OPTIONAL +) +if(ENABLE_ZMQ) + if(NOT ZEROMQ_FOUND) + set(ENABLE_ZMQ OFF) + else() + list(APPEND GR_REQUIRED_COMPONENTS ZEROMQ) + endif() +endif() + +find_package(GNURADIO) +set_package_properties(GNURADIO PROPERTIES + PURPOSE "Implements flowgraph scheduler, provides some processing blocks and classes to create new ones." + TYPE REQUIRED +) + +if(NOT (GNURADIO_VERSION VERSION_LESS "3.8")) + set(GNURADIO_IS_38_OR_GREATER ON) +endif() + + + +################################################################################ +# Detect availability of std::filesystem and set C++ standard accordingly +################################################################################ +set(FILESYSTEM_FOUND FALSE) +if(NOT ENABLE_OWN_GNSSTK) + unset(Gnsstk::gnsstk CACHE) + unset(GNSSTK_FOUND CACHE) + unset(GNSSTK_OLDER_THAN_8 CACHE) + unset(GNSSTK_OLDER_THAN_9 CACHE) + unset(GNSSTK_OLDER_THAN_13 CACHE) + find_package(GNSSTK) + set_package_properties(GNSSTK PROPERTIES + PURPOSE "Used in some Extra Tests." + ) +else() + unset(Gnsstk::gnsstk CACHE) + unset(GNSSTK_FOUND CACHE) + unset(GNSSTK_OLDER_THAN_8 CACHE) + unset(GNSSTK_OLDER_THAN_9 CACHE) + unset(GNSSTK_OLDER_THAN_13 CACHE) +endif() +if(NOT (GNURADIO_VERSION VERSION_LESS 3.8) AND (LOG4CPP_READY_FOR_CXX17 OR GNURADIO_USES_SPDLOG)) + # Check if we have std::filesystem + if(NOT (CMAKE_VERSION VERSION_LESS 3.8)) + if(NOT GNSSTK_FOUND OR NOT (GNSSTK_FOUND AND GNSSTK_OLDER_THAN_8)) # Fix for GNSSTk < 8.0.0 + find_package(FILESYSTEM COMPONENTS Final Experimental) + set_package_properties(FILESYSTEM PROPERTIES + URL "https://en.cppreference.com/w/cpp/filesystem" + DESCRIPTION "Provides facilities for performing operations on file systems and their components" + PURPOSE "Work with paths, regular files, and directories." + TYPE OPTIONAL + ) + endif() + if(FILESYSTEM_FOUND) + set(CMAKE_CXX_STANDARD 17) + if(CMAKE_VERSION VERSION_GREATER 3.13) + if(((NOT UHD_FOUND) OR (UHD_FOUND AND ("${UHD_VERSION}" VERSION_GREATER 4.2.99))) AND (GNURADIO_VERSION VERSION_GREATER 3.10.3.99)) + set(CMAKE_CXX_STANDARD 20) + # if(CMAKE_VERSION VERSION_GREATER 3.20.99) + # if(((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "11.0.0")) OR + # ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "12.0"))) + # set(CMAKE_CXX_STANDARD 23) + # endif() + # endif() + endif() + endif() + set(CMAKE_CXX_STANDARD_REQUIRED ON) + endif() + endif() +endif() +if((NOT PMT_USES_BOOST_ANY) AND (CMAKE_CXX_STANDARD VERSION_LESS 17)) + message(FATAL_ERROR "GNU Radio v${GNURADIO_VERSION} requires C++17. Please update your environment.") +endif() + + + +################################################################################ +# Boost - https://www.boost.org +################################################################################ +if(UNIX AND EXISTS "/usr/lib64") + list(APPEND BOOST_LIBRARYDIR "/usr/lib64") # Fedora 64-bit fix +endif() +# Boost_ADDITIONAL_VERSIONS is only used internally by cmake to know the +# formation of newer versions. No need to increase, not used anymore since newer +# Boost provides its own CMake configuration files. +set(Boost_ADDITIONAL_VERSIONS + "1.53.0" "1.53" "1.54.0" "1.54" + "1.55.0" "1.55" "1.56.0" "1.56" "1.57.0" "1.57" "1.58.0" "1.58" "1.59.0" "1.59" + "1.60.0" "1.60" "1.61.0" "1.61" "1.62.0" "1.62" "1.63.0" "1.63" "1.64.0" "1.64" + "1.65.0" "1.65" "1.66.0" "1.66" "1.67.0" "1.67" "1.68.0" "1.68" "1.69.0" "1.69" + "1.70.0" "1.70" "1.71.0" "1.71" +) +set(Boost_USE_MULTITHREAD ON) +set(BOOST_COMPONENTS atomic chrono date_time serialization system thread) +if(NOT ${FILESYSTEM_FOUND}) + set(BOOST_COMPONENTS ${BOOST_COMPONENTS} filesystem) +endif() +if(CMAKE_VERSION VERSION_LESS 3.30) + find_package(Boost ${GNSSSDR_BOOST_MIN_VERSION} COMPONENTS ${BOOST_COMPONENTS} REQUIRED) +else() + find_package(Boost ${GNSSSDR_BOOST_MIN_VERSION} COMPONENTS ${BOOST_COMPONENTS}) + if(NOT Boost_FOUND) + message(STATUS "Trying deprecated FindBoost Module ...") + if(POLICY CMP0167) + cmake_policy(SET CMP0167 OLD) + find_package(Boost ${GNSSSDR_BOOST_MIN_VERSION} REQUIRED COMPONENTS ${BOOST_COMPONENTS}) + endif() + endif() +endif() +if(NOT Boost_FOUND) + message(FATAL_ERROR "Fatal error: Boost (version >=${GNSSSDR_BOOST_MIN_VERSION}) required.") +endif() + +set_package_properties(Boost PROPERTIES + URL "https://www.boost.org" + PURPOSE "Used widely across the source code." + TYPE REQUIRED +) + +if(CMAKE_VERSION VERSION_LESS 3.14) + set(Boost_VERSION_STRING "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}") +endif() +if(POLICY CMP0093) + cmake_policy(SET CMP0093 NEW) # FindBoost reports Boost_VERSION in x.y.z format. +endif() +set_package_properties(Boost PROPERTIES + DESCRIPTION "Portable C++ source libraries (found: v${Boost_VERSION_STRING})" +) + +# Define targets if CMake < 3.5 +if(CMAKE_VERSION VERSION_LESS 3.5) + if(NOT TARGET Boost::date_time) + add_library(Boost::date_time SHARED IMPORTED) + set_target_properties(Boost::date_time PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR} + INTERFACE_LINK_LIBRARIES ${Boost_DATE_TIME_LIBRARIES} + IMPORTED_LOCATION ${Boost_DATE_TIME_LIBRARIES} + ) + endif() + if(NOT TARGET Boost::system) + add_library(Boost::system SHARED IMPORTED) + set_target_properties(Boost::system PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR} + INTERFACE_LINK_LIBRARIES ${Boost_SYSTEM_LIBRARIES} + IMPORTED_LOCATION ${Boost_SYSTEM_LIBRARIES} + ) + endif() + if(NOT TARGET Boost::thread) + add_library(Boost::thread SHARED IMPORTED) + set_target_properties(Boost::thread PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR} + INTERFACE_LINK_LIBRARIES ${Boost_THREAD_LIBRARIES} + IMPORTED_LOCATION ${Boost_THREAD_LIBRARIES} + ) + endif() + if(NOT TARGET Boost::serialization) + add_library(Boost::serialization SHARED IMPORTED) + set_target_properties(Boost::serialization PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR} + INTERFACE_LINK_LIBRARIES ${Boost_SERIALIZATION_LIBRARIES} + IMPORTED_LOCATION ${Boost_SERIALIZATION_LIBRARIES} + ) + endif() + if(NOT TARGET Boost::chrono) + add_library(Boost::chrono SHARED IMPORTED) + set_target_properties(Boost::chrono PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR} + INTERFACE_LINK_LIBRARIES ${Boost_CHRONO_LIBRARIES} + IMPORTED_LOCATION ${Boost_CHRONO_LIBRARIES} + ) + endif() + if(NOT TARGET Boost::atomic) + add_library(Boost::atomic SHARED IMPORTED) + set_target_properties(Boost::atomic PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR} + INTERFACE_LINK_LIBRARIES ${Boost_ATOMIC_LIBRARIES} + IMPORTED_LOCATION ${Boost_ATOMIC_LIBRARIES} + ) + endif() + if(NOT ${FILESYSTEM_FOUND}) + if(NOT TARGET Boost::filesystem) + add_library(Boost::filesystem SHARED IMPORTED) + set_target_properties(Boost::filesystem PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR} + INTERFACE_LINK_LIBRARIES ${Boost_FILESYSTEM_LIBRARIES} + IMPORTED_LOCATION ${Boost_FILESYSTEM_LIBRARIES} + ) + endif() + endif() +endif() + +# Define Boost::headers target if CMake < 3.15 +if(CMAKE_VERSION VERSION_LESS 3.15) + if(NOT TARGET Boost::headers) + if(CMAKE_VERSION VERSION_LESS 3.0) + add_library(Boost::headers SHARED IMPORTED) # Trick for CMake 2.8.12 + set_target_properties(Boost::headers PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR} + IMPORTED_LOCATION ${Boost_DATE_TIME_LIBRARIES} + ) + else() + add_library(Boost::headers INTERFACE IMPORTED) + set_target_properties(Boost::headers PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR} + ) + endif() + endif() +endif() + +# Provide package descriptions if Boost >= 1.71.00 +if(Boost_VERSION_STRING VERSION_GREATER 1.70.99) + set_package_properties(boost_headers PROPERTIES + URL "https://www.boost.org/" + DESCRIPTION "Header files of Boost libraries" + PURPOSE "Used widely across the source code." + TYPE REQUIRED + ) + set_package_properties(boost_atomic PROPERTIES + URL "https://www.boost.org/doc/libs/release/doc/html/atomic.html" + DESCRIPTION "Provides atomic data types and operations on those types" + PURPOSE "Required by Boost Thread." + TYPE REQUIRED + ) + set_package_properties(boost_chrono PROPERTIES + URL "https://www.boost.org/doc/libs/release/doc/html/chrono.html" + DESCRIPTION "Useful time utilities" + PURPOSE "Required by Boost Thread." + TYPE REQUIRED + ) + set_package_properties(boost_date_time PROPERTIES + URL "https://www.boost.org/doc/libs/release/doc/html/date_time.html" + DESCRIPTION "A set of date-time libraries" + PURPOSE "Required by Boost Thread." + TYPE REQUIRED + ) + set_package_properties(boost_serialization PROPERTIES + URL "https://www.boost.org/doc/libs/release/libs/serialization/doc/index.html" + DESCRIPTION "Reversible deconstruction of C++ data structures to sequences of bytes" + PURPOSE "Used for serializing data." + TYPE REQUIRED + ) + set_package_properties(boost_system PROPERTIES + URL "https://www.boost.org/doc/libs/release/libs/system/doc/html/system.html" + DESCRIPTION "Extensible error reporting library" + PURPOSE "Used for error reporting." + TYPE REQUIRED + ) + set_package_properties(boost_thread PROPERTIES + URL "https://www.boost.org/doc/libs/release/doc/html/thread.html" + DESCRIPTION "Portable C++ multi-threading" + PURPOSE "Used by GNU Radio multi-threading system." + TYPE REQUIRED + ) + if(NOT ${FILESYSTEM_FOUND}) + set_package_properties(boost_filesystem PROPERTIES + URL "https://www.boost.org/doc/libs/release/libs/filesystem/doc/index.htm" + DESCRIPTION "Portable facilities to manipulate paths and files" + PURPOSE "Used for output file handling." + TYPE REQUIRED + ) + endif() +endif() + +if(Boost_VERSION_STRING VERSION_LESS 1.58.0) + set(USE_OLD_BOOST_MATH_COMMON_FACTOR ON) +endif() + +if(Boost_VERSION_STRING VERSION_GREATER 1.65.99) + set(USE_BOOST_ASIO_IO_CONTEXT ON) +endif() + +if(Boost_VERSION_STRING VERSION_LESS 1.73) + # Disable concepts to address https://github.com/boostorg/asio/issues/312 + if(((CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 9.9) OR + CMAKE_CXX_COMPILER_ID MATCHES "Clang") AND (CMAKE_VERSION VERSION_GREATER 3.11)) + target_compile_definitions(Boost::headers + INTERFACE + -DBOOST_ASIO_DISABLE_CONCEPTS + ) + endif() +endif() + +# Workaround for https://github.com/boostorg/format/issues/67 +if((Boost_VERSION_STRING VERSION_GREATER 1.71) AND (Boost_VERSION_STRING VERSION_LESS 1.73)) + if(CMAKE_CXX_STANDARD VERSION_GREATER 17) + set(CMAKE_CXX_STANDARD 17) + endif() +endif() + +# Workaround for macOS Sonoma +if((CMAKE_CXX_STANDARD EQUAL 17) AND ((${CMAKE_SYSTEM_NAME} MATCHES "Darwin") AND ("${DARWIN_VERSION}" VERSION_GREATER "22.99"))) + add_definitions(-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION=1) +endif() + +# Fix for Boost Asio < 1.70 when using Clang in macOS +if(Boost_VERSION_STRING VERSION_LESS 1.70.0) + # Check if we have std::string_view + unset(has_string_view CACHE) + include(CheckCXXSourceCompiles) + check_cxx_source_compiles(" + #include  + int main() + { std::string_view sv; }" + has_string_view + ) +endif() + +# Fox for CentOS 7 with cmake3 and gcc8 +if(Boost_VERSION_STRING VERSION_LESS "1.60") + set(USE_GENERIC_LAMBDAS OFF) +endif() + +# Fix for Boost >= 1.73 +if(Boost_VERSION_STRING VERSION_GREATER 1.72.99) + set(USE_BOOST_BIND_PLACEHOLDERS ON) +endif() + + + +################################################################################ +# Detect availability of std::span +################################################################################ +unset(has_span CACHE) +include(CheckCXXSourceCompiles) +check_cxx_source_compiles(" + #include + int main() + { std::span s; }" + has_span +) + + + +################################################################################ +# Detect availability of std::rotl +################################################################################ +unset(has_rotl CACHE) +if(CMAKE_CXX_STANDARD VERSION_GREATER 17) + check_cxx_source_compiles(" + #include + #include + int main() + { + std::uint8_t i = 0b00011101; + auto k = std::rotl(i,0); + }" + has_rotl + ) +endif() + + + +################################################################################ +# Detect availability of std::put_time (Workaround for gcc < 5.0) +################################################################################ +check_cxx_source_compiles(" + #include + int main() + { std::put_time(nullptr, \"\"); }" + has_put_time +) + + + +################################################################################ +# Detect availability of std::plus without class specifier +################################################################################ +unset(has_std_plus_void CACHE) +if(CMAKE_CXX_STANDARD VERSION_GREATER 11) + include(CheckCXXSourceCompiles) + check_cxx_source_compiles(" + #include + int main() + { [](float a=1, float b=0){return std::plus<>();}; };" + has_std_plus_void + ) +endif() + + + +################################################################################ +# Detect availability of std::transform_reduce +################################################################################ +unset(has_transform_reduce CACHE) +unset(has_transform_reduce_with_execution_policy CACHE) +if(CMAKE_CXX_STANDARD VERSION_GREATER 14) + include(CheckCXXSourceCompiles) + check_cxx_source_compiles(" + #include + #include + #include + int main() + { + std::vector a(5); + std::vector b(5); + auto c = std::transform_reduce(cbegin(a), cend(a), cbegin(b), 0, std::plus<>{}, std::multiplies<>{}); };" + has_transform_reduce + ) + check_cxx_source_compiles(" + #include + #include + #include + #include + int main() + { + std::vector a(5); + std::vector b(5); + auto c = std::transform_reduce(std::execution::par, cbegin(a), cend(a), cbegin(b), 0, std::plus<>{}, std::multiplies<>{}); };" + has_transform_reduce_with_execution_policy + ) +endif() + + + +################################################################################ +# Detect availability of shm_open +################################################################################ +unset(HAVE_SHM_OPEN CACHE) +include(CheckFunctionExists) +check_function_exists(shm_open HAVE_SHM_OPEN) ################################################################################ # volk_gnsssdr module - GNSS-SDR's own VOLK library ################################################################################ -find_package(VolkGnssSdr) -if(ENABLE_PACKAGING) - if(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) - set(STRIP_VOLK_GNSSSDR_PROFILE "-DENABLE_STRIP=ON") - endif(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) -endif(ENABLE_PACKAGING) -set(VOLK_GNSSSDR_BUILD_COMMAND "make") -if(OS_IS_MACOSX) - set(USE_MACPORTS_PYTHON "-DPYTHON_EXECUTABLE=/opt/local/bin/python") +find_package(VOLKGNSSSDR) +set_package_properties(VOLKGNSSSDR PROPERTIES + PURPOSE "Accelerates math routines targeting several SIMD processors." + TYPE REQUIRED +) +if(NOT VOLKGNSSSDR_FOUND) + message(STATUS " volk_gnsssdr will be built along with gnss-sdr when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.") + ############################### + # Find Python required modules + ############################### + include(SetupPython) # sets PYTHON_EXECUTABLE and search for required modules + + if(NOT PYTHON_MIN_VER_FOUND) + message(FATAL_ERROR "Python ${GNSSSDR_PYTHON_MIN_VERSION} or greater required to build VOLK_GNSSSDR") + endif() + + if(${PYTHON3}) + set(PYTHON_NAME "python3") + else() + set(PYTHON_NAME "python") + endif() + + # Mako + if(NOT MAKO_FOUND) + message(STATUS "Mako template library not found. See https://www.makotemplates.org/") + message(STATUS " You can try to install it by typing:") + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(STATUS " sudo yum install ${PYTHON_NAME}-mako") + elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE") + message(STATUS " sudo zypper install ${PYTHON_NAME}-Mako") + else() + message(STATUS " sudo apt-get install ${PYTHON_NAME}-mako") + endif() + endif() + message(FATAL_ERROR "Mako templates required to build VOLK_GNSSSDR") + endif() + + if(PYTHON_NAME STREQUAL "python") + # Six + if(NOT SIX_FOUND) + message(STATUS "python-six not found. See https://pythonhosted.org/six/") + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + message(STATUS " You can try to install it by typing:") + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(STATUS " sudo yum install ${PYTHON_NAME}-six") + elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE") + message(STATUS " sudo zypper install ${PYTHON_NAME}-six") + else() + message(STATUS " sudo apt-get install ${PYTHON_NAME}-six") + endif() + endif() + message(FATAL_ERROR "six - python 2 and 3 compatibility library required to build VOLK_GNSSSDR") + endif() + endif() + + if(CMAKE_VERSION VERSION_GREATER 3.12) + set_package_properties(Python3 PROPERTIES + URL "https://www.python.org/" + PURPOSE "Required to build volk_gnsssdr." + TYPE REQUIRED + ) + if(Python3_FOUND) + set_package_properties(Python3 PROPERTIES + DESCRIPTION "An interpreted, high-level, general-purpose programming language (found: v${Python3_VERSION})" + ) + else() + set_package_properties(Python3 PROPERTIES + DESCRIPTION "An interpreted, high-level, general-purpose programming language" + PURPOSE "Another Python version will be used." + ) + endif() + if(Python2_FOUND) + set_package_properties(Python2 PROPERTIES + URL "https://www.python.org/" + DESCRIPTION "An interpreted, high-level, general-purpose programming language (found: v${Python2_VERSION})" + PURPOSE "Required to build volk_gnsssdr." + TYPE REQUIRED + ) + endif() + endif() + + if(CMAKE_VERSION VERSION_LESS 3.27 AND PYTHONINTERP_FOUND) + set_package_properties(PythonInterp PROPERTIES + URL "https://www.python.org/" + DESCRIPTION "An interpreted, high-level, general-purpose programming language (found: v${PYTHON_VERSION_STRING})" + PURPOSE "Required to build volk_gnsssdr." + TYPE REQUIRED + ) + endif() + + set(STRIP_VOLK_GNSSSDR_PROFILE "") + if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32) + set(STRIP_VOLK_GNSSSDR_PROFILE -DENABLE_STRIP=${ENABLE_STRIP}) + if(ENABLE_PACKAGING) + set(STRIP_VOLK_GNSSSDR_PROFILE ${STRIP_VOLK_GNSSSDR_PROFILE} -DCMAKE_VERBOSE_MAKEFILE=ON) + endif() + endif() + + set(VOLK_GNSSSDR_BUILD_COMMAND "${CMAKE_MAKE_PROGRAM}") + if(PYTHON_EXECUTABLE) + set(USE_THIS_PYTHON "-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}") + endif() + if(CMAKE_GENERATOR STREQUAL Xcode) - set(VOLK_GNSSSDR_BUILD_COMMAND "xcodebuild" "-configuration" "Debug" "-target") - endif(CMAKE_GENERATOR STREQUAL Xcode) -endif(OS_IS_MACOSX) -if(NOT VOLK_GNSSSDR_FOUND) - set(VOLK_GNSSSDR_CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module/install -DENABLE_STATIC_LIBS=ON ${STRIP_VOLK_GNSSSDR_PROFILE} ${USE_MACPORTS_PYTHON}) + set(VOLK_GNSSSDR_BUILD_COMMAND "xcodebuild" + "-configuration" $<$:None>$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:NoOptWithASM>$<$:Coverage>$<$:O2WithASM>$<$:O3WithASM>$<$:Debug>:RelWithDebInfo>$<$:Debug> + ) + endif() + if(CMAKE_TOOLCHAIN_FILE) - set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}) - endif(CMAKE_TOOLCHAIN_FILE) - ExternalProject_Add(volk_gnsssdr_module - PREFIX ${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module - SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr - BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module/build - CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} - DOWNLOAD_COMMAND "" - UPDATE_COMMAND "" - PATCH_COMMAND "" - BUILD_COMMAND ${VOLK_GNSSSDR_BUILD_COMMAND} volk_gnsssdr_profile - INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module/install - ) - find_package(ORC) - if(NOT ORC_FOUND) - set(ORC_LIBRARIES "") - set(ORC_INCLUDE_DIRS "") - endif(NOT ORC_FOUND) + set(VOLK_GNSSSDR_COMPILER "") + else() + set(VOLK_GNSSSDR_COMPILER -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}) + endif() + + if(ENABLE_ORC) + find_package(ORC) + set_package_properties(ORC PROPERTIES + PURPOSE "Used by volk_gnsssdr." + TYPE OPTIONAL + ) + if(ORC_FOUND) + set(ORC_ENABLED ON) + else() + set(ORC_ENABLED OFF) + set(ENABLE_ORC OFF) + endif() + else() + set(ORC_ENABLED OFF) + set(ENABLE_ORC OFF) + endif() + + set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_COMPILER} + -DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install + -DENABLE_STATIC_LIBS=ON + -DENABLE_PROFILING=${ENABLE_PROFILING} + -DENABLE_ORC=${ORC_ENABLED} + ${STRIP_VOLK_GNSSSDR_PROFILE} + ${USE_THIS_PYTHON} + ) + if(CMAKE_C_FLAGS) # Required by some packaging systems + set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}) + endif() + if(CMAKE_CXX_FLAGS) # Required by some packaging systems + set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}) + endif() + + if(DEFINED ENV{OECORE_TARGET_SYSROOT}) + set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} + -DCROSSCOMPILE_MULTILIB=TRUE + -DBOOST_ROOT=$ENV{OECORE_TARGET_SYSROOT}/usr + ) + if(NOT CMAKE_TOOLCHAIN_FILE) + set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} + -DCMAKE_TOOLCHAIN_FILE=${GNSSSDR_SOURCE_DIR}/cmake/Toolchains/oe-sdk_cross.cmake + ) + else() + set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + ) + endif() + else() + if(CMAKE_TOOLCHAIN_FILE) + set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} + -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} + ) + endif() + endif() + if(CMAKE_SYSTEM_PROCESSOR MATCHES "^cortex") + set(CMAKE_SYSTEM_PROCESSOR arm-${CMAKE_SYSTEM_PROCESSOR}) + endif() + include(GNUInstallDirs) + set(SUPPORTED_CPU_FEATURES_ARCH FALSE) + if(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "(^aarch64)|(^arm64)|(^ARM64)" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(x86_64)|(AMD64|amd64)|(^i.86$)" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "^(s390x)" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "^riscv" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "^loongarch") + set(SUPPORTED_CPU_FEATURES_ARCH TRUE) + endif() + if(${CMAKE_INSTALL_LIBDIR} MATCHES lib64) + set(VOLK_GNSSSDR_LIB_SUFFIX 64) + endif() + if(CMAKE_VERSION VERSION_LESS 3.2) + ExternalProject_Add(volk_gnsssdr_module + PREFIX ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module + SOURCE_DIR ${GNSSSDR_SOURCE_DIR}/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr + BINARY_DIR ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/build + CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} + -DCMAKE_BUILD_TYPE=$<$:None>$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:NoOptWithASM>$<$:Coverage>$<$:O2WithASM>$<$:O3WithASM>$<$:ASAN> + -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR} + DOWNLOAD_COMMAND "" + UPDATE_COMMAND "" + PATCH_COMMAND "" + BUILD_COMMAND ${VOLK_GNSSSDR_BUILD_COMMAND} + INSTALL_DIR ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install + ) + else() + if(SUPPORTED_CPU_FEATURES_ARCH) + set(VOLK_GNSSSDR_BUILD_BYPRODUCTS + ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/lib${VOLK_GNSSSDR_LIB_SUFFIX}/${CMAKE_FIND_LIBRARY_PREFIXES}volk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX} + ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr_profile + ) + if(ENABLE_CPUFEATURES) + find_package(CPUFEATURES) + set_package_properties(CPUFEATURES PROPERTIES + URL "https://github.com/google/cpu_features" + PURPOSE "Used by the volk_gnsssdr library." + TYPE REQUIRED + ) + endif() + if(CPUFEATURES_FOUND) + message(STATUS "Found CpuFeatures: (found version ${CPUFEATURES_VERSION})") + set_package_properties(CPUFEATURES PROPERTIES + DESCRIPTION "A cross platform C99 library to get CPU features at runtime (version: ${CPUFEATURES_VERSION})" + ) + if((CMAKE_SYSTEM_PROCESSOR MATCHES "(^s390x)|(^riscv)|(^loongarch)") AND (CPUFEATURES_VERSION VERSION_LESS "0.8.0")) # detect cpu_features without s390x / riscv support + set(ENABLE_CPUFEATURES OFF) + endif() + else() + set_package_properties(CPUFEATURES PROPERTIES + DESCRIPTION "A cross platform C99 library to get CPU features at runtime" + ) + if((DEFINED VOLK_VERSION AND VOLK_VERSION VERSION_GREATER "2.3") OR (CMAKE_VERSION VERSION_LESS "3.13")) # avoid clash with volk's cpufeatures. + set(ENABLE_CPUFEATURES OFF) + else() + set_package_properties(CPUFEATURES PROPERTIES + PURPOSE "CpuFeatures will be built when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'." + ) + set(VOLK_GNSSSDR_BUILD_BYPRODUCTS + ${VOLK_GNSSSDR_BUILD_BYPRODUCTS} + ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}cpu_features${CMAKE_STATIC_LIBRARY_SUFFIX} + ) + endif() + endif() + set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} + -DVOLK_CPU_FEATURES=${ENABLE_CPUFEATURES} + ) + ExternalProject_Add(volk_gnsssdr_module + PREFIX ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module + SOURCE_DIR ${GNSSSDR_SOURCE_DIR}/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr + BINARY_DIR ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/build + CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} + -DCMAKE_BUILD_TYPE=$<$:None>$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:NoOptWithASM>$<$:Coverage>$<$:O2WithASM>$<$:O3WithASM>$<$:ASAN> + -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR} + DOWNLOAD_COMMAND "" + UPDATE_COMMAND "" + PATCH_COMMAND "" + BUILD_COMMAND ${VOLK_GNSSSDR_BUILD_COMMAND} + BUILD_BYPRODUCTS ${VOLK_GNSSSDR_BUILD_BYPRODUCTS} + INSTALL_DIR ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install + ) + else() + set(ENABLE_CPUFEATURES OFF) + set(VOLK_GNSSSDR_CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} + -DVOLK_CPU_FEATURES=${ENABLE_CPUFEATURES} + ) + ExternalProject_Add(volk_gnsssdr_module + PREFIX ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module + SOURCE_DIR ${GNSSSDR_SOURCE_DIR}/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr + BINARY_DIR ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/build + CMAKE_ARGS ${VOLK_GNSSSDR_CMAKE_ARGS} + -DCMAKE_BUILD_TYPE=$<$:None>$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:NoOptWithASM>$<$:Coverage>$<$:O2WithASM>$<$:O3WithASM>$<$:ASAN> + -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR} + DOWNLOAD_COMMAND "" + UPDATE_COMMAND "" + PATCH_COMMAND "" + BUILD_COMMAND ${VOLK_GNSSSDR_BUILD_COMMAND} + BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/lib${VOLK_GNSSSDR_LIB_SUFFIX}/${CMAKE_FIND_LIBRARY_PREFIXES}volk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX} + ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr_profile + ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr-config-info + INSTALL_DIR ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install + ) + endif() + endif() + + if(NOT ORC_LIBRARIES_STATIC) + set(ORC_LIBRARIES_STATIC "") + set(ORC_INCLUDE_DIRS "") + endif() add_library(volk_gnsssdr UNKNOWN IMPORTED) - set_property(TARGET volk_gnsssdr PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module/install/lib/libvolk_gnsssdr.a) - set(VOLK_GNSSSDR_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module/build/include/;${CMAKE_CURRENT_SOURCE_DIR}/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include;${ORC_INCLUDE_DIRS}") - set(VOLK_GNSSSDR_LIBRARIES volk_gnsssdr) + set_property(TARGET volk_gnsssdr PROPERTY IMPORTED_LOCATION ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/lib${VOLK_GNSSSDR_LIB_SUFFIX}/libvolk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX}) + set(VOLK_GNSSSDR_INCLUDE_DIRS "${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/build/include/;${GNSSSDR_SOURCE_DIR}/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/include;${ORC_INCLUDE_DIRS}") + set(VOLK_GNSSSDR_LIBRARIES volk_gnsssdr ${ORC_LIBRARIES_STATIC}) + if(CPUFEATURES_FOUND) + set(VOLK_GNSSSDR_LIBRARIES ${VOLK_GNSSSDR_LIBRARIES} CpuFeature::cpu_features) + endif() + + if(NOT TARGET Volkgnsssdr::volkgnsssdr) + file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/build/include) + add_library(Volkgnsssdr::volkgnsssdr STATIC IMPORTED) + add_dependencies(Volkgnsssdr::volkgnsssdr volk_gnsssdr_module) + set_target_properties(Volkgnsssdr::volkgnsssdr PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/lib${VOLK_GNSSSDR_LIB_SUFFIX}/libvolk_gnsssdr${CMAKE_STATIC_LIBRARY_SUFFIX}" + INCLUDE_DIRECTORIES "${VOLK_GNSSSDR_INCLUDE_DIRS}" + INTERFACE_INCLUDE_DIRECTORIES "${VOLK_GNSSSDR_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES "${VOLK_GNSSSDR_LIBRARIES}" + ) + if(CMAKE_VERSION VERSION_GREATER 3.0 AND SUPPORTED_CPU_FEATURES_ARCH) + if(NOT CPUFEATURES_FOUND AND ENABLE_CPUFEATURES) + set_target_properties(Volkgnsssdr::volkgnsssdr PROPERTIES + INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}cpu_features${CMAKE_STATIC_LIBRARY_SUFFIX} + ) + endif() + endif() + endif() + + if(CMAKE_VERSION VERSION_LESS 3.2) + add_custom_command(TARGET volk_gnsssdr_module POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr_profile + ${LOCAL_INSTALL_BASE_DIR}/install/volk_gnsssdr_profile + ) + else() + add_custom_command(TARGET volk_gnsssdr_module POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr_profile + ${LOCAL_INSTALL_BASE_DIR}/install/volk_gnsssdr_profile + BYPRODUCTS ${LOCAL_INSTALL_BASE_DIR}/install/volk_gnsssdr_profile + ) + endif() add_custom_command(TARGET volk_gnsssdr_module POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr_profile - ${CMAKE_SOURCE_DIR}/install/volk_gnsssdr_profile) -endif(NOT VOLK_GNSSSDR_FOUND) + COMMAND ${CMAKE_COMMAND} -E copy ${GNSSSDR_BINARY_DIR}/volk_gnsssdr_module/install/bin/volk_gnsssdr-config-info + ${LOCAL_INSTALL_BASE_DIR}/install/volk_gnsssdr-config-info + ) - -################################################################################ -# gflags - https://github.com/gflags/gflags -################################################################################ -set(LOCAL_GFLAGS false) -set(gflags_RELEASE 2.1.2) -find_package(GFlags) -if (NOT GFlags_FOUND) - message (STATUS " gflags library has not been found.") - message (STATUS " gflags will be downloaded and built automatically ") - message (STATUS " when doing 'make'. ") - - ExternalProject_Add( - gflags-${gflags_RELEASE} - PREFIX ${CMAKE_CURRENT_BINARY_DIR}/gflags-${gflags_RELEASE} - GIT_REPOSITORY git://github.com/gflags/gflags.git - GIT_TAG v${gflags_RELEASE} - DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/download/gflags-${gflags_RELEASE} - SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/gflags/gflags-${gflags_RELEASE} - BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/gflags-${gflags_RELEASE} - CMAKE_ARGS -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_gflags_nothreads_LIB=OFF -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - BUILD_COMMAND make - UPDATE_COMMAND "" - PATCH_COMMAND "" - INSTALL_COMMAND "" - ) - - set(GFlags_INCLUDE_DIRS - ${CMAKE_CURRENT_BINARY_DIR}/gflags-${gflags_RELEASE}/include CACHE PATH "Local Gflags headers" - ) - - add_library(gflags UNKNOWN IMPORTED) - set_property(TARGET gflags PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/gflags-${gflags_RELEASE}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags.a) - add_dependencies(gflags gflags-${gflags_RELEASE}) - set(GFlags_LIBS gflags) - file(GLOB GFlags_SHARED_LIBS "${CMAKE_CURRENT_BINARY_DIR}/gflags-${gflags_RELEASE}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_SHARED_LIBRARY_SUFFIX}*") - set(GFlags_LIBRARY gflags-${gflags_RELEASE}) - set(GFlags_LIBRARY_PATH ${CMAKE_CURRENT_BINARY_DIR}/gflags-${gflags_RELEASE}/lib ) - link_directories(${GFlags_LIBRARY_PATH}) - set(GFlags_lib ${GFlags_LIBS} CACHE FILEPATH "Local Gflags library") - set(GFlags_LIBRARY_PATH ${GFlags_LIBS}) - set(LOCAL_GFLAGS true CACHE STRING "GFlags downloaded and built automatically" FORCE) -endif(NOT GFlags_FOUND) - - -################################################################################ -# glog - https://github.com/google/glog -################################################################################ -if(NOT ${ENABLE_OWN_GLOG}) - find_package(GLOG) - if(GLOG_INCLUDE_DIRS) - set(GLOG_FOUND ON) - endif(GLOG_INCLUDE_DIRS) -endif(NOT ${ENABLE_OWN_GLOG}) -set(glog_RELEASE 0.3.4) -if (NOT GLOG_FOUND OR ${LOCAL_GFLAGS}) - message (STATUS " glog library has not been found") - if(NOT GFlags_FOUND) - message(STATUS " or it is likely not linked to gflags.") - endif(NOT GFlags_FOUND) - message (STATUS " glog will be downloaded and built automatically ") - message (STATUS " when doing 'make'. ") - if(NOT ${LOCAL_GFLAGS}) - add_library(gflags-${gflags_RELEASE} UNKNOWN IMPORTED) - set_property(TARGET gflags-${gflags_RELEASE} PROPERTY IMPORTED_LOCATION "${GFlags_LIBS}") - endif(NOT ${LOCAL_GFLAGS}) - - if(${LOCAL_GFLAGS}) - set(TARGET_GFLAGS ${gflags}) - if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE}/tmp/configure_with_gflags -"#!/bin/sh -export CPPFLAGS=-I${GFlags_INCLUDE_DIRS} -export LDFLAGS=-L${CMAKE_CURRENT_BINARY_DIR}/gflags-${gflags_RELEASE}/lib -export LIBS=${GFlags_SHARED_LIBS} -export CXXFLAGS=\"-stdlib=libc++\" -export CC=clang -export CXX=clang++ -${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/glog/glog-${glog_RELEASE}/configure") - file(COPY ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE}/tmp/configure_with_gflags - DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE} - FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ - GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - else("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE}/tmp/configure_with_gflags -"#!/bin/sh -export CPPFLAGS=-I${GFlags_INCLUDE_DIRS} -export LDFLAGS=-L${CMAKE_CURRENT_BINARY_DIR}/gflags-${gflags_RELEASE}/lib -export LIBS=${GFlags_SHARED_LIBS} -${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/glog/glog-${glog_RELEASE}/configure") - file(COPY ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE}/tmp/configure_with_gflags - DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE} - FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ - GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - endif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - - else(${LOCAL_GFLAGS}) - set(TARGET_GFLAGS gflags-${gflags_RELEASE}) - if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE}/tmp/configure_with_gflags -"#!/bin/sh -export CPPFLAGS=-I${GFlags_INCLUDE_DIRS} -export LDFLAGS=-L${GFlags_LIBRARY_DIRS} -export LIBS=\"${GFlags_LIBS} -lc++\" -export CXXFLAGS=\"-stdlib=libc++\" -export CC=clang -export CXX=clang++ -${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/glog/glog-${glog_RELEASE}/configure") - file(COPY ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE}/tmp/configure_with_gflags - DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE} - FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ - GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - else("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE}/tmp/configure_with_gflags -"#!/bin/sh -export CPPFLAGS=-I${GFlags_INCLUDE_DIRS} -export LDFLAGS=-L${CMAKE_CURRENT_BINARY_DIR}/gflags-${gflags_RELEASE}/lib -export LIBS=${GFlags_SHARED_LIBS} -${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/glog/glog-${glog_RELEASE}/configure") - file(COPY ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE}/tmp/configure_with_gflags - DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE} - FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ - GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - endif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - endif(${LOCAL_GFLAGS}) - - set(GLOG_CONFIGURE ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE}/configure_with_gflags) - - ExternalProject_Add( - glog-${glog_RELEASE} - DEPENDS ${TARGET_GFLAGS} - PREFIX ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE} - GIT_REPOSITORY https://github.com/google/glog/ - GIT_TAG v${glog_RELEASE} - DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/download/glog-${glog_RELEASE} - SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/glog/glog-${glog_RELEASE} - BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE} - CONFIGURE_COMMAND ${GLOG_CONFIGURE} --prefix= - BUILD_COMMAND make - UPDATE_COMMAND "" - PATCH_COMMAND "" - INSTALL_COMMAND "" - ) - - # Set up variables - set(GLOG_INCLUDE_DIRS - ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/glog/glog-${glog_RELEASE}/src/ - ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE}/src - ) - set(GLOG_LIBRARIES - ${CMAKE_CURRENT_BINARY_DIR}/glog-${glog_RELEASE}/.libs/${CMAKE_FIND_LIBRARY_PREFIXES}glog.a - ) - set(LOCAL_GLOG true CACHE STRING "Glog downloaded and built automatically" FORCE) -else(NOT GLOG_FOUND OR ${LOCAL_GFLAGS}) - add_library(glog-${glog_RELEASE} UNKNOWN IMPORTED) - set_property(TARGET glog-${glog_RELEASE} PROPERTY IMPORTED_LOCATION "${GLOG_LIBRARIES}") -endif(NOT GLOG_FOUND OR ${LOCAL_GFLAGS}) - -if(NOT ENABLE_LOG) - message(STATUS "Logging is not enabled") - add_definitions(-DGOOGLE_STRIP_LOG=1) -endif(NOT ENABLE_LOG) + set_package_properties(VOLKGNSSSDR PROPERTIES + PURPOSE "volk_gnsssdr will be built when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'." + ) +else() + set(ENABLE_ORC OFF) +endif() ################################################################################ -# Armadillo - http://arma.sourceforge.net/ +# Abseil C++ - https://abseil.io/docs/cpp/ ################################################################################ -if(OS_IS_LINUX) - ############################################################################# - # Check that LAPACK is found in the system - # LAPACK is required for matrix decompositions (eg. SVD) and matrix inverse. - ############################################################################# - find_library(LAPACK lapack) - if(NOT LAPACK) - message(" The LAPACK library has not been found.") +if(NOT CMAKE_VERSION VERSION_LESS 3.24 + AND NOT CMAKE_CXX_STANDARD VERSION_LESS 17 + AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3.1) + AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0.0) + AND NOT (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12) + AND NOT ENABLE_OWN_GLOG + AND NOT ENABLE_GLOG_AND_GFLAGS) + # See https://github.com/google/oss-policies-info/blob/main/foundational-cxx-support-matrix.md + + if(ENABLE_OWN_ABSEIL) + include(FetchContent) + set(ABSEIL_BUILD_COMMAND ${CMAKE_COMMAND} + "--build" "${GNSSSDR_BINARY_DIR}/abseil-cpp" + "--config" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + "--target" "install" + ) + if(CMAKE_GENERATOR STREQUAL Xcode) + set(ABSEIL_BUILD_COMMAND "xcodebuild" "-configuration" $<$:None>$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:NoOptWithASM>$<$:Coverage>$<$:O2WithASM>$<$:O3WithASM>$<$:Debug>) + endif() + if(CMAKE_TOOLCHAIN_FILE) + set(ABSEIL_TOOLCHAIN_FILE -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}) + endif() + set(ABSL_PROPAGATE_CXX_STD ON) + FetchContent_Declare( + absl + GIT_REPOSITORY https://github.com/abseil/abseil-cpp + GIT_TAG ${GNSSSDR_ABSL_LOCAL_VERSION} + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/abseil-cpp + CMAKE_ARGS -DABSL_PROPAGATE_CXX_STD=ON -ABSL_BUILD_TESTING=OFF -DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/abseil-cpp ${ABSEIL_TOOLCHAIN_FILE} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/abseil-cpp + BUILD_COMMAND ${ABSEIL_BUILD_COMMAND} + OVERRIDE_FIND_PACKAGE # Requires CMake 3.24 + ) + FetchContent_MakeAvailable(absl) + set(absl_FOUND TRUE) + set(ENABLE_GLOG_AND_GFLAGS OFF) + else() + find_package(absl) + set_package_properties(absl PROPERTIES + URL "https://github.com/abseil/abseil-cpp" + PURPOSE "Making use of Abseil's log and flags libraries." + TYPE OPTIONAL + ) + if(absl_FOUND) + set_package_properties(absl PROPERTIES + DESCRIPTION "A collection of C++ library code designed to augment the C++ standard library (found: v${absl_VERSION})" + ) + get_target_property(ABSL_BASE_LIBRARY absl::base INTERFACE_INCLUDE_DIRECTORIES) + get_filename_component(ABSL_ROOT_PATH "${ABSL_BASE_LIBRARY}" DIRECTORY) + message(STATUS "Found Abseil C++ libraries installed at ${ABSL_ROOT_PATH} (found version: v${absl_VERSION})") + else() + set_package_properties(absl PROPERTIES + DESCRIPTION "A collection of C++ library code designed to augment the C++ standard library" + ) + endif() + if("${absl_VERSION}" VERSION_LESS ${GNSSSDR_ABSEIL_MIN_VERSION}) + unset(absl_FOUND CACHE) + set(absl_FOUND FALSE) + set(ENABLE_GLOG_AND_GFLAGS ON) + set_package_properties(absl PROPERTIES + DESCRIPTION "A collection of C++ library code designed to augment the C++ standard library (found: v${absl_VERSION}, but it is too old and it will not be used)" + ) + endif() + endif() +endif() + +# Workaround for Clang 18 +if(absl_FOUND AND absl_VERSION AND ("${absl_VERSION}" VERSION_LESS "20240722")) + if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "17.99")) + add_compile_options(-fclang-abi-compat=17) + endif() +endif() + +if(NOT absl_FOUND) + set(ENABLE_GLOG_AND_GFLAGS ON) + ################################################################################ + # gflags - https://github.com/gflags/gflags + ################################################################################ + set(LOCAL_GFLAGS FALSE) + if(ENABLE_OWN_GLOG) + unset(Glog::glog CACHE) + unset(GLOG_FOUND CACHE) + unset(Gflags::gflags CACHE) + unset(GLAGS_FOUND CACHE) + set(GFLAGS_GREATER_20 TRUE) + else() + unset(Glog::glog CACHE) + unset(GLOG_FOUND CACHE) + find_package(GLOG) + if(GLOG_FOUND) + unset(GFLAGS_GREATER_20 CACHE) + find_package(GFLAGS) + endif() + endif() + set_package_properties(GFLAGS PROPERTIES + PURPOSE "Used for commandline flags management." + TYPE REQUIRED + ) + if(NOT GFLAGS_FOUND) + set(ENABLE_OWN_GLOG ON) + if(GFLAGS_VERSION) + message(STATUS " A version of the gflags library equal or higher than v${GNSSSDR_GFLAGS_MIN_VERSION} has not been found.") + else() + message(STATUS " The gflags library has not been found.") + endif() + message(STATUS " gflags v${GNSSSDR_GFLAGS_LOCAL_VERSION} will be downloaded, built, and statically linked automatically") + message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.") + set(GFLAGS_BUILD_COMMAND ${CMAKE_COMMAND} + "--build" "${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}" + "--config" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + ) + if(CMAKE_GENERATOR STREQUAL Xcode) + set(GFLAGS_BUILD_COMMAND "xcodebuild" "-configuration" $<$:None>$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:NoOptWithASM>$<$:Coverage>$<$:O2WithASM>$<$:O3WithASM>$<$:Debug>) + endif() + if(CMAKE_TOOLCHAIN_FILE) + set(GFLAGS_TOOLCHAIN_FILE -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}) + endif() + + if(CMAKE_VERSION VERSION_LESS 3.2) + ExternalProject_Add(gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} + PREFIX ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} + GIT_REPOSITORY https://github.com/gflags/gflags.git + GIT_TAG v${GNSSSDR_GFLAGS_LOCAL_VERSION} + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/gflags/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} + CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF + -DBUILD_STATIC_LIBS=ON + -DBUILD_gflags_LIB=ON + -DBUILD_gflags_nothreads_LIB=ON + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + ${GFLAGS_TOOLCHAIN_FILE} + -DGFLAGS_NAMESPACE=google + -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + BUILD_COMMAND ${GFLAGS_BUILD_COMMAND} + UPDATE_COMMAND "" + PATCH_COMMAND "" + INSTALL_COMMAND "" + ) + else() + set(GFLAGS_BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX}) + if((CMAKE_BUILD_TYPE STREQUAL Debug) OR (CMAKE_BUILD_TYPE STREQUAL NoOptWithASM) OR + (CMAKE_BUILD_TYPE STREQUAL Coverage) OR (CMAKE_BUILD_TYPE STREQUAL ASAN)) # Workaround for Ninja generator + set(GFLAGS_BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags_debug${CMAKE_STATIC_LIBRARY_SUFFIX}) + endif() + if((CMAKE_VERSION VERSION_GREATER 3.12.0) AND NOT (CMAKE_GENERATOR STREQUAL Xcode)) + set(PARALLEL_BUILD "--parallel 2") + endif() + ExternalProject_Add(gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} + PREFIX ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} + GIT_REPOSITORY https://github.com/gflags/gflags.git + GIT_TAG v${GNSSSDR_GFLAGS_LOCAL_VERSION} + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/gflags/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} + CMAKE_ARGS -DBUILD_SHARED_LIBS=OFF + -DBUILD_STATIC_LIBS=ON + -DBUILD_gflags_LIB=ON + -DBUILD_gflags_nothreads_LIB=ON + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + ${GFLAGS_TOOLCHAIN_FILE} + -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + BUILD_COMMAND "${GFLAGS_BUILD_COMMAND} ${PARALLEL_BUILD}" + BUILD_BYPRODUCTS ${GFLAGS_BUILD_BYPRODUCTS} + UPDATE_COMMAND "" + PATCH_COMMAND "" + INSTALL_COMMAND "" + ) + endif() + # Note: -DBUILD_gflags_nothreads_LIB=ON is required as a workaround to a bug in gflags 2.2.2. This is fixed in gflags master branch + + set(GFlags_INCLUDE_DIRS + ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/include CACHE PATH "Local Gflags headers" + ) + + if(CMAKE_VERSION VERSION_LESS "3.0.2") + set(GFlags_LIBS + ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX} + ) + endif() + + if(NOT TARGET Gflags::gflags) + file(MAKE_DIRECTORY ${GFlags_INCLUDE_DIRS}) + add_library(Gflags::gflags STATIC IMPORTED) + add_dependencies(Gflags::gflags gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}) + set_target_properties(Gflags::gflags PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_CONFIGURATIONS "None;Debug;Release;RelWithDebInfo;MinSizeRel" + MAP_IMPORTED_CONFIG_NOOPTWITHASM Debug + MAP_IMPORTED_CONFIG_COVERAGE Debug + MAP_IMPORTED_CONFIG_O2WITHASM RelWithDebInfo + MAP_IMPORTED_CONFIG_O3WITHASM RelWithDebInfo + MAP_IMPORTED_CONFIG_ASAN Debug + IMPORTED_LOCATION_NONE ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags_debug${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${CMAKE_STATIC_LIBRARY_SUFFIX} + INTERFACE_INCLUDE_DIRECTORIES ${GFlags_INCLUDE_DIRS} + INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}gflags$<$:_debug>${CMAKE_STATIC_LIBRARY_SUFFIX} + ) + if((CMAKE_GENERATOR STREQUAL Xcode) OR MSVC) + if(MSVC) + set(MSVC_POSTFIX _static) + endif() + set_target_properties(Gflags::gflags PROPERTIES + IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}_debug${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/Release/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX} + INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib/$<$:Debug/>$<$:Release/>$<$:RelWithDebInfo/>$<$:MinSizeRel/>${CMAKE_FIND_LIBRARY_PREFIXES}gflags${MSVC_POSTFIX}$<$:_debug>${CMAKE_STATIC_LIBRARY_SUFFIX} + ) + endif() + endif() + + if(MSVC) + target_link_libraries(Gflags::gflags INTERFACE shlwapi.lib) + endif() + + set(LOCAL_GFLAGS TRUE CACHE STRING "GFlags downloaded, built, and statically linked automatically" FORCE) + set_package_properties(GFLAGS PROPERTIES + PURPOSE "Gflags v${GNSSSDR_GFLAGS_LOCAL_VERSION} and Glog v${GNSSSDR_GLOG_LOCAL_VERSION} will be downloaded, built, and statically linked when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'." + ) + if(CMAKE_VERSION VERSION_LESS 3.2) + set_property(TARGET Gflags::gflags APPEND PROPERTY + INTERFACE_COMPILE_DEFINITIONS GFLAGS_OLD_NAMESPACE=1 + ) + endif() + endif() + + + + ################################################################################ + # glog - https://github.com/google/glog + ################################################################################ + set_package_properties(GLOG PROPERTIES + PURPOSE "Used for runtime internal logging." + TYPE REQUIRED + ) + if(NOT GLOG_FOUND OR ${LOCAL_GFLAGS}) + message(STATUS " glog library has not been found") + if(NOT GFLAGS_FOUND) + message(STATUS " or it is likely not linked to gflags.") + endif() + message(STATUS " glog v${GNSSSDR_GLOG_LOCAL_VERSION} will be downloaded, built, and statically linked automatically") + message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.") + find_package(LIBUNWIND) + set_package_properties(LIBUNWIND PROPERTIES + PURPOSE "Needed by glog." + TYPE OPTIONAL + ) + if(NOT ${LOCAL_GFLAGS}) + if(NOT TARGET gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}) + add_library(gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} UNKNOWN IMPORTED) + endif() + set_property(TARGET gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION} PROPERTY IMPORTED_LOCATION "${GFlags_LIBS}") + string(REPLACE /include "" GFLAGS_PREFIX_PATH ${GFlags_INCLUDE_DIRS}) + else() + set(GFLAGS_PREFIX_PATH ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}) + endif() + set(TARGET_GFLAGS gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}) + set(GLOG_MAKE_PROGRAM ${CMAKE_COMMAND} + "--build" "${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}" + "--config" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + ) + if(CMAKE_GENERATOR STREQUAL Xcode) + set(GLOG_MAKE_PROGRAM "xcodebuild" "-configuration" + $<$:None>$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:NoOptWithASM>$<$:Coverage>$<$:O2WithASM>$<$:O3WithASM>$<$:Debug> + ) + endif() + if(CMAKE_TOOLCHAIN_FILE) + set(GLOG_TOOLCHAIN_FILE -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}) + endif() + + if(CMAKE_VERSION VERSION_LESS 3.3) + if(CMAKE_VERSION VERSION_LESS 3.0) + set(GLOG_MAKE_PROGRAM ${CMAKE_MAKE_PROGRAM}) + set(GFLAGS_LIBRARIES_TO_LINK ${GFlags_LIBS}) + if(${LOCAL_GFLAGS}) + set(GFLAGS_LIBRARY_DIR_TO_LINK ${GNSSSDR_BINARY_DIR}/gflags-${GNSSSDR_GFLAGS_LOCAL_VERSION}/lib) + else() + set(GFLAGS_LIBRARY_DIR_TO_LINK ${GFlags_LIBRARY_DIRS}) + endif() + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(GFLAGS_LIBRARIES_TO_LINK "${GFLAGS_LIBRARIES_TO_LINK} -lc++") + set(GLOG_EXPORT_CXX_LIBRARIES "export CXXFLAGS=\"-stdlib=libc++\"") + endif() + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(GLOG_EXPORT_C_COMPILER "export CC=clang") + set(GLOG_EXPORT_CXX_COMPILER "export CXX=clang++") + endif() + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + set(GLOG_EXPORT_C_COMPILER "export CC=gcc") + set(GLOG_EXPORT_CXX_COMPILER "export CXX=g++") + endif() + file(WRITE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/tmp/configure_with_gflags + "#!/bin/sh + export CPPFLAGS=-I${GFlags_INCLUDE_DIRS} + export LDFLAGS=-L${GFLAGS_LIBRARY_DIR_TO_LINK} + export LIBS=\"${GFLAGS_LIBRARIES_TO_LINK}\" + ${GLOG_EXPORT_CXX_LIBRARIES} + ${GLOG_EXPORT_C_COMPILER} + ${GLOG_EXPORT_CXX_COMPILER} + cd ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/ + aclocal + automake --add-missing + autoreconf -vfi + cd ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION} + ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/configure --enable-shared=no" + ) + + file(COPY ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/tmp/configure_with_gflags + DESTINATION ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION} + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ + GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + ) + + set(GLOG_CONFIGURE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/configure_with_gflags) + + # Ensure that aclocal and libtool are present + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + if(EXISTS "/usr/bin/libtoolize") + if(EXISTS "/usr/bin/aclocal" OR + EXISTS "/usr/bin/aclocal-1.16" OR + EXISTS "/usr/bin/aclocal-1.15" OR + EXISTS "/usr/bin/aclocal-1.14" OR + EXISTS "/usr/bin/aclocal-1.13" OR + EXISTS "/usr/bin/aclocal-1.11" OR + EXISTS "/usr/bin/aclocal-1.10") + # Everything ok, we can move on + else() + message(" aclocal has not been found.") + message(" You can try to install it by typing:") + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(" sudo yum groupinstall 'Development Tools'") + elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE") + message(" sudo zypper install automake") + else() + message(" sudo apt-get install automake") + endif() + message(FATAL_ERROR "aclocal is required to build glog from source") + endif() + else() + message(" libtool has not been found.") + message(" You can try to install it by typing:") + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(" sudo yum groupinstall 'Development Tools'") + elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE") + message(" sudo zypper install libtoool") + else() + message(" sudo apt-get install libtool") + endif() + message(FATAL_ERROR "libtool is required to build glog from source") + endif() + endif() + + if(GLOG_MAKE_PROGRAM MATCHES "ninja") + find_program(GLOG_MAKE_EXECUTABLE make + PATHS + /usr/bin + /usr/local/bin + ) + if(NOT GLOG_MAKE_EXECUTABLE) + message(FATAL_ERROR "make is required to build Glog from source.") + endif() + set(GLOG_MAKE_PROGRAM ${GLOG_MAKE_EXECUTABLE}) + endif() + ExternalProject_Add(glog-${GNSSSDR_GLOG_LOCAL_VERSION} + DEPENDS ${TARGET_GFLAGS} + PREFIX ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION} + GIT_REPOSITORY https://github.com/google/glog/ + GIT_TAG v${GNSSSDR_GLOG_LOCAL_VERSION} + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION} + CONFIGURE_COMMAND ${GLOG_CONFIGURE} --prefix= + BUILD_COMMAND "${GLOG_MAKE_PROGRAM}" + UPDATE_COMMAND "" + PATCH_COMMAND "" + INSTALL_COMMAND "" + ) + set(GLOG_LIBRARIES + ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/.libs/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX} + ) + set(GLOG_INCLUDE_DIRS + ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/src + ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/src + ) + else() # CMake > 3.0 but < 3.3 + ExternalProject_Add(glog-${GNSSSDR_GLOG_LOCAL_VERSION} + DEPENDS ${TARGET_GFLAGS} + PREFIX ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION} + GIT_REPOSITORY https://github.com/google/glog/ + GIT_TAG v${GNSSSDR_GLOG_LOCAL_VERSION} + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION} + CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_PREFIX_PATH=${GFLAGS_PREFIX_PATH} + ${GLOG_TOOLCHAIN_FILE} + -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + BUILD_COMMAND ${GLOG_MAKE_PROGRAM} + UPDATE_COMMAND "" + PATCH_COMMAND "" + INSTALL_COMMAND "" + ) + set(GLOG_INCLUDE_DIRS + ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/src + ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION} + ${GFlags_INCLUDE_DIRS} + ) + endif() + else() # CMake > 3.3 + set(GLOG_BUILD_BYPRODUCTS + ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX} + ) + if((CMAKE_BUILD_TYPE STREQUAL Debug) OR (CMAKE_BUILD_TYPE STREQUAL NoOptWithASM) OR + (CMAKE_BUILD_TYPE STREQUAL Coverage) OR (CMAKE_BUILD_TYPE STREQUAL ASAN)) # Workaround for Ninja generator + set(GLOG_BUILD_BYPRODUCTS + ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glogd${CMAKE_STATIC_LIBRARY_SUFFIX} + ) + endif() + if((CMAKE_VERSION VERSION_GREATER 3.12.0) AND NOT (CMAKE_GENERATOR STREQUAL Xcode) AND NOT CMAKE_CROSSCOMPILING) + set(PARALLEL_BUILD "--parallel 2") + endif() + if(GNSSSDR_GLOG_LOCAL_VERSION VERSION_GREATER 0.5.0) + set(GLOG_GTEST -DWITH_GTEST=FALSE) + endif() + if(NOT (CMAKE_VERSION VERSION_LESS "3.22")) + set(GNSSSDR_GLOG_LOCAL_GFLAGS -DCMAKE_REQUIRED_INCLUDES=${GFlags_INCLUDE_DIRS}) + endif() + ExternalProject_Add(glog-${GNSSSDR_GLOG_LOCAL_VERSION} + DEPENDS ${TARGET_GFLAGS} + PREFIX ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION} + GIT_REPOSITORY https://github.com/google/glog/ + GIT_TAG v${GNSSSDR_GLOG_LOCAL_VERSION} + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION} + CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_PREFIX_PATH=${GFLAGS_PREFIX_PATH} + ${GLOG_TOOLCHAIN_FILE} + -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + -DBUILD_SHARED_LIBS=OFF + ${GLOG_GTEST} + -DBUILD_TESTING=OFF + "${GNSSSDR_GLOG_LOCAL_GFLAGS}" + BUILD_COMMAND "${GLOG_MAKE_PROGRAM} ${PARALLEL_BUILD}" + BUILD_BYPRODUCTS ${GLOG_BUILD_BYPRODUCTS} + UPDATE_COMMAND "" + PATCH_COMMAND "" + INSTALL_COMMAND "" + ) + set(GLOG_INCLUDE_DIRS + ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/src + ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION} + ${GFlags_INCLUDE_DIRS} + ) + endif() + + add_dependencies(glog-${GNSSSDR_GLOG_LOCAL_VERSION} Gflags::gflags) + + # Create Glog::glog target + if(NOT TARGET Glog::glog) + file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/thirdparty/glog/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/src) + file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}) + add_library(Glog::glog STATIC IMPORTED) + add_dependencies(Glog::glog glog-${GNSSSDR_GLOG_LOCAL_VERSION}) + if(CMAKE_VERSION VERSION_LESS 3.0) + set_target_properties(Glog::glog PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${GLOG_LIBRARIES}" + INCLUDE_DIRECTORIES "${GLOG_INCLUDE_DIRS}" + INTERFACE_INCLUDE_DIRECTORIES "${GLOG_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES "${GLOG_LIBRARIES}" + ) + else() + set_target_properties(Glog::glog PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_CONFIGURATIONS "None;Debug;Release;RelWithDebInfo;MinSizeRel" + MAP_IMPORTED_CONFIG_NOOPTWITHASM Debug + MAP_IMPORTED_CONFIG_COVERAGE Debug + MAP_IMPORTED_CONFIG_O2WITHASM RelWithDebInfo + MAP_IMPORTED_CONFIG_O3WITHASM RelWithDebInfo + MAP_IMPORTED_CONFIG_ASAN Debug + IMPORTED_LOCATION_NONE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glogd${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX} + INTERFACE_INCLUDE_DIRECTORIES "${GLOG_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}glog$<$:d>${CMAKE_STATIC_LIBRARY_SUFFIX} + ) + if((CMAKE_GENERATOR STREQUAL Xcode) OR MSVC) + set_target_properties(Glog::glog PROPERTIES + IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}glogd${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/Release/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}glog${CMAKE_STATIC_LIBRARY_SUFFIX} + INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/glog-${GNSSSDR_GLOG_LOCAL_VERSION}/$<$:Debug/>$<$:Release/>$<$:RelWithDebInfo/>$<$:MinSizeRel/>${CMAKE_FIND_LIBRARY_PREFIXES}glog$<$:d>${CMAKE_STATIC_LIBRARY_SUFFIX} + ) + endif() + endif() + endif() + if(NOT (CMAKE_VERSION VERSION_LESS "3.22")) + set_target_properties(Glog::glog PROPERTIES + INTERFACE_COMPILE_DEFINITIONS "GLOG_USE_GLOG_EXPORT;GLOG_USE_GFLAGS" + INTERFACE_COMPILE_FEATURES "cxx_std_14") + endif() + + if(LIBUNWIND_FOUND) + target_link_libraries(Glog::glog INTERFACE Libunwind::libunwind) + endif() + set(LOCAL_GLOG TRUE CACHE STRING "Glog downloaded, built, and statically linked automatically" FORCE) + + set_package_properties(GLOG PROPERTIES + PURPOSE "Glog v${GNSSSDR_GLOG_LOCAL_VERSION} will be downloaded, built, and statically linked when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'." + ) + endif() +endif() + + + +################################################################################ +# Check that BLAS (Basic Linear Algebra Subprograms) is found in the system +# See https://www.netlib.org/blas/ +################################################################################ +if((${CMAKE_SYSTEM_NAME} MATCHES "Darwin") AND ("${DARWIN_VERSION}" VERSION_LESS "23")) + # Avoid using the implementation that comes with the Accelerate framework + include(AvoidAccelerate) +else() + if(NOT BLA_VENDOR) + set(BLA_VENDOR "Generic") + endif() + if(NOT CMAKE_CROSSCOMPILING AND NOT DEFINED BLA_PREFER_PKGCONFIG) + set(BLA_PREFER_PKGCONFIG ON) # Required by riscv64 arch + endif() + find_package(BLAS) + set_package_properties(BLAS PROPERTIES + URL "https://www.netlib.org/blas/" + DESCRIPTION "Basic Linear Algebra Subprograms" + PURPOSE "Used for matrix algebra computations." + TYPE REQUIRED + ) +endif() +if(NOT BLAS_FOUND) + message(" The BLAS library has not been found.") + message(" You can try to install it by typing:") + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + message(" 'sudo port install lapack' if you are using Macports, or") + message(" 'brew install lapack' if you are using Homebrew.") + else() + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(" sudo yum install blas-devel") + else() + message(" sudo apt-get install libblas-dev") + endif() + endif() + message(FATAL_ERROR "BLAS is required to build gnss-sdr") +endif() +if(NOT TARGET BLAS::BLAS) + add_library(BLAS::BLAS SHARED IMPORTED) + set_target_properties(BLAS::BLAS PROPERTIES + IMPORTED_LOCATION ${BLAS_LIBRARIES} + INTERFACE_LINK_LIBRARIES ${BLAS_LIBRARIES} + ) +endif() + + + +################################################################################ +# Check that LAPACK (Linear Algebra PACKage) is found in the system +# See https://www.netlib.org/lapack/ +################################################################################ +if(NOT((${CMAKE_SYSTEM_NAME} MATCHES "Darwin") AND ("${DARWIN_VERSION}" VERSION_LESS "23"))) + find_package(LAPACK) + set_package_properties(LAPACK PROPERTIES + URL "https://www.netlib.org/lapack/" + DESCRIPTION "Linear Algebra PACKage" + PURPOSE "Used for matrix algebra computations." + TYPE REQUIRED + ) +endif() +if(NOT LAPACK_FOUND) + message(" The LAPACK library has not been found.") + if(LINUX_DISTRIBUTION) message(" You can try to install it by typing:") if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") message(" sudo yum install lapack-devel") elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE") message(" sudo zypper install lapack-devel") - else(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + else() message(" sudo apt-get install liblapack-dev") - endif(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - message(FATAL_ERROR "LAPACK is required to build gnss-sdr") - endif(NOT LAPACK) - ############################################################################# - # Check that BLAS is found in the system - # BLAS is used for matrix multiplication. - # Without BLAS, matrix multiplication will still work, but might be slower. - ############################################################################# - find_library(BLAS blas) - if(NOT BLAS) - message(" The BLAS library has not been found.") - message(" You can try to install it by typing:") - if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - message(" sudo yum install blas-devel") - else(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - message(" sudo apt-get install libopenblas-dev") - endif(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - message(FATAL_ERROR "BLAS is required to build gnss-sdr") - endif(NOT BLAS) + endif() + endif() + message(FATAL_ERROR "LAPACK is required to build gnss-sdr") +endif() +if(NOT TARGET LAPACK::LAPACK) + add_library(LAPACK::LAPACK SHARED IMPORTED) + set_target_properties(LAPACK::LAPACK PROPERTIES + IMPORTED_LOCATION ${LAPACK_LIBRARIES} + INTERFACE_LINK_LIBRARIES ${LAPACK_LIBRARIES} + ) +endif() + + + +################################################################################ +# Armadillo - https://arma.sourceforge.net/ +################################################################################ +if(ENABLE_OWN_ARMADILLO) + unset(Armadillo::armadillo CACHE) + unset(ARMADILLO_FOUND CACHE) +else() + unset(Armadillo::armadillo CACHE) + unset(ARMADILLO_FOUND CACHE) + find_package(Armadillo) +endif() + +set_package_properties(Armadillo PROPERTIES + URL "https://arma.sourceforge.net/" + PURPOSE "Used for matrix computations." + TYPE REQUIRED +) +if(ARMADILLO_FOUND) + set_package_properties(Armadillo PROPERTIES + DESCRIPTION "C++ library for linear algebra and scientific computing (found: v${ARMADILLO_VERSION_STRING})" + ) + if(${ARMADILLO_VERSION_STRING} VERSION_LESS ${GNSSSDR_ARMADILLO_MIN_VERSION}) + unset(Armadillo::armadillo CACHE) + unset(ARMADILLO_FOUND CACHE) + set(ENABLE_OWN_ARMADILLO ON) + message(STATUS " Armadillo >= v${GNSSSDR_ARMADILLO_MIN_VERSION} has not been found.") + else() + if(NOT ENABLE_OWN_ARMADILLO) + add_library(Armadillo::armadillo SHARED IMPORTED) + set_target_properties(Armadillo::armadillo PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${ARMADILLO_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${ARMADILLO_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES "${ARMADILLO_LIBRARIES}" + ) + endif() + endif() +else() + message(STATUS " Armadillo has not been found.") +endif() + +if(NOT ARMADILLO_FOUND OR ENABLE_OWN_ARMADILLO) + message(STATUS " Armadillo ${GNSSSDR_ARMADILLO_LOCAL_VERSION} will be downloaded, built, and statically linked automatically") + message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.") + set(armadillo_BRANCH ${GNSSSDR_ARMADILLO_LOCAL_VERSION}) + set(armadillo_RELEASE ${armadillo_BRANCH}) + ############################################# # Check if GFORTRAN is found in the system ############################################# - find_library(GFORTRAN NAMES gfortran - PATHS /usr/lib - /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/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 - ) + if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") AND NOT MSVC) + find_package(GFORTRAN) + set_package_properties(GFORTRAN PROPERTIES + PURPOSE "Required by Armadillo." + TYPE REQUIRED + ) + if(NOT GFORTRAN) + message(STATUS "The gfortran library has not been found.") + message(STATUS " You can try to install it by typing:") + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(STATUS " sudo yum install gcc-fortran") + elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE") + message(STATUS " sudo zypper install gcc-fortran") + else() + message(STATUS " sudo apt-get install gfortran") + endif() + message(FATAL_ERROR "gfortran is required to build gnss-sdr") + endif() + endif() + + ############################################# + # Download and build Armadillo + ############################################# + set(ARMADILLO_BUILD_COMMAND ${CMAKE_COMMAND} + "--build" "${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE}" + "--config" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + "--target" install + ) + if(CMAKE_TOOLCHAIN_FILE) + set(ARMADILLO_TOOLCHAIN_FILE -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}) + else() + set(ARMADILLO_TOOLCHAIN_FILE "") + endif() + set(ARMADILLO_CXX_VERSION "") + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 4.8.3) + set(ARMADILLO_CXX_VERSION -DCMAKE_CXX_FLAGS=-std=c++11) + endif() + if(CMAKE_VERSION VERSION_LESS 3.2) + ExternalProject_Add(armadillo-${armadillo_RELEASE} + PREFIX ${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE} + GIT_REPOSITORY https://gitlab.com/conradsnicta/armadillo-code.git + GIT_TAG ${armadillo_BRANCH} + UPDATE_COMMAND "" + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/armadillo/armadillo-${armadillo_RELEASE} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE} + CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + -DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE} + -DBUILD_SHARED_LIBS=OFF + -DBUILD_SMOKE_TEST=OFF + -DALLOW_BLAS_LAPACK_MACOS=ON + ${ARMADILLO_CXX_VERSION} + ${ARMADILLO_TOOLCHAIN_FILE} + BUILD_COMMAND ${ARMADILLO_BUILD_COMMAND} + INSTALL_COMMAND "" + ) + else() + ExternalProject_Add(armadillo-${armadillo_RELEASE} + PREFIX ${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE} + GIT_REPOSITORY https://gitlab.com/conradsnicta/armadillo-code.git + GIT_TAG ${armadillo_BRANCH} + UPDATE_COMMAND "" + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/armadillo/armadillo-${armadillo_RELEASE} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE} + CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + -DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE} + -DSTATIC_LIB=ON + -DBUILD_SMOKE_TEST=OFF + -DALLOW_BLAS_LAPACK_MACOS=ON + ${ARMADILLO_CXX_VERSION} + ${ARMADILLO_TOOLCHAIN_FILE} + BUILD_COMMAND ${ARMADILLO_BUILD_COMMAND} + BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/armadillo-${armadillo_RELEASE}/${CMAKE_FIND_LIBRARY_PREFIXES}armadillo${CMAKE_STATIC_LIBRARY_SUFFIX} + INSTALL_COMMAND "" + ) + endif() + + # Create imported target + ExternalProject_Get_Property(armadillo-${armadillo_RELEASE} binary_dir) if(NOT GFORTRAN) - message(STATUS "The gfortran library has not been found.") - message(STATUS " You can try to install it by typing:") - if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - message(STATUS " sudo yum install gcc-fortran") - elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE") - message(STATUS " sudo zypper install gcc-fortran") - else(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - message(STATUS " sudo apt-get install gfortran") - endif(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - endif(NOT GFORTRAN) -endif(OS_IS_LINUX) - -find_package(Armadillo) -if(NOT ARMADILLO_FOUND) - message(STATUS " Armadillo has not been found.") - message(STATUS " Armadillo will be downloaded and built automatically ") - message(STATUS " when doing 'make'. ") - - set(armadillo_RELEASE 5.200.2) - set(armadillo_MD5 "ef57ba4c473a3b67c672441a7face09e") - - ExternalProject_Add( - armadillo-${armadillo_RELEASE} - PREFIX ${CMAKE_CURRENT_BINARY_DIR}/armadillo-${armadillo_RELEASE} - URL http://sourceforge.net/projects/arma/files/armadillo-${armadillo_RELEASE}.tar.gz - DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/download/armadillo-${armadillo_RELEASE} - URL_MD5 ${armadillo_MD5} - CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DBUILD_SHARED_LIBS=OFF - BUILD_IN_SOURCE 1 - BUILD_COMMAND make - UPDATE_COMMAND "" - INSTALL_COMMAND "" - ) - - # Set up variables - ExternalProject_Get_Property(armadillo-${armadillo_RELEASE} binary_dir) - set(ARMADILLO_INCLUDE_DIRS ${binary_dir}/include ) - find_library(LAPACK NAMES lapack HINTS /usr/lib /usr/local/lib /usr/lib64) - if(OS_IS_MACOSX) - find_library(BLAS blas) - endif(OS_IS_MACOSX) - find_package(OpenBLAS) - if(OPENBLAS_FOUND) - set(BLAS ${OPENBLAS}) - endif(OPENBLAS_FOUND) - if(NOT GFORTRAN) - set(GFORTRAN "") - endif(NOT GFORTRAN) - set(ARMADILLO_LIBRARIES ${BLAS} ${LAPACK} ${GFORTRAN} ${binary_dir}/${CMAKE_FIND_LIBRARY_PREFIXES}armadillo.a) - set(LOCAL_ARMADILLO true CACHE STRING "Armadillo downloaded and built automatically" FORCE) - # Save a copy at the thirdparty folder - file(COPY ${CMAKE_CURRENT_BINARY_DIR}/armadillo-${armadillo_RELEASE} - DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/armadillo - ) -else(NOT ARMADILLO_FOUND) - set(armadillo_RELEASE ${ARMADILLO_VERSION_STRING}) - add_library(armadillo-${armadillo_RELEASE} UNKNOWN IMPORTED) - set_property(TARGET armadillo-${armadillo_RELEASE} PROPERTY IMPORTED_LOCATION "${ARMADILLO_LIBRARIES}") -endif(NOT ARMADILLO_FOUND) + set(GFORTRAN "") + endif() + set(ARMADILLO_STATIC_LIBRARY ${binary_dir}/${CMAKE_FIND_LIBRARY_PREFIXES}armadillo${CMAKE_STATIC_LIBRARY_SUFFIX}) + set(LOCAL_ARMADILLO TRUE CACHE STRING "Armadillo downloaded, built, and statically linked automatically" FORCE) + set(ARMADILLO_VERSION_STRING ${armadillo_RELEASE}) + file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/thirdparty/armadillo/armadillo-${armadillo_RELEASE}/include) + add_library(Armadillo::armadillo STATIC IMPORTED) + add_dependencies(Armadillo::armadillo armadillo-${armadillo_RELEASE}) + set_target_properties(Armadillo::armadillo PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_CONFIGURATIONS "None;Debug;Release;RelWithDebInfo;MinSizeRel" + MAP_IMPORTED_CONFIG_NOOPTWITHASM Debug + MAP_IMPORTED_CONFIG_COVERAGE Debug + MAP_IMPORTED_CONFIG_O2WITHASM RelWithDebInfo + MAP_IMPORTED_CONFIG_O3WITHASM RelWithDebInfo + MAP_IMPORTED_CONFIG_ASAN Debug + IMPORTED_LOCATION_NONE ${ARMADILLO_STATIC_LIBRARY} + IMPORTED_LOCATION_DEBUG ${ARMADILLO_STATIC_LIBRARY} + IMPORTED_LOCATION_RELEASE ${ARMADILLO_STATIC_LIBRARY} + IMPORTED_LOCATION_RELWITHDEBINFO ${ARMADILLO_STATIC_LIBRARY} + IMPORTED_LOCATION_MINSIZEREL ${ARMADILLO_STATIC_LIBRARY} + INTERFACE_INCLUDE_DIRECTORIES ${GNSSSDR_BINARY_DIR}/thirdparty/armadillo/armadillo-${armadillo_RELEASE}/include + INTERFACE_LINK_LIBRARIES "${BLAS_LIBRARIES};${LAPACK_LIBRARIES};${GFORTRAN};${ARMADILLO_STATIC_LIBRARY}" + ) + if((CMAKE_GENERATOR STREQUAL Xcode) OR MSVC) + set_target_properties(Armadillo::armadillo PROPERTIES + IMPORTED_LOCATION_DEBUG ${binary_dir}/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}armadillo${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELEASE ${binary_dir}/Release/${CMAKE_FIND_LIBRARY_PREFIXES}armadillo${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELWITHDEBINFO ${binary_dir}/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}armadillo${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_MINSIZEREL ${binary_dir}/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}armadillo${CMAKE_STATIC_LIBRARY_SUFFIX} + INTERFACE_LINK_LIBRARIES "${BLAS_LIBRARIES};${LAPACK_LIBRARIES};${GFORTRAN};${binary_dir}/$<$:Debug/>$<$:Release/>$<$:RelWithDebInfo/>$<$:MinSizeRel/>${CMAKE_FIND_LIBRARY_PREFIXES}armadillo${CMAKE_STATIC_LIBRARY_SUFFIX}" + ) + endif() + set_package_properties(Armadillo PROPERTIES + DESCRIPTION "C++ library for linear algebra and scientific computing" + PURPOSE "Armadillo ${GNSSSDR_ARMADILLO_LOCAL_VERSION} will be downloaded, built, and statically linked when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'." + ) + # Fix for macOS + find_library(ARPACK_LIBRARY + NAMES arpack + PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} /opt/local/lib /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /opt/local/lib64 + ) + if(ARPACK_LIBRARY) + target_link_libraries(Armadillo::armadillo INTERFACE ${ARPACK_LIBRARY}) + endif() + find_library(FLEXIBLAS_LIBRARY + NAMES flexiblas + PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} /opt/local/lib /lib64 /lib /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /opt/local/lib64 + ) + if(FLEXIBLAS_LIBRARY) + target_link_libraries(Armadillo::armadillo INTERFACE ${FLEXIBLAS_LIBRARY}) + endif() + find_library(SUPERLU_LIBRARY + NAMES superlu + PATHS ${CMAKE_SYSTEM_LIBRARY_PATH} /opt/local/lib /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /opt/local/lib64 + ) + if(SUPERLU_LIBRARY) + target_link_libraries(Armadillo::armadillo INTERFACE ${SUPERLU_LIBRARY}) + endif() +endif() ################################################################################ -# OpenSSL - http://www.openssl.org +# OpenSSL https://www.openssl.org/ or GnuTLS - https://www.gnutls.org/ ################################################################################ -find_package(OpenSSL) -if(NOT OPENSSL_FOUND) - message(" The OpenSSL library has not been found.") - message(" You can try to install it by typing:") - if(OS_IS_LINUX) - if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - message(" sudo yum install openssl-devel") - else(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - message(" sudo apt-get install libssl-dev") - endif(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - endif(OS_IS_LINUX) - if(OS_IS_MACOSX) - message(" sudo port install openssl") - endif(OS_IS_MACOSX) - message(FATAL_ERROR "OpenSSL libraries are required to build gnss-sdr") -endif(NOT OPENSSL_FOUND) +include(GnsssdrCrypto) + ################################################################################ -# Universal Hardware Driver (UHD) (OPTIONAL, used if found) +# Matio - https://github.com/tbeu/matio ################################################################################ -find_package(UHD) -if(NOT UHD_FOUND) - set(ENABLE_UHD OFF) - message(STATUS "The Universal Hardware Driver (UHD) based signal source will not be built,") - message(STATUS "so all USRP-based front-ends will not be usable.") - message(STATUS "Please check http://code.ettus.com/redmine/ettus/projects/uhd/wiki") -else(NOT UHD_FOUND) - if(NOT GNURADIO_UHD_FOUND) - message(FATAL_ERROR "*** gnuradio-uhd 3.7 or later is required to build gnss-sdr") - endif(NOT GNURADIO_UHD_FOUND) - set(ENABLE_UHD ON) -endif(NOT UHD_FOUND) +find_package(MATIO) +set_package_properties(MATIO PROPERTIES + PURPOSE "Used to store processing block's results in MAT files readable from MATLAB/Octave." + TYPE REQUIRED +) +if(NOT MATIO_FOUND OR MATIO_VERSION_STRING VERSION_LESS ${GNSSSDR_MATIO_MIN_VERSION}) + if(MATIO_FOUND) + message(STATUS " Matio installed version (${MATIO_VERSION_STRING}) is too old (>= ${GNSSSDR_MATIO_MIN_VERSION} is required).") + endif() + message(STATUS " Matio v${GNSSSDR_MATIO_LOCAL_VERSION} will be downloaded, built, and statically linked automatically") + message(STATUS " when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.") + set_package_properties(MATIO PROPERTIES + PURPOSE "Matio v${GNSSSDR_MATIO_LOCAL_VERSION} will be downloaded, built, and statically linked when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'." + ) + # Find ZLIB library https://github.com/madler/zlib + find_package(ZLIB) + set_package_properties(ZLIB PROPERTIES + URL "https://www.zlib.net/" + PURPOSE "Required to build Matio." + TYPE REQUIRED + ) + if(ZLIB_FOUND AND ZLIB_VERSION_STRING) + set_package_properties(ZLIB PROPERTIES + DESCRIPTION "A Massively Spiffy Yet Delicately Unobtrusive Compression Library (found: v${ZLIB_VERSION_STRING})" + ) + else() + set_package_properties(ZLIB PROPERTIES + DESCRIPTION "A Massively Spiffy Yet Delicately Unobtrusive Compression Library" + ) + endif() + if(NOT ZLIB_FOUND) + message(FATAL_ERROR "*** The zlib library is required to build Matio from source.") + endif() + + # Find HDF5 library + find_package(HDF5) + set_package_properties(HDF5 PROPERTIES + URL "https://support.hdfgroup.org/HDF5/" + PURPOSE "Required to build Matio." + TYPE REQUIRED + ) + if(HDF5_FOUND AND HDF5_VERSION) + set_package_properties(HDF5 PROPERTIES + DESCRIPTION "A versatile data model, a portable file format and a software library (found: v${HDF5_VERSION})" + ) + else() + set_package_properties(HDF5 PROPERTIES + DESCRIPTION "A versatile data model, a portable file format and a software library" + ) + endif() + if(NOT HDF5_FOUND) + message(STATUS " The hdf5 library has not been found in your system.") + message(STATUS " Please try to install it by doing:") + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + message(STATUS " $ sudo port install hdf5") + message(STATUS " or") + message(STATUS " $ brew install hdf5") + endif() + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat" OR ${LINUX_DISTRIBUTION} MATCHES "CentOS") + message(STATUS " sudo yum install hdf5-devel") + elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE") + message(STATUS " sudo zypper install hdf5-devel") + else() + message(STATUS " sudo apt-get install libhdf5-dev") + endif() + endif() + message(FATAL_ERROR "*** The hdf5 library is required to build Matio from source.") + endif() + + if(CMAKE_VERSION VERSION_LESS 3.7 OR "${HDF5_VERSION}" VERSION_LESS "1.8.13") + get_filename_component(ZLIB_BASE_DIR ${ZLIB_INCLUDE_DIRS} DIRECTORY) + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + if(NOT EXISTS "/usr/bin/libtoolize") + message(" libtool has not been found.") + message(" You can try to install it by typing:") + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(" sudo yum groupinstall 'Development Tools'") + elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE") + message(" sudo zypper install libtoool") + else() + message(" sudo apt-get install libtool") + endif() + message(FATAL_ERROR "libtool is required to build matio from source.") + endif() + if(EXISTS "/usr/bin/aclocal" OR + EXISTS "/usr/bin/aclocal-1.16" OR + EXISTS "/usr/bin/aclocal-1.15" OR + EXISTS "/usr/bin/aclocal-1.14" OR + EXISTS "/usr/bin/aclocal-1.13" OR + EXISTS "/usr/bin/aclocal-1.11" OR + EXISTS "/usr/bin/aclocal-1.10") + message(STATUS "Automake found.") + else() + message(" aclocal has not been found.") + message(" You can try to install it by typing:") + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(" sudo yum groupinstall 'Development Tools'") + elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE") + message(" sudo zypper install automake") + else() + message(" sudo apt-get install automake") + endif() + message(FATAL_ERROR "aclocal is required to build matio from source.") + endif() + endif() + + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + if((NOT EXISTS /usr/local/bin/glibtoolize AND NOT EXISTS /opt/local/bin/glibtoolize) OR + (NOT EXISTS /usr/local/bin/aclocal AND NOT EXISTS /opt/local/bin/aclocal)) + message(" libtool/automake tools have not been found.") + message(" You can try to install them by typing:") + message(" 'sudo port install libtool automake', if you use Macports, or 'brew install libtool automake', if you use Homebrew") + message(FATAL_ERROR "libtool/automake tools are required to build matio from source") + endif() + if(CMAKE_GENERATOR STREQUAL Xcode) + if(EXISTS /opt/local/bin/glibtoolize OR EXISTS /opt/local/bin/aclocal) + if(NOT EXISTS /usr/local/bin/glibtoolize OR NOT EXISTS /usr/local/bin/aclocal) + message(" WARNING: libtool/atomake binaries cannot be found by Xcode. Please do:") + message("sudo ln -s /opt/local/bin/glibtoolize /usr/local/bin/") + message("sudo ln -s /opt/local/bin/aclocal /usr/local/bin/") + message("sudo ln -s /opt/local/bin/autom4te /usr/local/bin/") + message("sudo ln -s /opt/local/bin/automake /usr/local/bin/") + message("sudo ln -s /opt/local/bin/autoconf /usr/local/bin/") + message("sudo ln -s /opt/local/bin/autoreconf /usr/local/bin/") # not needed by Matio, but by Protocol Buffers + message(FATAL_ERROR "libtool/automake tools cannot be found by Xcode") + endif() + endif() + endif() + endif() + + list(GET HDF5_LIBRARIES 0 HDF5_FIRST_DIR) + get_filename_component(HDF5_BASE_DIR2 ${HDF5_FIRST_DIR} DIRECTORY) + get_filename_component(HDF5_BASE_DIR ${HDF5_BASE_DIR2} DIRECTORY) + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + if(EXISTS /opt/local/include/hdf5.h) + set(HDF5_BASE_DIR /opt/local) + endif() + if(EXISTS /usr/local/include/hdf5.h) + set(HDF5_BASE_DIR /usr/local) + endif() + endif() + set(MATIO_MAKE_PROGRAM ${CMAKE_MAKE_PROGRAM}) + if(MATIO_MAKE_PROGRAM MATCHES "ninja" OR CMAKE_GENERATOR STREQUAL Xcode) + find_program(MATIO_MAKE_EXECUTABLE make + PATHS + /usr/bin + /usr/local/bin + ) + if(NOT MATIO_MAKE_EXECUTABLE) + message(FATAL_ERROR "make is required to build Matio from source.") + endif() + set(MATIO_MAKE_PROGRAM ${MATIO_MAKE_EXECUTABLE}) + endif() + set(MATIO_STATIC_LIB ${GNSSSDR_BINARY_DIR}/matio/lib/${CMAKE_FIND_LIBRARY_PREFIXES}matio${CMAKE_STATIC_LIBRARY_SUFFIX}) + ExternalProject_Add(matio-${GNSSSDR_MATIO_LOCAL_VERSION} + PREFIX ${GNSSSDR_BINARY_DIR}/matio + GIT_REPOSITORY https://github.com/tbeu/matio + GIT_TAG v${GNSSSDR_MATIO_LOCAL_VERSION} + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/matio/matio-${GNSSSDR_MATIO_LOCAL_VERSION} + UPDATE_COMMAND ${GNSSSDR_BINARY_DIR}/thirdparty/matio/matio-${GNSSSDR_MATIO_LOCAL_VERSION}/autogen.sh + CONFIGURE_COMMAND ${GNSSSDR_BINARY_DIR}/thirdparty/matio/matio-${GNSSSDR_MATIO_LOCAL_VERSION}/configure --with-hdf5=${HDF5_BASE_DIR} --with-zlib=${ZLIB_BASE_DIR} --with-default-file-ver=7.3 --enable-mat73=yes --prefix= + BUILD_COMMAND ${MATIO_MAKE_PROGRAM} + ) + file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/matio/lib) + else() # CMake >= 3.7 + include(GNUInstallDirs) + set(MATIO_STATIC_LIB ${GNSSSDR_BINARY_DIR}/matio/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}matio${CMAKE_STATIC_LIBRARY_SUFFIX}) + if("${HDF5_VERSION}" VERSION_GREATER "1.8.18" AND "${HDF5_VERSION}" VERSION_LESS "1.10.4") + # weird workaround, but it works in all tested distros (Ubuntu, Debian, Fedora, CentOS, OpenSUSE) + set(EXTRA_MATIO_BUILD_FLAGS -DMATIO_WITH_ZLIB=OFF -DHAVE_ZLIB=1) + endif() + ExternalProject_Add(matio-${GNSSSDR_MATIO_LOCAL_VERSION} + PREFIX ${GNSSSDR_BINARY_DIR}/matio + GIT_REPOSITORY https://github.com/tbeu/matio + GIT_TAG v${GNSSSDR_MATIO_LOCAL_VERSION} + UPDATE_COMMAND "" + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/matio/matio-${GNSSSDR_MATIO_LOCAL_VERSION} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/matio + CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + -DMATIO_SHARED=OFF + "${EXTRA_MATIO_BUILD_FLAGS}" + -DHDF5_USE_STATIC_LIBRARIES=OFF + -DMATIO_DEFAULT_FILE_VERSION:STRING=7.3 + -DMATIO_MAT73=ON + -DMATIO_BUILD_TESTING=OFF + -DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/matio + BUILD_COMMAND ${CMAKE_COMMAND} + "--build" "${GNSSSDR_BINARY_DIR}/matio" + "--config" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + BUILD_BYPRODUCTS ${MATIO_STATIC_LIB} + ) + file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/matio/${CMAKE_INSTALL_LIBDIR}) + endif() + + if(NOT TARGET Matio::matio) + file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/matio/include) + add_library(Matio::matio STATIC IMPORTED) + add_dependencies(Matio::matio matio-${GNSSSDR_MATIO_LOCAL_VERSION}) + set_target_properties(Matio::matio PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION ${MATIO_STATIC_LIB} + INTERFACE_INCLUDE_DIRECTORIES ${GNSSSDR_BINARY_DIR}/matio/include + INTERFACE_LINK_LIBRARIES "${MATIO_STATIC_LIB};${HDF5_LIBRARIES};${ZLIB_LIBRARIES}" + ) + endif() +endif() + ################################################################################ -# Doxygen - http://www.stack.nl/~dimitri/doxygen/index.html (OPTIONAL, used if found) +# PugiXML - https://pugixml.org/ ################################################################################ -find_package(Doxygen) +find_package(PUGIXML) +set_package_properties(PUGIXML PROPERTIES + PURPOSE "Used to handle Galileo almanac XML files published by the European GNSS Service Centre." + TYPE REQUIRED +) +if(NOT PUGIXML_FOUND) + message(STATUS " PugiXML v${GNSSSDR_PUGIXML_LOCAL_VERSION} will be downloaded, built, and statically linked when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'.") + set(PUGIXML_COMPILER -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}) + set(PUGIXML_CMAKE_FLAGS "") + if(DEFINED ENV{OECORE_TARGET_SYSROOT}) + set(PUGIXML_COMPILER "") + if(NOT CMAKE_TOOLCHAIN_FILE) + set(PUGIXML_CMAKE_FLAGS "-DCMAKE_TOOLCHAIN_FILE=${GNSSSDR_SOURCE_DIR}/cmake/Toolchains/oe-sdk_cross.cmake") + else() + set(PUGIXML_CMAKE_FLAGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}") + endif() + else() + if(CMAKE_TOOLCHAIN_FILE) + set(PUGIXML_CMAKE_FLAGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}") + endif() + endif() + set(PUGIXML_BUILD_COMMAND ${CMAKE_COMMAND} + "--build" "${GNSSSDR_BINARY_DIR}/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION}" + "--config" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + ) + if(CMAKE_VERSION VERSION_LESS 3.2) + ExternalProject_Add(pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION} + PREFIX ${GNSSSDR_BINARY_DIR}/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION} + GIT_REPOSITORY https://github.com/zeux/pugixml + GIT_TAG v${GNSSSDR_PUGIXML_LOCAL_VERSION} + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/pugixml/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION} + CMAKE_ARGS ${PUGIXML_COMPILER} + ${PUGIXML_CMAKE_FLAGS} + -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + UPDATE_COMMAND "" + PATCH_COMMAND "" + BUILD_COMMAND ${PUGIXML_BUILD_COMMAND} + INSTALL_COMMAND "" + ) + else() + if(CMAKE_VERSION VERSION_GREATER 3.12.0) + set(PARALLEL_BUILD "--parallel 2") + endif() + ExternalProject_Add(pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION} + PREFIX ${GNSSSDR_BINARY_DIR}/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION} + GIT_REPOSITORY https://github.com/zeux/pugixml + GIT_TAG v${GNSSSDR_PUGIXML_LOCAL_VERSION} + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/pugixml/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION} + CMAKE_ARGS ${PUGIXML_COMPILER} + ${PUGIXML_CMAKE_FLAGS} + -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + UPDATE_COMMAND "" + PATCH_COMMAND "" + BUILD_COMMAND "${PUGIXML_BUILD_COMMAND} ${PARALLEL_BUILD}" + BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}pugixml${CMAKE_STATIC_LIBRARY_SUFFIX} + INSTALL_COMMAND "" + ) + endif() + + set(PUGIXML_LIBRARIES ${GNSSSDR_BINARY_DIR}/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION}/${CMAKE_FIND_LIBRARY_PREFIXES}pugixml${CMAKE_STATIC_LIBRARY_SUFFIX}) + + if(NOT TARGET Pugixml::pugixml) + file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/thirdparty/pugixml/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION}/src) + add_library(Pugixml::pugixml STATIC IMPORTED) + add_dependencies(Pugixml::pugixml pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION}) + set_target_properties(Pugixml::pugixml PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_CONFIGURATIONS "None;Debug;Release;RelWithDebInfo;MinSizeRel" + MAP_IMPORTED_CONFIG_NOOPTWITHASM Debug + MAP_IMPORTED_CONFIG_COVERAGE Debug + MAP_IMPORTED_CONFIG_O2WITHASM RelWithDebInfo + MAP_IMPORTED_CONFIG_O3WITHASM RelWithDebInfo + MAP_IMPORTED_CONFIG_ASAN Debug + IMPORTED_LOCATION_NONE ${PUGIXML_LIBRARIES} + IMPORTED_LOCATION_DEBUG ${PUGIXML_LIBRARIES} + IMPORTED_LOCATION_RELEASE ${PUGIXML_LIBRARIES} + IMPORTED_LOCATION_RELWITHDEBINFO ${PUGIXML_LIBRARIES} + IMPORTED_LOCATION_MINSIZEREL ${PUGIXML_LIBRARIES} + INTERFACE_INCLUDE_DIRECTORIES ${GNSSSDR_BINARY_DIR}/thirdparty/pugixml/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION}/src + INTERFACE_LINK_LIBRARIES ${PUGIXML_LIBRARIES} + ) + if((CMAKE_GENERATOR STREQUAL Xcode) OR MSVC) + set_target_properties(Pugixml::pugixml PROPERTIES + IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION}/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}pugixml${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION}/Release/${CMAKE_FIND_LIBRARY_PREFIXES}pugixml${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION}/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}pugixml${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION}/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}pugixml${CMAKE_STATIC_LIBRARY_SUFFIX} + INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/pugixml-${GNSSSDR_PUGIXML_LOCAL_VERSION}/$<$:Debug/>$<$:Release/>$<$:RelWithDebInfo/>$<$:MinSizeRel/>${CMAKE_FIND_LIBRARY_PREFIXES}pugixml${CMAKE_STATIC_LIBRARY_SUFFIX} + ) + endif() + endif() + + set_package_properties(PUGIXML PROPERTIES + PURPOSE "PugiXML v${GNSSSDR_PUGIXML_LOCAL_VERSION} will be downloaded, built, and statically linked when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'." + ) +endif() + + + +################################################################################ +# Protocol Buffers https://github.com/protocolbuffers/protobuf +################################################################################ +if(((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.0.0")) OR + ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0")) OR + ((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "11"))) + if(CMAKE_VERSION VERSION_LESS 3.19) + find_package(Protobuf) + else() + find_package(Protobuf 3.0...21.12) + endif() +else() + find_package(Protobuf) + + if((CMAKE_BUILD_TYPE STREQUAL "Debug") AND Protobuf_FOUND AND absl_FOUND) + # This Regular Expression is used to convert the version string provided by `find_package(Protobuf)` into the + # appropriate binary version string. So, for instance, "4.25.3" becomes "25.3.0". + string(REGEX REPLACE "^[0-9]+\.([0-9]+\.[0-9]+)$" "\\1.0" PROTOBUF_LIBRARY_VERSION "${Protobuf_VERSION}") + if((PROTOBUF_LIBRARY_VERSION VERSION_GREATER_EQUAL "22") AND (PROTOBUF_LIBRARY_VERSION VERSION_LESS "26")) + pkg_check_modules(protobuf REQUIRED IMPORTED_TARGET protobuf=${PROTOBUF_LIBRARY_VERSION}) + target_link_libraries(protobuf::libprotobuf INTERFACE PkgConfig::protobuf) + endif() + endif() +endif() +set_package_properties(Protobuf PROPERTIES + URL "https://protobuf.dev/" + PURPOSE "Used to serialize output data in a way that can be read by other applications." + TYPE REQUIRED +) +if(NOT Protobuf_VERSION) + set(Protobuf_VERSION "0.0.0") +endif() +if(CMAKE_VERSION VERSION_LESS 3.6) + if(PROTOBUF_FOUND) + set(Protobuf_FOUND ${PROTOBUF_FOUND}) + endif() +endif() +if(Protobuf_FOUND AND CMAKE_VERSION VERSION_LESS 3.9) + if(PROTOBUF_INCLUDE_DIR) + set(Protobuf_INCLUDE_DIR ${PROTOBUF_INCLUDE_DIR}) + endif() + if(PROTOBUF_LIBRARY) + set(Protobuf_LIBRARY ${PROTOBUF_LIBRARY}) + endif() + if(PROTOBUF_PROTOC_EXECUTABLE) + set(Protobuf_PROTOC_EXECUTABLE ${PROTOBUF_PROTOC_EXECUTABLE}) + endif() + if(PROTOBUF_PROTOC_LIBRARY) + set(Protobuf_PROTOC_LIBRARY ${PROTOBUF_PROTOC_EXECUTABLE}) + endif() + add_library(protobuf::libprotobuf SHARED IMPORTED) + set_target_properties(protobuf::libprotobuf PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${Protobuf_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${Protobuf_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES "${Protobuf_LIBRARY}" + ) + add_executable(protobuf::protoc IMPORTED) + set_target_properties(protobuf::protoc PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${Protobuf_PROTOC_EXECUTABLE}" + INTERFACE_LINK_LIBRARIES "${Protobuf_PROTOC_LIBRARY}" + ) + if(${Protobuf_VERSION} VERSION_EQUAL "0.0.0") + set(_PROTOBUF_COMMON_HEADER ${Protobuf_INCLUDE_DIR}/google/protobuf/stubs/common.h) + set(Protobuf_VERSION "") + set(Protobuf_LIB_VERSION "") + file(STRINGS ${_PROTOBUF_COMMON_HEADER} _PROTOBUF_COMMON_H_CONTENTS REGEX "#define[ \t]+GOOGLE_PROTOBUF_VERSION[ \t]+") + if(_PROTOBUF_COMMON_H_CONTENTS MATCHES "#define[ \t]+GOOGLE_PROTOBUF_VERSION[ \t]+([0-9]+)") + set(Protobuf_LIB_VERSION "${CMAKE_MATCH_1}") + endif() + unset(_PROTOBUF_COMMON_H_CONTENTS) + math(EXPR _PROTOBUF_MAJOR_VERSION "${Protobuf_LIB_VERSION} / 1000000") + math(EXPR _PROTOBUF_MINOR_VERSION "${Protobuf_LIB_VERSION} / 1000 % 1000") + math(EXPR _PROTOBUF_SUBMINOR_VERSION "${Protobuf_LIB_VERSION} % 1000") + set(Protobuf_VERSION "${_PROTOBUF_MAJOR_VERSION}.${_PROTOBUF_MINOR_VERSION}.${_PROTOBUF_SUBMINOR_VERSION}") + endif() +endif() + +if(Protobuf_FOUND) + set_package_properties(Protobuf PROPERTIES + DESCRIPTION "Structured data serialization mechanism (found: v${Protobuf_VERSION})" + ) +else() + set_package_properties(Protobuf PROPERTIES + DESCRIPTION "Structured data serialization mechanism" + ) +endif() + +if(Protobuf_FOUND AND CMAKE_CROSSCOMPILING) + find_program(PROTOC_EXECUTABLE protoc) + if(NOT PROTOC_EXECUTABLE) + find_program(PROTOC_EXECUTABLE protoc + PATHS + /usr/bin + /usr/local/bin + ) + endif() + if(PROTOC_EXECUTABLE) + set_target_properties(protobuf::protoc PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION ${PROTOC_EXECUTABLE} + ) + set(Protobuf_PROTOC_EXECUTABLE ${PROTOC_EXECUTABLE}) + else() + message(FATAL_ERROR "Please install the Protocol Buffers compiler v${Protobuf_VERSION} in the host machine") + endif() +endif() + +if((NOT Protobuf_FOUND) OR (NOT Protobuf_PROTOC_EXECUTABLE) OR (${Protobuf_VERSION} VERSION_LESS ${GNSSSDR_PROTOBUF_MIN_VERSION})) + unset(Protobuf_PROTOC_EXECUTABLE) + if(CMAKE_CROSSCOMPILING) + if(NOT Protobuf_FOUND) + ExternalProject_Add(protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + PREFIX ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + GIT_REPOSITORY https://github.com/protocolbuffers/protobuf + GIT_TAG v${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/protobuf/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + UPDATE_COMMAND ${GNSSSDR_BINARY_DIR}/thirdparty/protobuf/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/autogen.sh + CONFIGURE_COMMAND "${GNSSSDR_BINARY_DIR}/thirdparty/protobuf/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/configure --prefix=${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} --host=$ENV{OECORE_TARGET_ARCH} --with-protoc=${PROTOC_EXECUTABLE}" + BUILD_COMMAND ${CMAKE_MAKE_PROGRAM} + INSTALL_COMMAND ${CMAKE_MAKE_PROGRAM} DESTDIR= install + BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}protobuf${CMAKE_STATIC_LIBRARY_SUFFIX} + ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/bin/protoc + ) + set(PROTOBUF_PROTOC_EXECUTABLE "${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/bin/protoc") + endif() + else() + if(CMAKE_VERSION VERSION_GREATER "3.13") + if(absl_FOUND) + if(absl_VERSION) + if(${absl_VERSION} VERSION_LESS "20230117") + unset(absl_FOUND CACHE) + set(absl_FOUND OFF) + endif() + else() + unset(absl_FOUND CACHE) + set(absl_FOUND OFF) + endif() + endif() + if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.0.0")) + unset(absl_FOUND CACHE) + set(absl_FOUND OFF) + endif() + if(absl_FOUND) + set_package_properties(absl PROPERTIES + DESCRIPTION "An open-source collection of C++ code designed to augment the C++ standard library (found: v${absl_VERSION})" + ) + else() + if(absl_VERSION) + set_package_properties(absl PROPERTIES + DESCRIPTION "An open-source collection of C++ code designed to augment the C++ standard library (found: v${absl_VERSION})" + ) + else() + set_package_properties(absl PROPERTIES + DESCRIPTION "An open-source collection of C++ code designed to augment the C++ standard library" + ) + endif() + if(NOT (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.0.0")) + message(STATUS "The Abseil library (https://github.com/abseil/abseil-cpp) >= v20230117 is required to be installed before building Protocol Buffers >22.x on the fly.") + endif() + message(STATUS " Instead, Protocol Buffers v21.12 will be built, which does not require Abseil.") + set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "21.12") + endif() + endif() + if(CMAKE_VERSION VERSION_LESS "3.13" OR NOT absl_FOUND) + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + if(NOT EXISTS "/usr/bin/libtoolize") + message(" libtool has not been found.") + message(" You can try to install it by typing:") + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(" sudo yum groupinstall 'Development Tools'") + elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE") + message(" sudo zypper install libtoool") + else() + message(" sudo apt-get install libtool") + endif() + message(FATAL_ERROR "libtool is required to build Protocol Buffers from source") + endif() + if(EXISTS "/usr/bin/aclocal" OR + EXISTS "/usr/bin/aclocal-1.16" OR + EXISTS "/usr/bin/aclocal-1.15" OR + EXISTS "/usr/bin/aclocal-1.14" OR + EXISTS "/usr/bin/aclocal-1.13" OR + EXISTS "/usr/bin/aclocal-1.11" OR + EXISTS "/usr/bin/aclocal-1.10") + message(STATUS "Automake found.") + else() + message(" aclocal has not been found.") + message(" You can try to install it by typing:") + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(" sudo yum groupinstall 'Development Tools'") + elseif(${LINUX_DISTRIBUTION} MATCHES "openSUSE") + message(" sudo zypper install automake") + else() + message(" sudo apt-get install automake") + endif() + message(FATAL_ERROR "aclocal is required to build Protocol Buffers from source") + endif() + endif() + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + if((NOT EXISTS /usr/local/bin/glibtoolize AND NOT EXISTS /opt/local/bin/glibtoolize) OR + (NOT EXISTS /usr/local/bin/aclocal AND NOT EXISTS /opt/local/bin/aclocal)) + message(" libtool/automake tools have not been found.") + message(" You can try to install them by typing:") + message(" 'sudo port install libtool automake', if you use Macports, or 'brew install libtool automake', if you use Homebrew") + message(FATAL_ERROR "libtool/automake tools are required to build Protocol Buffers from source") + endif() + if(CMAKE_GENERATOR STREQUAL Xcode) + if(EXISTS /opt/local/bin/glibtoolize OR EXISTS /opt/local/bin/aclocal) + if(NOT EXISTS /usr/local/bin/glibtoolize OR NOT EXISTS /usr/local/bin/aclocal) + message(" WARNING: libtool/automake binaries cannot be found by Xcode. Please do:") + message("sudo ln -s /opt/local/bin/glibtoolize /usr/local/bin/") + message("sudo ln -s /opt/local/bin/aclocal /usr/local/bin/") + message("sudo ln -s /opt/local/bin/autom4te /usr/local/bin/") + message("sudo ln -s /opt/local/bin/automake /usr/local/bin/") + message("sudo ln -s /opt/local/bin/autoconf /usr/local/bin/") + message("sudo ln -s /opt/local/bin/autoreconf /usr/local/bin/") + message(FATAL_ERROR "libtool/automake tools cannot be found by Xcode") + endif() + endif() + endif() + endif() + + set(PROTOBUF_MAKE_PROGRAM ${CMAKE_MAKE_PROGRAM}) + if(PROTOBUF_MAKE_PROGRAM MATCHES "ninja" OR CMAKE_GENERATOR STREQUAL Xcode) + find_program(MAKE_EXECUTABLE make + PATHS + /usr/bin + /usr/local/bin + ) + if(NOT MAKE_EXECUTABLE) + message(FATAL_ERROR "make is required to build Protocol Buffers from source.") + endif() + set(PROTOBUF_MAKE_PROGRAM ${MAKE_EXECUTABLE}) + endif() + if(CMAKE_VERSION VERSION_LESS 3.2) + ExternalProject_Add(protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + PREFIX ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + GIT_REPOSITORY https://github.com/protocolbuffers/protobuf + GIT_TAG v${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/protobuf/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + UPDATE_COMMAND ${GNSSSDR_BINARY_DIR}/thirdparty/protobuf/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/autogen.sh + CONFIGURE_COMMAND ${GNSSSDR_BINARY_DIR}/thirdparty/protobuf/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/configure --prefix=${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + BUILD_COMMAND ${PROTOBUF_MAKE_PROGRAM} + INSTALL_COMMAND ${PROTOBUF_MAKE_PROGRAM} DESTDIR= install + ) + else() + if(CMAKE_MAKE_PROGRAM MATCHES "make") + include(ProcessorCount) + ProcessorCount(NUMBER_OF_PROCESSORS) + if(NUMBER_OF_PROCESSORS GREATER 1) + set(PROTOBUF_PARALLEL_BUILD "-j${NUMBER_OF_PROCESSORS}") + endif() + endif() + ExternalProject_Add(protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + PREFIX ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + GIT_REPOSITORY https://github.com/protocolbuffers/protobuf + GIT_TAG v${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/protobuf/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + UPDATE_COMMAND ${GNSSSDR_BINARY_DIR}/thirdparty/protobuf/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/autogen.sh + CONFIGURE_COMMAND ${GNSSSDR_BINARY_DIR}/thirdparty/protobuf/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/configure --prefix=${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + BUILD_COMMAND ${PROTOBUF_MAKE_PROGRAM} ${PROTOBUF_PARALLEL_BUILD} + INSTALL_COMMAND ${PROTOBUF_MAKE_PROGRAM} DESTDIR= install + BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}protobuf${CMAKE_STATIC_LIBRARY_SUFFIX} + ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/bin/protoc + ) + endif() + + if(NOT TARGET protobuf::protoc) + add_executable(protobuf::protoc IMPORTED) + endif() + add_dependencies(protobuf::protoc protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}) + unset(Protobuf_PROTOC_EXECUTABLE) + set(PROTOBUF_PROTOC_EXECUTABLE "${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/bin/protoc") + set_target_properties(protobuf::protoc PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/bin/protoc" + INTERFACE_LINK_LIBRARIES "${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}protoc${CMAKE_STATIC_LIBRARY_SUFFIX}" + ) + file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/include) + if(NOT TARGET protobuf::libprotobuf) + add_library(protobuf::libprotobuf STATIC IMPORTED) + add_dependencies(protobuf::libprotobuf protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}) + endif() + set_target_properties(protobuf::libprotobuf PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}protobuf${CMAKE_STATIC_LIBRARY_SUFFIX}" + INTERFACE_INCLUDE_DIRECTORIES "${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/include" + INTERFACE_LINK_LIBRARIES "${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/lib/${CMAKE_FIND_LIBRARY_PREFIXES}protobuf${CMAKE_STATIC_LIBRARY_SUFFIX}" + ) + if(CMAKE_VERSION VERSION_LESS "3.10") + set(Protobuf_PROTOC_EXECUTABLE ${PROTOBUF_PROTOC_EXECUTABLE}) + endif() + else() # CMake >= 3.13 and Abseil found + include(BuildProtobuf) + endif() + endif() + if(${Protobuf_VERSION} VERSION_LESS ${GNSSSDR_PROTOBUF_MIN_VERSION}) + if(NOT (${Protobuf_VERSION} EQUAL "0.0.0")) + set_package_properties(Protobuf PROPERTIES + PURPOSE "Protocol Buffers found (v${Protobuf_VERSION}) is too old (> v${GNSSSDR_PROTOBUF_MIN_VERSION} needed)." + ) + endif() + endif() + set_package_properties(Protobuf PROPERTIES + PURPOSE "Protocol Buffers v${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} will be downloaded, built, and statically linked when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME}'." + ) +endif() +if(${Protobuf_VERSION} VERSION_EQUAL "0.0.0") + unset(Protobuf_VERSION) +endif() + + + +################################################################################ +# Doxygen - https://www.doxygen.nl (OPTIONAL, used if found) +################################################################################ +if(CMAKE_VERSION VERSION_LESS 3.6.9) + find_package(Doxygen) +else() + find_package(Doxygen OPTIONAL_COMPONENTS dot) +endif() +set_package_properties(Doxygen PROPERTIES + URL "https://www.doxygen.nl" + PURPOSE "Used to generate code documentation by doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} doc'" + TYPE OPTIONAL +) +if(DOXYGEN_FOUND AND DOXYGEN_VERSION) + set_package_properties(Doxygen PROPERTIES + DESCRIPTION "Generates documentation from annotated C++ sources (found: v${DOXYGEN_VERSION})" + ) +else() + set_package_properties(Doxygen PROPERTIES + DESCRIPTION "Generates documentation from annotated C++ sources" + ) +endif() +if(CMAKE_VERSION VERSION_LESS 3.2.3) + find_package(LATEX) +else() + find_package(LATEX COMPONENTS PDFLATEX) +endif() +set_package_properties(LATEX PROPERTIES + URL "https://www.latex-project.org" + DESCRIPTION "High-quality typesetting system" + PURPOSE "Used to generate a PDF manual by doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} pdfmanual'." + TYPE OPTIONAL +) +if(DEFINED MATHJAX2_ROOT) + set(ENABLE_EXTERNAL_MATHJAX OFF) +endif() +if(ENABLE_EXTERNAL_MATHJAX AND NOT DEFINED MATHJAX2_USE_ROOT) + set(MATHJAX2_USE_ROOT "https://cdnjs.cloudflare.com/ajax/libs/mathjax/${GNSSSDR_MATHJAX_EXTERNAL_VERSION}") +endif() +unset(MATHJAX2_FOUND CACHE) +find_package(MATHJAX2) +set_package_properties(MATHJAX2 PROPERTIES + URL "https://www.mathjax.org" + DESCRIPTION "Beautiful and accessible math in all browsers" + PURPOSE "Used to generate equations in HTML docs when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} doc'." + TYPE OPTIONAL +) + if(DOXYGEN_FOUND) - message(STATUS "Doxygen found.") - message(STATUS "You can build the documentation with 'make doc'." ) - message(STATUS "When done, point your browser to ${CMAKE_SOURCE_DIR}/html/index.html") - set(HAVE_DOT ${DOXYGEN_DOT_FOUND}) - file(TO_NATIVE_PATH ${CMAKE_SOURCE_DIR} top_srcdir) - file(TO_NATIVE_PATH ${CMAKE_BINARY_DIR} top_builddir) - find_package(LATEX) - if (PDFLATEX_COMPILER) - set(GENERATE_PDF_DOCUMENTATION "YES") - set(GNSSSDR_USE_MATHJAX "NO") - else(PDFLATEX_COMPILER) - set(GENERATE_PDF_DOCUMENTATION "NO") - set(GNSSSDR_USE_MATHJAX "YES") - endif(PDFLATEX_COMPILER) - configure_file(${CMAKE_SOURCE_DIR}/docs/doxygen/Doxyfile.in - ${CMAKE_SOURCE_DIR}/docs/doxygen/Doxyfile - @ONLY - ) - add_custom_target(doc - ${DOXYGEN_EXECUTABLE} ${CMAKE_SOURCE_DIR}/docs/doxygen/Doxyfile - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMENT "Generating API documentation with Doxygen." VERBATIM - ) - if(LATEX_COMPILER) - message(STATUS "'make pdfmanual' will generate a manual at ${CMAKE_SOURCE_DIR}/docs/GNSS-SDR_manual.pdf") - add_custom_target(pdfmanual - COMMAND ${CMAKE_MAKE_PROGRAM} - COMMAND ${CMAKE_COMMAND} -E copy refman.pdf ${CMAKE_SOURCE_DIR}/docs/GNSS-SDR_manual.pdf - COMMAND ${CMAKE_MAKE_PROGRAM} clean - DEPENDS doc - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/docs/latex - COMMENT "Generating PDF manual with Doxygen." VERBATIM - ) - endif(LATEX_COMPILER) - message(STATUS "'make doc-clean' will clean the documentation.") - add_custom_target(doc-clean - COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_SOURCE_DIR}/docs/html - COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_SOURCE_DIR}/docs/latex - COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_SOURCE_DIR}/docs/GNSS-SDR_manual.pdf - COMMENT "Cleaning documentation." VERBATIM - ) -else(DOXYGEN_FOUND) - message(STATUS " Doxygen has not been found in your system.") - message(STATUS " You can get nice code documentation by using it!") - message(STATUS " Get it from http://www.stack.nl/~dimitri/doxygen/index.html") - if(OS_IS_LINUX) - if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - message(" or simply by doing 'sudo yum install doxygen-latex'.") - else(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - message(" or simply by doing 'sudo apt-get install doxygen-latex'.") - endif(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") - endif(OS_IS_LINUX) - if(OS_IS_MACOSX) - message(STATUS " or simply by doing 'sudo port install doxygen +latex'.") - endif(OS_IS_MACOSX) -endif(DOXYGEN_FOUND) + message(STATUS "Doxygen found.") + message(STATUS " You can build the documentation with '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} doc'.") + message(STATUS " When done, point your browser to ${GNSSSDR_BINARY_DIR}/docs/html/index.html") + if(CMAKE_VERSION VERSION_LESS 3.9.6) + if(DOXYGEN_DOT_FOUND) + set(HAVE_DOT "YES") + endif() + if(NOT TARGET Doxygen::doxygen) + add_executable(Doxygen::doxygen IMPORTED GLOBAL) + set_target_properties(Doxygen::doxygen PROPERTIES + IMPORTED_LOCATION "${DOXYGEN_EXECUTABLE}" + ) + endif() + else() + if(TARGET Doxygen::dot) + set(HAVE_DOT "YES") + else() + set(HAVE_DOT "NO") + endif() + endif() + file(TO_NATIVE_PATH ${GNSSSDR_SOURCE_DIR} top_srcdir) + file(TO_NATIVE_PATH ${GNSSSDR_BINARY_DIR} top_builddir) + set(PDFMANUAL_MAKE_PROGRAM ${CMAKE_MAKE_PROGRAM}) + if(PDFMANUAL_MAKE_PROGRAM MATCHES "ninja") + find_program(PDFMANUAL_MAKE_EXECUTABLE make + PATHS + /usr/bin + /usr/local/bin + ) + if(NOT PDFMANUAL_MAKE_EXECUTABLE) + if(PDFLATEX_COMPILER) + message(STATUS "Warning: make is required to build the PDF manual, so target pdfmanual will not be generated.") + endif() + set(PDFLATEX_COMPILER FALSE) + endif() + set(PDFMANUAL_MAKE_PROGRAM ${PDFMANUAL_MAKE_EXECUTABLE}) + endif() + if(PDFLATEX_COMPILER) + set(GENERATE_PDF_DOCUMENTATION "YES") + else() + set(GENERATE_PDF_DOCUMENTATION "NO") + endif() + if(MATHJAX2_FOUND) + set(GNSSSDR_USE_MATHJAX "YES") + else() + set(GNSSSDR_USE_MATHJAX "NO") + endif() + configure_file(${GNSSSDR_SOURCE_DIR}/docs/doxygen/Doxyfile.in + ${GNSSSDR_BINARY_DIR}/docs/doxygen/Doxyfile + @ONLY + ) + add_custom_target(doc + Doxygen::doxygen ${GNSSSDR_BINARY_DIR}/docs/doxygen/Doxyfile + WORKING_DIRECTORY ${GNSSSDR_BINARY_DIR} + COMMENT "Generating HTML documentation from source code with Doxygen..." VERBATIM + ) + if(PDFLATEX_COMPILER) + message(STATUS " '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} pdfmanual' will generate a manual at ${GNSSSDR_BINARY_DIR}/docs/GNSS-SDR_manual.pdf") + add_custom_target(pdfmanual + COMMAND ${PDFMANUAL_MAKE_PROGRAM} + COMMAND ${CMAKE_COMMAND} -E copy refman.pdf ${GNSSSDR_BINARY_DIR}/docs/GNSS-SDR_manual.pdf + COMMAND ${PDFMANUAL_MAKE_PROGRAM} clean + DEPENDS doc + WORKING_DIRECTORY ${GNSSSDR_BINARY_DIR}/docs/latex + COMMENT "Generating PDF manual with LaTeX and pdflatex..." VERBATIM + ) + endif() + message(STATUS " '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} doc-clean' will clean the documentation.") + if(CMAKE_VERSION VERSION_LESS 3.17) + add_custom_target(doc-clean + COMMAND ${CMAKE_COMMAND} -E remove_directory ${GNSSSDR_BINARY_DIR}/docs/html + COMMAND ${CMAKE_COMMAND} -E remove_directory ${GNSSSDR_BINARY_DIR}/docs/latex + COMMAND ${CMAKE_COMMAND} -E remove ${GNSSSDR_BINARY_DIR}/docs/GNSS-SDR_manual.pdf + COMMENT "Cleaning documentation." VERBATIM + ) + else() + add_custom_target(doc-clean + COMMAND ${CMAKE_COMMAND} -E rm -rf ${GNSSSDR_BINARY_DIR}/docs/html + COMMAND ${CMAKE_COMMAND} -E rm -rf ${GNSSSDR_BINARY_DIR}/docs/latex + COMMAND ${CMAKE_COMMAND} -E rm -f ${GNSSSDR_BINARY_DIR}/docs/GNSS-SDR_manual.pdf + COMMENT "Cleaning documentation." VERBATIM + ) + endif() +else() + message(STATUS " Doxygen has not been found in your system.") + message(STATUS " You can get nice code documentation by using it!") + message(STATUS " Get it from https://www.doxygen.nl/download.html") + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(STATUS " or simply by doing 'sudo yum install doxygen-latex'.") + else() + message(STATUS " or simply by doing 'sudo apt-get install doxygen-latex'.") + endif() + endif() + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + message(STATUS " or simply by doing 'sudo port install doxygen +docs', if you are using Macports,") + message(STATUS " or 'brew cask install mactex', then restart Terminal and do 'brew install graphviz doxygen', if you use Homebrew.") + endif() + set(ENABLE_EXTERNAL_MATHJAX OFF) +endif() -############################################################################### +################################################################################ # OpenCL (OPTIONAL) -############################################################################### +################################################################################ +find_package(OPENCL QUIET) +set_package_properties(OPENCL PROPERTIES + PURPOSE "Used in some processing block implementations." + TYPE OPTIONAL +) +if(NOT OPENCL_FOUND) + set(ENABLE_OPENCL OFF) +endif() if(ENABLE_OPENCL) - find_package(OpenCL) - if($ENV{DISABLE_OPENCL}) + if(DEFINED ENV{DISABLE_OPENCL}) set(DISABLE_OPENCL TRUE) - endif($ENV{DISABLE_OPENCL}) + endif() if(DISABLE_OPENCL) - set(OPENCL_FOUND FALSE) - else(DISABLE_OPENCL) + set(ENABLE_OPENCL OFF) + else() if(OPENCL_FOUND) message(STATUS "OpenCL has been found and will be used by some processing blocks") - message(STATUS "You can disable OpenCL use by doing 'cmake -DENABLE_OPENCL=OFF ../' ") - endif(OPENCL_FOUND) - endif(DISABLE_OPENCL) - if(ENABLE_GENERIC_ARCH) - set(OPENCL_FOUND FALSE) - message(STATUS "ENABLE_GENERIC_ARCH is set to ON so the use of OpenCL has been disabled.") - endif(ENABLE_GENERIC_ARCH) + message(STATUS " You can disable OpenCL use by doing 'cmake -DENABLE_OPENCL=OFF ..'") + endif() + endif() + if(ENABLE_PACKAGING) + set(ENABLE_OPENCL OFF) + message(STATUS "ENABLE_PACKAGING is set to ON so the use of OpenCL has been disabled.") + endif() if(NOT OPENCL_FOUND) message(STATUS "Processing blocks using OpenCL will not be built.") - endif(NOT OPENCL_FOUND) -else(ENABLE_OPENCL) - set(OPENCL_FOUND FALSE) -endif(ENABLE_OPENCL) - + endif() +endif() ################################################################################ -# GPerftools - https://github.com/gperftools/gperftools (OPTIONAL) +# CUDA (OPTIONAL) ################################################################################ +if(DEFINED ENV{CUDA_GPU_ACCEL}) + message(STATUS "CUDA_GPU_ACCEL environment variable found.") + set(ENABLE_CUDA ON) +endif() -if(ENABLE_GPERFTOOLS) - find_package(Gperftools) - if ( NOT GPERFTOOLS_FOUND ) - message(STATUS "Although ENABLE_GPERFTOOLS has been set to ON, GPerftools has not been found.") - message(STATUS "Binaries will be compiled without 'tcmalloc' and 'profiler' libraries.") - message(STATUS "You can install GPerftools from https://github.com/gperftools/gperftools") - else( NOT GPERFTOOLS_FOUND ) - message(STATUS "GPerftools libraries found." ) - message(STATUS "Binaries will be compiled with 'tcmalloc' and 'profiler' libraries.") - endif( NOT GPERFTOOLS_FOUND ) -endif(ENABLE_GPERFTOOLS) +if(ENABLE_CUDA) + set(CMAKE_CUDA_STANDARD 14) + set(CMAKE_CUDA_EXTENSIONS ON) + if(CMAKE_VERSION VERSION_GREATER 3.11) + include(CheckLanguage) + check_language(CUDA) + if(CMAKE_CUDA_COMPILER) + enable_language(CUDA) + set(CUDA_FOUND TRUE) + else() + set(ENABLE_CUDA OFF) + endif() + else() + find_package(CUDA REQUIRED) + set_package_properties(CUDA PROPERTIES + URL "https://developer.nvidia.com/cuda-downloads" + PURPOSE "Used in some processing block implementations." + TYPE REQUIRED + ) + if(CUDA_FOUND) + set_package_properties(CUDA PROPERTIES + DESCRIPTION "Library for parallel programming in Nvidia GPUs (found: v${CUDA_VERSION_STRING})" + ) + set(CMAKE_CUDA_COMPILER_ID "NVIDIA") # only for reporting purposes + set(CMAKE_CUDA_COMPILER_VERSION ${CUDA_VERSION_STRING}) # only for reporting purposes + else() + set_package_properties(CUDA PROPERTIES + DESCRIPTION "Library for parallel programming in Nvidia GPUs" + ) + set(ENABLE_CUDA OFF) + endif() + endif() +endif() +if(ENABLE_CUDA) + message(STATUS "NVIDIA CUDA GPU Acceleration will be enabled.") + message(STATUS " You can disable it with 'cmake -DENABLE_CUDA=OFF ..'") +else() + message(STATUS "NVIDIA CUDA GPU Acceleration will be not enabled.") +endif() + + + +################################################################################ +# CUSTOM UDP PACKET SOURCE (OPTIONAL) +################################################################################ +find_package(PCAP) +set_package_properties(PCAP PROPERTIES + PURPOSE "Used for the custom UDP IP packet source." + TYPE OPTIONAL +) +if(PCAP_FOUND) + set(ENABLE_RAW_UDP ON) +endif() +if(ENABLE_RAW_UDP) + message(STATUS "Highly-optimized custom UDP IP packet source is enabled.") + message(STATUS " You can disable it with 'cmake -DENABLE_RAW_UDP=OFF ..'") + if(NOT PCAP_FOUND) + message(FATAL_ERROR "PCAP required to compile custom UDP packet sample source (with ENABLE_RAW_UDP=ON)") + endif() +endif() + + + +################################################################################ +# FPGA (OPTIONAL) +################################################################################ +if(ENABLE_FPGA) + message(STATUS "FPGA offloading will be enabled.") + message(STATUS " You can disable it with 'cmake -DENABLE_FPGA=OFF ..'") +else() + message(STATUS "FPGA offloading will be not enabled.") + message(STATUS " Enable it with 'cmake -DENABLE_FPGA=ON ..' to add support for FPGA offloading.") +endif() @@ -909,163 +3154,594 @@ endif(ENABLE_GPERFTOOLS) # Setup of optional drivers ################################################################################ -if($ENV{GN3S_DRIVER}) - message(STATUS "GN3S_DRIVER environment variable found." ) - set(ENABLE_GN3S ON) -endif($ENV{GN3S_DRIVER}) -if(GN3S_DRIVER) - set(ENABLE_GN3S ON) -endif(GN3S_DRIVER) -if(ENABLE_GN3S) - message(STATUS "The GN3S driver will be compiled.") - message(STATUS "You can disable it with 'cmake -DENABLE_GN3S=OFF ../'" ) -else(ENABLE_GN3S) - message(STATUS "The (optional and experimental) GN3S driver is not enabled." ) - message(STATUS "Enable it with 'cmake -DENABLE_GN3S=ON ../' to add support for the GN3S dongle." ) -endif(ENABLE_GN3S) - - -if($ENV{RAW_ARRAY_DRIVER}) - message(STATUS "RAW_ARRAY_DRIVER environment variable found." ) - set(ENABLE_ARRAY ON) -endif($ENV{RAW_ARRAY_DRIVER}) - -if(RAW_ARRAY_DRIVER) - set(ENABLE_ARRAY ON) -endif(RAW_ARRAY_DRIVER) - -if(ENABLE_ARRAY) - message(STATUS "CTTC's Antenna Array front-end driver will be compiled." ) - message(STATUS "You can disable it with 'cmake -DENABLE_ARRAY=OFF ../'" ) - # copy firmware to install folder - # Build project gr-dbfcttc -else(ENABLE_ARRAY) - message(STATUS "The (optional) CTTC's Antenna Array front-end driver is not enabled." ) - message(STATUS "Enable it with 'cmake -DENABLE_ARRAY=ON ../' to add support for the CTTC experimental array front-end." ) -endif(ENABLE_ARRAY) - -if($ENV{RTLSDR_DRIVER}) - message(STATUS "RTLSDR_DRIVER environment variable found." ) +########################################## +# gr-osmosdr - OPTIONAL +# https://github.com/osmocom/gr-osmosdr +########################################## +if(DEFINED ENV{RTLSDR_DRIVER}) + message(STATUS "RTLSDR_DRIVER environment variable found.") set(ENABLE_OSMOSDR ON) -endif($ENV{RTLSDR_DRIVER}) +endif() +find_package(GROSMOSDR) +set_package_properties(GROSMOSDR PROPERTIES + PURPOSE "Used for communication with OsmoSDR and other front-ends (HackRF, bladeRF, Realtek's RTL2832U-based dongles, etc.)." + TYPE OPTIONAL +) if(ENABLE_OSMOSDR) - message(STATUS "The driver for OsmoSDR and other front-ends (HackRF, bladeRF, Realtek's RTL2832U-based dongles, etc.) will be compiled." ) - message(STATUS "You can disable it with 'cmake -DENABLE_OSMOSDR=OFF ../'" ) -else(ENABLE_OSMOSDR) - message(STATUS "The (optional) driver for OsmoSDR and related front-ends is not enabled." ) - message(STATUS "Enable it with 'cmake -DENABLE_OSMOSDR=ON ../' to add support for OsmoSDR and other front-ends (HackRF, bladeRF, Realtek's RTL2832U-based USB dongles, etc.)" ) -endif(ENABLE_OSMOSDR) + if(GROSMOSDR_FOUND) + message(STATUS "The driver for OsmoSDR and other front-ends (HackRF, bladeRF, Realtek's RTL2832U-based dongles, etc.) will be compiled.") + message(STATUS " You can disable it with 'cmake -DENABLE_OSMOSDR=OFF ..'") + else() + if(ENABLE_PACKAGING) + message(WARNING "gr-osmosdr has not been found. Source blocks depending on it will NOT be built.") + else() + message(FATAL_ERROR "gr-osmosdr required to build gnss-sdr with the optional OSMOSDR driver") + endif() + set(ENABLE_OSMOSDR OFF) + endif() +else() + message(STATUS "The (optional) driver for OsmoSDR and related front-ends is not enabled.") + message(STATUS " Enable it with 'cmake -DENABLE_OSMOSDR=ON ..' to add support for OsmoSDR and other front-ends (HackRF, bladeRF, Realtek's RTL2832U-based USB dongles, etc.)") +endif() -if($ENV{FLEXIBAND_DRIVER}) - message(STATUS "FLEXIBAND_DRIVER environment variable found." ) + + +########################################## +# gr-limesdr - OPTIONAL +# https://github.com/myriadrf/gr-limesdr +########################################## +find_package(GRLIMESDR) +set_package_properties(GRLIMESDR PROPERTIES + PURPOSE "Used for communication with LimeSDR." + TYPE OPTIONAL +) +if(ENABLE_LIMESDR) + if(GRLIMESDR_FOUND) + message(STATUS "The driver for LimeSDR will be compiled.") + message(STATUS " You can disable it with 'cmake -DENABLE_LIMESDR=OFF ..'") + else() + if(ENABLE_PACKAGING) + message(WARNING "gr-limesdr has not been found. Source blocks depending on it will NOT be built.") + else() + message(FATAL_ERROR "gr-limesdr required to build gnss-sdr with the optional LIMESDR driver") + endif() + set(ENABLE_LIMESDR OFF) + endif() +else() + message(STATUS "The (optional) driver for LimeSDR is not enabled.") + message(STATUS " Enable it with 'cmake -DENABLE_LIMESDR=ON ..' to add support for LimeSDR.") +endif() + + + +############################################## +# gr-iio - OPTIONAL +# IIO blocks for GNU Radio +# https://github.com/analogdevicesinc/gr-iio +############################################## +if(GNURADIO_IIO_FOUND) + set(GRIIO_FOUND TRUE) + set(GR_IIO_INCLUDE_HAS_GNURADIO TRUE) + set(GNURADIO_API_IIO TRUE) +else() + # Force to always search for gr-iio + unset(GRIIO_FOUND CACHE) + unset(IIO_INCLUDE_DIRS CACHE) + unset(IIO_LIBRARIES CACHE) + find_package(GRIIO) + set_package_properties(GRIIO PROPERTIES + PURPOSE "Used for communication with PlutoSDR and FMCOMMS devices." + TYPE OPTIONAL + ) +endif() +find_package(LIBAD9361) +set_package_properties(LIBAD9361 PROPERTIES + PURPOSE "Used for configuring devices with the AD9361 chipset." + TYPE OPTIONAL +) +if(NOT LIBAD9361_FOUND) + set(ENABLE_AD9361 OFF) + set(ENABLE_AD936X_SDR OFF) + set(ENABLE_FMCOMMS2 OFF) +endif() +if(ENABLE_PLUTOSDR OR ENABLE_FMCOMMS2) + if(NOT GRIIO_FOUND) + message(STATUS "gnuradio-iio not found, its installation is required.") + message(STATUS "Please build and install the following projects:") + message(STATUS " * libiio from https://github.com/analogdevicesinc/libiio") + message(STATUS " * libad9361-iio from https://github.com/analogdevicesinc/libad9361-iio") + message(STATUS " * gnuradio-iio from https://github.com/analogdevicesinc/gr-iio") + if(ENABLE_PACKAGING) + set(ENABLE_PLUTOSDR OFF) + set(ENABLE_FMCOMMS2 OFF) + else() + message(FATAL_ERROR "gnuradio-iio is required for building gnss-sdr with -DENABLE_PLUTOSDR=ON or -DENABLE_FMCOMMS2=ON.") + endif() + endif() +endif() + + + +##################################################################### +# libiio - OPTIONAL +# A library for interfacing with local and remote Linux IIO devices +# https://github.com/analogdevicesinc/libiio +##################################################################### +find_package(LIBIIO) +set_package_properties(LIBIIO PROPERTIES + PURPOSE "Used for communication with the AD9361 chipset." + TYPE OPTIONAL +) +if(ENABLE_AD9361 OR ENABLE_FMCOMMS2 OR ENABLE_PLUTOSDR) + if(NOT LIBIIO_FOUND) + message(STATUS "libiio not found, its installation is required.") + message(STATUS "Please build and install the following projects:") + message(STATUS " * libiio from https://github.com/analogdevicesinc/libiio") + message(STATUS " * libad9361-iio from https://github.com/analogdevicesinc/libad9361-iio") + message(STATUS " * gnuradio-iio from https://github.com/analogdevicesinc/gr-iio") + if(ENABLE_PACKAGING) + set(ENABLE_AD9361 OFF) + set(ENABLE_AD936X_SDR OFF) + set(ENABLE_FMCOMMS2 OFF) + else() + message(FATAL_ERROR "libiio is required for building gnss-sdr with -DENABLE_AD9361=ON.") + endif() + else() + if(ENABLE_AD9361) + set(ENABLE_FPGA ON) + endif() + endif() +endif() + + + +################################################################################ +# ION GNSS-SDR Metadata Standard https://sdr.ion.org/ (OPTIONAL) +################################################################################ +if(CMAKE_VERSION VERSION_LESS 3.14) + set(ENABLE_ION OFF) # FetchContent_MakeAvailable is available from CMake 3.14 +endif() +if(ENABLE_ION) + include(FetchContent) + set(CMAKE_POLICY_DEFAULT_CMP0063 NEW) + FetchContent_Declare( + gnss_metadata_standard + GIT_REPOSITORY https://github.com/IonMetadataWorkingGroup/GNSS-Metadata-Standard + GIT_TAG 220d116e10db5e403e21b77a1fa25aa35feda198 + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/gnss-metadata-standard + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/gnss-metadata-standard + BINARY_DIR ${GNSSSDR_BINARY_DIR}/gnss-metadata-standard + ) + FetchContent_MakeAvailable(gnss_metadata_standard) + + if(NOT TARGET ION::ion) + add_library(ION::ion STATIC IMPORTED) + add_dependencies(ION::ion gnss_metadata_standard) + if(CMAKE_GENERATOR STREQUAL "Xcode") + set_target_properties(ION::ion PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION_DEBUG "${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX}" + IMPORTED_LOCATION_RELEASE "${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Release/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX}" + IMPORTED_LOCATION_RELWITHDEBINFO "${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX}" + IMPORTED_LOCATION_MINSIZEREL "${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX}" + INTERFACE_INCLUDE_DIRECTORIES "${GNSSSDR_BINARY_DIR}/thirdparty/gnss-metadata-standard/source/api/inc" + ) + set_property(TARGET ION::ion APPEND PROPERTY + INTERFACE_LINK_LIBRARIES + "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>" + "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Release/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/Release/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>" + "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>" + "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/MinSizeRel/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>" + "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>" + "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>" + "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>" + "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/RelWithDebInfo/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>" + "$<$:${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/Debug/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}>" + ) + else() + set_target_properties(ION::ion PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX}" + INTERFACE_INCLUDE_DIRECTORIES "${GNSSSDR_BINARY_DIR}/thirdparty/gnss-metadata-standard/source/api/inc" + INTERFACE_LINK_LIBRARIES "${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/GnssMetadata/${CMAKE_FIND_LIBRARY_PREFIXES}api${CMAKE_STATIC_LIBRARY_SUFFIX};${GNSSSDR_BINARY_DIR}/gnss-metadata-standard/source/api/lib/tinyxml2/${CMAKE_FIND_LIBRARY_PREFIXES}xml${CMAKE_STATIC_LIBRARY_SUFFIX}" + ) + endif() + endif() +endif() + + + +##################################################################### +# Check signal sources related to FPGA only. +##################################################################### +if(ENABLE_MAX2771 AND NOT ENABLE_FPGA) + message(STATUS "The SPIdev driver is enabled, but the FPGA is not enabled. The FPGA is required when using the SPIdev driver.") + if(ENABLE_PACKAGING) + set(ENABLE_MAX2771 OFF) + else() + message(FATAL_ERROR "ENABLE_MAX2771 can only be set when ENABLE_FPGA is also set.") + endif() +endif() +if(ENABLE_DMA_PROXY AND NOT ENABLE_FPGA) + message(STATUS "The DMA Proxy driver is enabled, but the FPGA is not enabled. The FPGA is required when using the DMA Proxy driver.") + if(ENABLE_PACKAGING) + set(ENABLE_DMA_PROXY OFF) + else() + message(FATAL_ERROR "ENABLE_DMA_PROXY can only be set when ENABLE_FPGA is also set.") + endif() +endif() + + + +##################################################################### +# spidev driver - OPTIONAL +# Linux kernel driver that provides user-space access to Serial +# Peripheral Interface) +##################################################################### +if(ENABLE_MAX2771) + if(DEFINED ENV{SDKTARGETSYSROOT}) + set(TARGET_ROOTFS_PATH $ENV{SDKTARGETSYSROOT}) + else() + string(REGEX MATCH "(.*/tmp-glibc)" MATCHED_PATH "${GNURADIO_RUNTIME_INCLUDE_DIRS}") + if(MATCHED_PATH) + set(TARGET_ROOTFS_PATH "${MATCHED_PATH}/sysroots-components") + else() + set(TARGET_ROOTFS_PATH "") + endif() + endif() + file(GLOB_RECURSE SPIDEV_FILE "${TARGET_ROOTFS_PATH}/*/spidev.h") + if(EXISTS "${SPIDEV_FILE}") + message(STATUS "SPIdev driver found: ${SPIDEV_FILE}") + set(ENABLE_FPGA ON) + else() + message(STATUS "SPIdev driver not found, its installation is required.") + if(ENABLE_PACKAGING) + set(ENABLE_MAX2771 OFF) + else() + message(FATAL_ERROR "SPIdev driver is required for building gnss-sdr with -DENABLE_MAX2271=ON.") + endif() + endif() +endif() + + + +##################################################################### +# DMA Proxy driver - OPTIONAL +# Simplified and efficient interface for user-space applications +# to leverage DMA capabilities for Xilinx FPGA and SoC systems +##################################################################### +if(ENABLE_DMA_PROXY) + if(DEFINED ENV{SDKTARGETSYSROOT}) + set(TARGET_ROOTFS_PATH $ENV{SDKTARGETSYSROOT}) + else() + string(REGEX MATCH "(.*/tmp-glibc)" MATCHED_PATH "${GNURADIO_RUNTIME_INCLUDE_DIRS}") + if(MATCHED_PATH) + set(TARGET_ROOTFS_PATH "${MATCHED_PATH}/sysroots-components") + else() + set(TARGET_ROOTFS_PATH "") + endif() + endif() + file(GLOB_RECURSE DMA_PROXY_FILE "${TARGET_ROOTFS_PATH}/*/dma-proxy.ko") + if(EXISTS "${DMA_PROXY_FILE}") + message(STATUS "Found dma-proxy.ko file: ${DMA_PROXY_FILE}") + set(ENABLE_FPGA ON) + else() + if(ENABLE_PACKAGING) + set(ENABLE_DMA_PROXY OFF) + else() + message(FATAL_ERROR "DMA Proxy driver is required for building gnss-sdr with -DENABLE_DMA_PROXY=ON.") + endif() + endif() +endif() + + + +############################################## +# TELEORBIT FLEXIBAND FRONTEND - OPTIONAL +############################################## +if(DEFINED ENV{FLEXIBAND_DRIVER}) + message(STATUS "FLEXIBAND_DRIVER environment variable found.") set(ENABLE_FLEXIBAND ON) -endif($ENV{FLEXIBAND_DRIVER}) +endif() if(FLEXIBAND_DRIVER) set(ENABLE_FLEXIBAND ON) -endif(FLEXIBAND_DRIVER) - -if(ENABLE_FLEXIBAND) - message(STATUS "CTTC's Antenna Array front-end driver will be compiled." ) - message(STATUS "You can disable it with 'cmake -DENABLE_FLEXIBAND=OFF ../'" ) -else(ENABLE_FLEXIBAND) - message(STATUS "The (optional) Teleorbit Flexiband front-end driver adapter is not enabled." ) - message(STATUS "Enable it with 'cmake -DENABLE_FLEXIBAND=ON ../' to add support for the Teleorbit Flexiband front-end." ) -endif(ENABLE_FLEXIBAND) - -######################################################################## -# Set compiler flags -######################################################################## - -# Enable C++11 support in GCC -# For "-std=c++0x" GCC's support for C++11 see http://gcc.gnu.org/projects/cxx0x.html -if(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) - set(MY_CXX_FLAGS "${MY_CXX_FLAGS} -std=c++11 -Wall -Wextra") #Add warning flags: For "-Wall" see http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html -endif(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) -if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(MY_CXX_FLAGS "${MY_CXX_FLAGS} -std=c++11 -stdlib=libc++ -Wno-c++11-narrowing") - if(CMAKE_BUILD_TYPE MATCHES "Release") - set(MY_CXX_FLAGS "${MY_CXX_FLAGS} -Wno-unused-private-field") - endif(CMAKE_BUILD_TYPE MATCHES "Release") -endif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - -# Processor-architecture related flags -# See http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options -if (NOT ARCH_COMPILER_FLAGS) - if(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) - if(OS_IS_MACOSX) - set(ARCH_COMPILER_FLAGS "-march=corei7 -mfpmath=sse") - else(OS_IS_MACOSX) - if(NOT ${ENABLE_GENERIC_ARCH}) - if(IS_ARM) # ARM-specific options (https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html) - if(ARM_VERSION STREQUAL "arm") - # Unknown arm version - try our best to detect - set(ARCH_COMPILER_FLAGS "-mcpu=native") - else(ARM_VERSION STREQUAL "arm") - set(ARCH_COMPILER_FLAGS "-march=${ARM_VERSION}") - endif(ARM_VERSION STREQUAL "arm") - else(IS_ARM) - set(ARCH_COMPILER_FLAGS "-march=native -mfpmath=sse") - endif(IS_ARM) - endif(NOT ${ENABLE_GENERIC_ARCH}) - endif(OS_IS_MACOSX) - endif(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) -endif (NOT ARCH_COMPILER_FLAGS) -set(MY_CXX_FLAGS "${MY_CXX_FLAGS} ${ARCH_COMPILER_FLAGS}") - -if(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) - #http://gcc.gnu.org/wiki/Visibility - add_definitions(-fvisibility=hidden) endif() +if(ENABLE_FLEXIBAND) + message(STATUS "The Teleorbit Flexiband front-end source will be compiled.") + message(STATUS " You can disable it with 'cmake -DENABLE_FLEXIBAND=OFF ..'") +else() + message(STATUS "The (optional) Teleorbit Flexiband front-end driver adapter is not enabled.") + message(STATUS " Enable it with 'cmake -DENABLE_FLEXIBAND=ON ..' to add support for the Teleorbit Flexiband front-end.") +endif() +find_package(TELEORBIT) +set_package_properties(TELEORBIT PROPERTIES + PURPOSE "Used for communication with the Flexiband front-end." + TYPE OPTIONAL +) +if(ENABLE_FLEXIBAND) + if(NOT TELEORBIT_FOUND) + message(FATAL_ERROR "Teleorbit Flexiband GNU Radio driver required to build gnss-sdr with the optional FLEXIBAND adapter") + endif() +endif() + + + +####################################################### +# CTTC's digital array beamformer prototype - OPTIONAL +####################################################### +if(DEFINED ENV{RAW_ARRAY_DRIVER}) + message(STATUS "RAW_ARRAY_DRIVER environment variable found.") + set(ENABLE_ARRAY ON) +endif() + +if(RAW_ARRAY_DRIVER) + set(ENABLE_ARRAY ON) +endif() + +find_package(GRDBFCTTC QUIET) +set_package_properties(GRDBFCTTC PROPERTIES + URL "https://github.com/gnss-sdr/gr-dbfcttcs" + DESCRIPTION "CTTC's array prototype GNU Radio block." + PURPOSE "Used for communication with CTTC's antenna array." + TYPE OPTIONAL +) +if(ENABLE_ARRAY) + message(STATUS "CTTC's Antenna Array front-end driver will be compiled.") + message(STATUS " You can disable it with 'cmake -DENABLE_ARRAY=OFF ..'") +else() + message(STATUS "The (optional) CTTC's Antenna Array front-end driver is not enabled.") + message(STATUS " Enable it with 'cmake -DENABLE_ARRAY=ON ..' to add support for the CTTC experimental array front-end.") +endif() + + + +################################################################################ +# GPerftools - https://github.com/gperftools/gperftools - OPTIONAL) +################################################################################ +find_package(GPERFTOOLS) +set_package_properties(GPERFTOOLS PROPERTIES + PURPOSE "Used for performance analysis." + TYPE OPTIONAL +) if(ENABLE_GPERFTOOLS) + if(NOT GPERFTOOLS_FOUND) + message(STATUS "Although ENABLE_GPERFTOOLS has been set to ON, GPerftools has not been found.") + message(STATUS " Binaries will be compiled without 'tcmalloc' and 'profiler' libraries.") + message(STATUS " You can install GPerftools from https://github.com/gperftools/gperftools") + else() + message(STATUS "GPerftools libraries found.") + message(STATUS " Binaries will be compiled with 'tcmalloc' and 'profiler' libraries.") + endif() # Set GPerftools related flags if it is available - # See http://gperftools.googlecode.com/svn/trunk/README + # See https://github.com/gperftools/gperftools/blob/master/README if(GPERFTOOLS_FOUND) - if(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) - set(MY_CXX_FLAGS "${MY_CXX_FLAGS} -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free") - endif(CMAKE_COMPILER_IS_GNUCXX AND NOT WIN32) + if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32) + add_compile_options(-fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free) + endif() if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(MY_CXX_FLAGS "${MY_CXX_FLAGS} -fno-builtin") - endif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - endif(GPERFTOOLS_FOUND) -endif(ENABLE_GPERFTOOLS) + add_compile_options(-fno-builtin) + endif() + endif() +endif() + + +################################################################################ +# GNU gprof (OPTIONAL) - https://sourceware.org/binutils/docs/gprof/ +################################################################################ if(ENABLE_GPROF) - #if(CMAKE_COMPILER_IS_GNUCXX) - set(MY_CXX_FLAGS "${MY_CXX_FLAGS} -pg") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg") - #endif(CMAKE_COMPILER_IS_GNUCXX) -endif(ENABLE_GPROF) + add_compile_options(-pg) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pg") +endif() -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_CXX_FLAGS}") -if(OS_IS_LINUX) - if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "openSUSE") - link_libraries(pthread) - endif(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "openSUSE") -endif(OS_IS_LINUX) +################################################################################ +# Set compiler flags +################################################################################ +set(CXX_WARNING_FLAGS -Wall -Wextra) +if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND NOT WIN32) + # Add warning flags + # For "-Wall" see https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html + if(NOT (CMAKE_VERSION VERSION_LESS "3.3")) + add_compile_options("$<$:${CXX_WARNING_FLAGS}>") + else() + add_compile_options("$<$,CXX>:${CXX_WARNING_FLAGS}>") + endif() + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.0") + add_compile_options(-Wno-missing-field-initializers) + endif() + if(CMAKE_CROSSCOMPILING OR NOT ENABLE_PACKAGING) + if(NOT ENABLE_CUDA) + add_compile_options(-Wno-psabi) + endif() + endif() + if(IS_ARM) + if((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "7.1.0") AND (CMAKE_VERSION VERSION_GREATER "3.1")) + if(CMAKE_CXX_STANDARD VERSION_LESS 17) + set(CXX_ALIGN_FLAG -faligned-new) + if(NOT (CMAKE_VERSION VERSION_LESS "3.3")) + add_compile_options("$<$:${CXX_ALIGN_FLAG}>") + else() + add_compile_options("$<$,CXX>:${CXX_ALIGN_FLAG}>") + endif() + endif() + endif() + endif() +endif() +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + if(NOT (CMAKE_VERSION VERSION_LESS "3.3")) + add_compile_options("$<$:${CXX_WARNING_FLAGS}>") + else() + add_compile_options("$<$,CXX>:${CXX_WARNING_FLAGS}>") + endif() +endif() -######################################################################## + +################################################################################ +# clang-tidy https://clang.llvm.org/extra/clang-tidy/index.html +################################################################################ +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + if(NOT (CMAKE_VERSION VERSION_LESS "3.6")) + find_program( + CLANG_TIDY_EXE + NAMES "clang-tidy" + DOC "Path to clang-tidy executable" + ) + if(NOT CLANG_TIDY_EXE) + message(STATUS "clang-tidy not found.") + else() + message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}") + if(ENABLE_CLANG_TIDY) + message(STATUS " clang-tidy will be used in compilation. You can disable it with 'cmake -DENABLE_CLANG_TIDY=OFF ..'") + else() + message(STATUS " You can enable clang-tidy usage in compilation with 'cmake -DENABLE_CLANG_TIDY=ON ..'") + endif() + set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-fix") + set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + endif() + endif() +endif() + + + +################################################################################ # Create uninstall target -######################################################################## +################################################################################ configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake - @ONLY) + ${GNSSSDR_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in + ${GNSSSDR_BINARY_DIR}/cmake_uninstall.cmake + @ONLY +) add_custom_target(uninstall - COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) + COMMAND ${CMAKE_COMMAND} -P ${GNSSSDR_BINARY_DIR}/cmake_uninstall.cmake +) -######################################################################## -# Add subdirectories (in order of deps) -######################################################################## + + +################################################################################ +# Add subdirectories +################################################################################ add_subdirectory(src) +if(ENABLE_UNIT_TESTING OR ENABLE_SYSTEM_TESTING) + add_subdirectory(tests) +endif() +add_subdirectory(utils) -if(ENABLE_PACKAGING) - include(GnssSdrPackaging) -endif(ENABLE_PACKAGING) + + +################################################################################ +# Print summary +################################################################################ +add_feature_info(ENABLE_UHD ENABLE_UHD "Enables UHD_Signal_Source for using RF front-ends from the USRP family. Requires gr-uhd.") +add_feature_info(ENABLE_OSMOSDR ENABLE_OSMOSDR "Enables Osmosdr_Signal_Source and RtlTcp_Signal_Source for using RF front-ends compatible with the OsmoSDR driver. Requires gr-osmosdr.") +add_feature_info(ENABLE_LIMESDR ENABLE_LIMESDR "Enables Limesdr_Signal_Source. Requires gr-limesdr.") +add_feature_info(ENABLE_FMCOMMS2 ENABLE_FMCOMMS2 "Enables Fmcomms2_Signal_Source for FMCOMMS2/3/4 devices. Requires libiio, libad9361-dev, and gr-iio.") +add_feature_info(ENABLE_PLUTOSDR ENABLE_PLUTOSDR "Enables Plutosdr_Signal_Source and Ad936x_Custom_Signal_Source for using ADALM-PLUTO boards. Requires libiio, libad9361-dev, and gr-iio.") +add_feature_info(ENABLE_AD936X_SDR ENABLE_AD936X_SDR "Enables Ad936x_Custom_Signal_Source for using ADALM-PLUTO boards with custom firmware. Requires libiio and libad9361-dev.") +add_feature_info(ENABLE_FPGA ENABLE_FPGA "Enables building of processing blocks for FPGA offloading.") +add_feature_info(ENABLE_AD9361 ENABLE_AD9361 "Enables ADRV9361_Z7035_Signal_Source_FPGA and the FMCOMMS5_Signal_Source_FPGA for FPGA SoC devices with the AD9361 chipset. Requires libiio, libad9361-dev, and -DENABLE_FPGA=ON.") +add_feature_info(ENABLE_MAX2771 ENABLE_MAX2771 "Enables FPGA_MAX2771_EVKIT_Signal_Source for FPGA SoC devices with the with the MAX2771 chipset. Requires the spidev driver and -DENABLE_FPGA=ON.") +add_feature_info(ENABLE_DMA_PROXY ENABLE_DMA_PROXY "Enables DMA_Signal_Source_FPGA for file post-processing in FPGA SoC devices. Requires the DMA Proxy driver and -DENABLE_FPGA=ON.") +add_feature_info(ENABLE_RAW_UDP ENABLE_RAW_UDP "Enables Custom_UDP_Signal_Source for custom UDP packet sample source. Requires libpcap.") +add_feature_info(ENABLE_FLEXIBAND ENABLE_FLEXIBAND "Enables Flexiband_Signal_Source for using Teleorbit's Flexiband RF front-end. Requires gr-teleorbit.") +add_feature_info(ENABLE_ARRAY ENABLE_ARRAY "Enables Raw_Array_Signal_Source and Array_Signal_Conditioner for using CTTC's antenna array. Requires gr-dbfcttc.") +add_feature_info(ENABLE_ZMQ ENABLE_ZMQ "Enables ZMQ_Signal_Source for GNU Radio ZeroMQ messages. Requires gr-zeromq.") +add_feature_info(ENABLE_ION ENABLE_ION "Enables ION_GSMS_Signal_Source for the ION Metadata Standard.") +add_feature_info(ENABLE_GPERFTOOLS ENABLE_GPERFTOOLS "Enables performance analysis. Requires Gperftools.") +add_feature_info(ENABLE_GPROF ENABLE_GPROF "Enables performance analysis with 'gprof'.") +add_feature_info(ENABLE_CLANG_TIDY ENABLE_CLANG_TIDY "Runs clang-tidy along with the compiler. Requires Clang.") +add_feature_info(ENABLE_PROFILING ENABLE_PROFILING "Runs volk_gnsssdr_profile at the end of the building.") +add_feature_info(ENABLE_OPENCL ENABLE_OPENCL "Enables GPS_L1_CA_PCPS_OpenCl_Acquisition (experimental). Requires OpenCL.") +add_feature_info(ENABLE_CUDA ENABLE_CUDA "Enables GPS_L1_CA_DLL_PLL_Tracking_GPU (experimental). Requires CUDA.") +add_feature_info(ENABLE_ARMA_NO_DEBUG ENABLE_ARMA_NO_DEBUG "Enables passing the ARMA_NO_DEBUG macro to Armadillo, hence disabling bound checking.") +add_feature_info(ENABLE_PACKAGING ENABLE_PACKAGING "Enables software packaging.") +add_feature_info(ENABLE_OWN_GLOG ENABLE_OWN_GLOG "Forces the downloading and building of Google glog.") +add_feature_info(ENABLE_GLOG_AND_GFLAGS ENABLE_GLOG_AND_GFLAGS "Forces the usage of Google glog and Gflags instead of Abseil.") +add_feature_info(ENABLE_OWN_ABSEIL ENABLE_OWN_ABSEIL "Forces downloading and building Abseil. Supersedes ENABLE_OWN_GLOG.") +add_feature_info(ENABLE_OWN_ARMADILLO ENABLE_OWN_ARMADILLO "Forces the downloading and building of Armadillo.") +add_feature_info(ENABLE_GNUTLS ENABLE_GNUTLS "Forces linking against GnuTLS instead of OpenSSL.") +add_feature_info(ENABLE_LOG ENABLE_LOG "Enables runtime internal logging.") +add_feature_info(ENABLE_ORC ENABLE_ORC "Use the Optimized Inner Loop Runtime Compiler (ORC) for building volk_gnsssdr.") +add_feature_info(ENABLE_STRIP ENABLE_STRIP "Enables the generation of stripped binaries (without debugging symbols).") +add_feature_info(ENABLE_UNIT_TESTING ENABLE_UNIT_TESTING "Enables building of Unit Tests.") +add_feature_info(ENABLE_UNIT_TESTING_MINIMAL ENABLE_UNIT_TESTING_MINIMAL "Enables building a minimal set of Unit Tests.") +add_feature_info(ENABLE_UNIT_TESTING_EXTRA ENABLE_UNIT_TESTING_EXTRA "Enables building of Extra Unit Tests and downloading of external data files.") +add_feature_info(ENABLE_SYSTEM_TESTING ENABLE_SYSTEM_TESTING "Enables building of System Tests.") +add_feature_info(ENABLE_SYSTEM_TESTING_EXTRA ENABLE_SYSTEM_TESTING_EXTRA "Enables building of Extra System Tests and downloading of external tools.") +add_feature_info(ENABLE_OWN_GNSSTK ENABLE_OWN_GNSSTK "Forces the downloading and building of gnsstk for system tests.") +add_feature_info(ENABLE_GNSS_SIM_INSTALL ENABLE_GNSS_SIM_INSTALL "Enables downloading and building of gnss-sim.") +add_feature_info(ENABLE_INSTALL_TESTS ENABLE_INSTALL_TESTS "Install test binaries when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} install'.") +add_feature_info(ENABLE_BENCHMARKS ENABLE_BENCHMARKS "Enables building of code snippet benchmarks.") +add_feature_info(ENABLE_EXTERNAL_MATHJAX ENABLE_EXTERNAL_MATHJAX "Use MathJax from an external CDN in HTML docs when doing '${CMAKE_MAKE_PROGRAM_PRETTY_NAME} doc'.") +add_feature_info(ENABLE_CPUFEATURES ENABLE_CPUFEATURES "Make use of the cpu_features library.") +add_feature_info(Boost_USE_STATIC_LIBS Boost_USE_STATIC_LIBS "Use Boost static libraries.") + +message(STATUS "") +message(STATUS "***************************************") +message(STATUS "* SUMMARY REPORT *") +message(STATUS "***************************************") +message(STATUS "") +if(CMAKE_CROSSCOMPILING) + message(STATUS "Cross-compiling on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR}") +else() + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + message(STATUS "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}") + endif() + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + message(STATUS "Building on ${MACOS_DISTRIBUTION}") + endif() +endif() +message(STATUS "CMake version: ${CMAKE_VERSION}") +message(STATUS "The CXX compiler identification is ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}. Standard: C++${CMAKE_CXX_STANDARD}.") +message(STATUS "The C compiler identification is ${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}. Standard: C${CMAKE_C_STANDARD}.") +if(CUDA_FOUND) + message(STATUS "The CUDA compiler identification is ${CMAKE_CUDA_COMPILER_ID} ${CMAKE_CUDA_COMPILER_VERSION}. Standard: C++${CMAKE_CUDA_STANDARD}.") +endif() +message(STATUS "") +file(REMOVE ${GNSSSDR_BINARY_DIR}/features.log) +file(WRITE ${GNSSSDR_BINARY_DIR}/features.log "**********************************\n") +file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "* BUILDING CONFIGURATION SUMMARY *\n") +file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "**********************************\n\n") +file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "GNSS-SDR version: ${VERSION}\n") +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + if(CMAKE_CROSSCOMPILING) + file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "Cross-compiling on ${LINUX_DISTRIBUTION} ${LINUX_VER} (${CMAKE_HOST_SYSTEM_PROCESSOR}) for ${CMAKE_SYSTEM_PROCESSOR}\n") + else() + file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "Building on GNU/Linux ${LINUX_DISTRIBUTION} ${LINUX_VER} ${ARCHITECTURE_STRING}\n") + endif() +endif() +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "Building on ${MACOS_DISTRIBUTION}\n") +endif() +file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "CMake version: ${CMAKE_VERSION}\n") +file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "The CXX compiler identification is ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}. Standard: C++${CMAKE_CXX_STANDARD}.\n") +file(APPEND ${GNSSSDR_BINARY_DIR}/features.log "The C compiler identification is ${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}. Standard: C${CMAKE_C_STANDARD}.\n\n") +if(CMAKE_VERSION VERSION_LESS 3.4) + feature_summary(WHAT ALL) + feature_summary(FILENAME ${GNSSSDR_BINARY_DIR}/features.log APPEND WHAT ALL) +else() + feature_summary(WHAT + REQUIRED_PACKAGES_FOUND + REQUIRED_PACKAGES_NOT_FOUND + OPTIONAL_PACKAGES_FOUND + OPTIONAL_PACKAGES_NOT_FOUND + ENABLED_FEATURES + DISABLED_FEATURES + ) + feature_summary(FILENAME ${GNSSSDR_BINARY_DIR}/features.log APPEND WHAT + REQUIRED_PACKAGES_FOUND + REQUIRED_PACKAGES_NOT_FOUND + OPTIONAL_PACKAGES_FOUND + OPTIONAL_PACKAGES_NOT_FOUND + ENABLED_FEATURES + DISABLED_FEATURES + ) +endif() +message(STATUS "GNSS-SDR v${VERSION} is ready to be built.") diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..0e7424f06 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,142 @@ + +[comment]: # ( +SPDX-License-Identifier: CC-BY-4.0 +) + +[comment]: # ( +SPDX-FileCopyrightText: 2017-2020 Carles Fernandez-Prades +) + + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +- Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +- The use of sexualized language or imagery, and sexual attention or advances of + any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, + without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +carles.fernandez@cttc.es All complaints will be reviewed and investigated +promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder][mozilla coc]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][faq]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[mozilla coc]: https://github.com/mozilla/diversity +[faq]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..4c0592295 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,207 @@ +# Contributing to GNSS-SDR + + +[comment]: # ( +SPDX-License-Identifier: GPL-3.0-or-later +) + +[comment]: # ( +SPDX-FileCopyrightText: 2011-2021 Carles Fernandez-Prades +) + + +:+1::tada: Thanks for taking the time to contribute! :tada::+1: + +Third-party contributions are essential for keeping GNSS-SDR continuously +improving. We simply cannot access the huge number of platforms and myriad +configurations for running GNSS-SDR. We want to keep it as easy as possible to +contribute changes that get things working in your environment. There are a few +guidelines that we need contributors to follow so that we can have a chance of +keeping on top of things. + +The following is a set of guidelines for contributing to GNSS-SDR, which is +hosted in the [GNSS-SDR Organization](https://github.com/gnss-sdr) on GitHub. +These are just guidelines, not rules. Use your best judgment, and feel free to +propose changes to this document in a +[pull request](#how-to-submit-a-pull-request). + +## Code of Conduct + +This project adheres to the Contributor Covenant +[code of conduct](CODE_OF_CONDUCT.md). By participating, you are expected to +uphold this code. Please report unacceptable behavior. + +## Reporting an issue + +Have you found a bug in the code which is not in the +[list of known bugs](https://github.com/gnss-sdr/gnss-sdr/issues)? Do you have a +suggestion for improvement? Then by all means please +[submit a new issue](https://github.com/gnss-sdr/gnss-sdr/issues/new), and do +not hesitate to comment on existing +[open issues](https://github.com/gnss-sdr/gnss-sdr/issues). + +When filling a new issue, please remember to: + +- **Use a clear and descriptive title** for the issue to identify the problem. + +- **Describe the exact steps which reproduce the problem** in as many details as + possible. For example, start by describing your computing platform (Operating + System and version, how did you installed GNSS-SDR and its dependencies, what + file or front-end are you using as a signal source, etc.). You can also + include the configuration file you are using, or a dump of the terminal output + you are getting. The more information you provide, the more chances to get + useful answers. + +- **Please be patient**. This organization is run on a volunteer basis, so it + can take some time to the Developer Team to reach your issue. They will do + their best to fix it as soon as possible. + +- If you opened an issue that is now solved, it is a good practice to **close + it**. + +The list of [open issues](https://github.com/gnss-sdr/gnss-sdr/issues) can be a +good starting point and a source of ideas if you are looking to contribute to +the source code. + +## Contributing to the source code + +### Preliminaries + +1. If you still have not done so, + [create your personal account on GitHub](https://github.com/join). + +2. [Fork GNSS-SDR from GitHub](https://github.com/gnss-sdr/gnss-sdr/fork). This + will copy the whole gnss-sdr repository to your personal account. + +3. Then, go to your favorite working folder in your computer and clone your + forked repository by typing (replacing `YOUR_USERNAME` by the actual + username of your GitHub account): + + $ git clone https://github.com/YOUR_USERNAME/gnss-sdr + +4. Your forked repository https://github.com/YOUR_USERNAME/gnss-sdr will + receive the default name of `origin`. You can also add the original gnss-sdr + repository, which is usually referred to as `upstream`: + + $ cd gnss-sdr + $ git remote add upstream https://github.com/gnss-sdr/gnss-sdr.git + +To verify the new upstream repository you have specified for your fork, type +`git remote -v`. You should see the URL for your fork as `origin`, and the URL +for the original repository as `upstream`: + +``` +$ git remote -v +origin https://github.com/YOUR_USERNAME/gnss-sdr.git (fetch) +origin https://github.com/YOUR_USERNAME/gnss-sdr.git (push) +upstream https://github.com/gnss-sdr/gnss-sdr.git (fetch) +upstream https://github.com/gnss-sdr/gnss-sdr.git (push) +``` + +### Start working on your contribution + +Checkout the `next` branch of the git repository in order to get synchronized +with the latest development code: + +``` +$ git checkout next +$ git pull upstream next +``` + +When start working in a new improvement, please **always** branch off from +`next`. Open a new branch and start working on it: + +``` +$ git checkout -b my_feature +``` + +Now you can do changes, add files, do commits (please take a look at +[how to write good commit messages](https://chris.beams.io/posts/git-commit/), +and do not forget to +[sign your commits](https://gnss-sdr.org/docs/tutorials/using-git/#sign-your-commits) +if you plan to submit your code to the upstream repository in a pull-request, +see below) and push them to your repository: + +``` +$ git push origin my_feature +``` + +If there have been new pushes to the `next` branch of the `upstream` repository +since the last time you pulled from it, you might want to put your commits on +top of them (this is mandatory for pull requests): + +``` +$ git pull --rebase upstream next +``` + +### How to submit a pull request + +Any code contributions going into GNSS-SDR will become part of a GPL-licensed, +open source repository. It is therefore imperative that code submissions belong +to the authors, and that submitters have the authority to merge that code into +the public GNSS-SDR codebase. + +For that purpose, we use the +[Developer's Certificate of Origin](https://github.com/gnss-sdr/gnss-sdr/blob/next/.github/DCO.txt). +It is the same document used by other projects. Signing the DCO states that +there are no legal reasons to not merge your code. + +To sign the DCO, suffix your git commits with a `Signed-off-by:` line. When +using the command line, you can use `git commit -s` to automatically add this +line. If there were multiple authors of the code, or other types of +stakeholders, make sure that all are listed, each with a separate +`Signed-off-by:` line. See +[how to sign commits](https://gnss-sdr.org/docs/tutorials/using-git/#sign-your-commits) +for details on how to tell Git to sign commits by default. + +Before submitting your code, please be sure to +[apply clang-format](https://gnss-sdr.org/coding-style/#use-tools-for-automated-code-formatting). + +When the contribution is ready, you can +[submit a pull request](https://github.com/gnss-sdr/gnss-sdr/compare/). Head to +your GitHub repository, switch to your `my_feature` branch, and click the +_**Pull Request**_ button, which will do all the work for you. Code comparison +must be always to the `next` branch. + +Once a pull request is sent, the Developer Team can review the set of changes, +discuss potential modifications, and even push follow-up commits if necessary. + +Some things that will increase the chance that your pull request is accepted: + +- Your commits must be signed. +- Avoid platform-dependent code. If your code require external dependencies, + they must be available as packages in + [Debian OldStable](https://wiki.debian.org/DebianOldStable). +- Write tests. +- Follow our [coding style guide](https://gnss-sdr.org/coding-style/). + Specifically, please make sure that you have applied + [clang-format](https://clang.llvm.org/docs/ClangFormat.html) and + [clang-tidy](https://clang.llvm.org/extra/clang-tidy/) to your changes before + you do your pull request. Please check the + [final recommendations](https://gnss-sdr.org/coding-style/#final-recommendations) + for guidelines on how to apply those tools. +- Write a descriptive and detailed summary. Please consider that reviewing pull + requests is hard, so include as much information as possible to make your pull + request's intent clear. + +For more details about Git usage, please check out +[our tutorial](https://gnss-sdr.org/docs/tutorials/using-git/). + +## Contributing to the website + +The content of https://gnss-sdr.org lives in a GitHub repository at +https://github.com/gnss-sdr/geniuss-place + +You can fork that repository, reproduce the entire website on your computer +using [Jekyll](https://jekyllrb.com/), do changes and submit pull requests, just +as explained above. For more details, please check out +[how to contribute](https://gnss-sdr.org/contribute/). + +Last but not the least, you can leave your comments on the website. + +--- + +![GeNiuSS +contributes](https://gnss-sdr.org/assets/images/geniuss-contribute.png) + +Thanks for your contribution to GNSS-SDR! diff --git a/COPYING b/COPYING index 818433ecc..8859f3d09 100644 --- a/COPYING +++ b/COPYING @@ -1,7 +1,7 @@ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found. GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. @@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see -. +. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. +. diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt new file mode 100644 index 000000000..4ed90b952 --- /dev/null +++ b/LICENSES/Apache-2.0.txt @@ -0,0 +1,208 @@ +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, +AND DISTRIBUTION + + 1. Definitions. + + + +"License" shall mean the terms and conditions for use, reproduction, and distribution +as defined by Sections 1 through 9 of this document. + + + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + + + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct +or indirect, to cause the direction or management of such entity, whether +by contract or otherwise, or (ii) ownership of fifty percent (50%) or more +of the outstanding shares, or (iii) beneficial ownership of such entity. + + + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions +granted by this License. + + + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + + + +"Object" form shall mean any form resulting from mechanical transformation +or translation of a Source form, including but not limited to compiled object +code, generated documentation, and conversions to other media types. + + + +"Work" shall mean the work of authorship, whether in Source or Object form, +made available under the License, as indicated by a copyright notice that +is included in or attached to the work (an example is provided in the Appendix +below). + + + +"Derivative Works" shall mean any work, whether in Source or Object form, +that is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative +Works shall not include works that remain separable from, or merely link (or +bind by name) to the interfaces of, the Work and Derivative Works thereof. + + + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative +Works thereof, that is intentionally submitted to Licensor for inclusion in +the Work by the copyright owner or by an individual or Legal Entity authorized +to submit on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication +sent to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor +for the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + + + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently incorporated +within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this +License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable copyright license to reproduce, prepare +Derivative Works of, publicly display, publicly perform, sublicense, and distribute +the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, +each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) patent +license to make, have made, use, offer to sell, sell, import, and otherwise +transfer the Work, where such license applies only to those patent claims +licensable by such Contributor that are necessarily infringed by their Contribution(s) +alone or by combination of their Contribution(s) with the Work to which such +Contribution(s) was submitted. If You institute patent litigation against +any entity (including a cross-claim or counterclaim in a lawsuit) alleging +that the Work or a Contribution incorporated within the Work constitutes direct +or contributory patent infringement, then any patent licenses granted to You +under this License for that Work shall terminate as of the date such litigation +is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or +Derivative Works thereof in any medium, with or without modifications, and +in Source or Object form, provided that You meet the following conditions: + +(a) You must give any other recipients of the Work or Derivative Works a copy +of this License; and + +(b) You must cause any modified files to carry prominent notices stating that +You changed the files; and + +(c) You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source +form of the Work, excluding those notices that do not pertain to any part +of the Derivative Works; and + +(d) If the Work includes a "NOTICE" text file as part of its distribution, +then any Derivative Works that You distribute must include a readable copy +of the attribution notices contained within such NOTICE file, excluding those +notices that do not pertain to any part of the Derivative Works, in at least +one of the following places: within a NOTICE text file distributed as part +of the Derivative Works; within the Source form or documentation, if provided +along with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents +of the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works +that You distribute, alongside or as an addendum to the NOTICE text from the +Work, provided that such additional attribution notices cannot be construed +as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, +or distribution of Your modifications, or for any such Derivative Works as +a whole, provided Your use, reproduction, and distribution of the Work otherwise +complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any +Contribution intentionally submitted for inclusion in the Work by You to the +Licensor shall be under the terms and conditions of this License, without +any additional terms or conditions. Notwithstanding the above, nothing herein +shall supersede or modify the terms of any separate license agreement you +may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, +trademarks, service marks, or product names of the Licensor, except as required +for reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to +in writing, Licensor provides the Work (and each Contributor provides its +Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied, including, without limitation, any warranties +or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR +A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness +of using or redistributing the Work and assume any risks associated with Your +exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether +in tort (including negligence), contract, or otherwise, unless required by +applicable law (such as deliberate and grossly negligent acts) or agreed to +in writing, shall any Contributor be liable to You for damages, including +any direct, indirect, special, incidental, or consequential damages of any +character arising as a result of this License or out of the use or inability +to use the Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all other commercial +damages or losses), even if such Contributor has been advised of the possibility +of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work +or Derivative Works thereof, You may choose to offer, and charge a fee for, +acceptance of support, warranty, indemnity, or other liability obligations +and/or rights consistent with this License. However, in accepting such obligations, +You may act only on Your own behalf and on Your sole responsibility, not on +behalf of any other Contributor, and only if You agree to indemnify, defend, +and hold each Contributor harmless for any liability incurred by, or claims +asserted against, such Contributor by reason of your accepting any such warranty +or additional liability. END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own identifying +information. (Don't include the brackets!) The text should be enclosed in +the appropriate comment syntax for the file format. We also recommend that +a file or class name and description of purpose be included on the same "printed +page" as the copyright notice for easier identification within third-party +archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); + +you may not use this file except in compliance with the License. + +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software + +distributed under the License is distributed on an "AS IS" BASIS, + +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +See the License for the specific language governing permissions and + +limitations under the License. diff --git a/LICENSES/BSD-1-Clause.txt b/LICENSES/BSD-1-Clause.txt new file mode 100644 index 000000000..54ad9dca8 --- /dev/null +++ b/LICENSES/BSD-1-Clause.txt @@ -0,0 +1,18 @@ +Copyright (c) All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + +THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. "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 Berkeley Software Design, Inc. 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. diff --git a/LICENSES/BSD-2-Clause.txt b/LICENSES/BSD-2-Clause.txt new file mode 100644 index 000000000..2d2bab112 --- /dev/null +++ b/LICENSES/BSD-2-Clause.txt @@ -0,0 +1,22 @@ +Copyright (c) . All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + +2. 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. + +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 HOLDER 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. diff --git a/LICENSES/BSD-3-Clause.txt b/LICENSES/BSD-3-Clause.txt new file mode 100644 index 000000000..0741db789 --- /dev/null +++ b/LICENSES/BSD-3-Clause.txt @@ -0,0 +1,26 @@ +Copyright (c) . All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + +2. 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. + +3. Neither the name of the copyright holder 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 HOLDER 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. diff --git a/LICENSES/CC-BY-4.0.txt b/LICENSES/CC-BY-4.0.txt new file mode 100644 index 000000000..3f92dfc5f --- /dev/null +++ b/LICENSES/CC-BY-4.0.txt @@ -0,0 +1,324 @@ +Creative Commons Attribution 4.0 International Creative Commons Corporation +("Creative Commons") is not a law firm and does not provide legal services +or legal advice. Distribution of Creative Commons public licenses does not +create a lawyer-client or other relationship. Creative Commons makes its licenses +and related information available on an "as-is" basis. Creative Commons gives +no warranties regarding its licenses, any material licensed under their terms +and conditions, or any related information. Creative Commons disclaims all +liability for damages resulting from their use to the fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and conditions +that creators and other rights holders may use to share original works of +authorship and other material subject to copyright and certain other rights +specified in the public license below. The following considerations are for +informational purposes only, are not exhaustive, and do not form part of our +licenses. + +Considerations for licensors: Our public licenses are intended for use by +those authorized to give the public permission to use material in ways otherwise +restricted by copyright and certain other rights. Our licenses are irrevocable. +Licensors should read and understand the terms and conditions of the license +they choose before applying it. Licensors should also secure all rights necessary +before applying our licenses so that the public can reuse the material as +expected. Licensors should clearly mark any material not subject to the license. +This includes other CC-licensed material, or material used under an exception +or limitation to copyright. More considerations for licensors : wiki.creativecommons.org/Considerations_for_licensors + +Considerations for the public: By using one of our public licenses, a licensor +grants the public permission to use the licensed material under specified +terms and conditions. If the licensor's permission is not necessary for any +reason–for example, because of any applicable exception or limitation to copyright–then +that use is not regulated by the license. Our licenses grant only permissions +under copyright and certain other rights that a licensor has authority to +grant. Use of the licensed material may still be restricted for other reasons, +including because others have copyright or other rights in the material. A +licensor may make special requests, such as asking that all changes be marked +or described. Although not required by our licenses, you are encouraged to +respect those requests where reasonable. More considerations for the public +: wiki.creativecommons.org/Considerations_for_licensees Creative Commons Attribution +4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to +be bound by the terms and conditions of this Creative Commons Attribution +4.0 International Public License ("Public License"). To the extent this Public +License may be interpreted as a contract, You are granted the Licensed Rights +in consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the Licensor +receives from making the Licensed Material available under these terms and +conditions. + +Section 1 – Definitions. + +a. Adapted Material means material subject to Copyright and Similar Rights +that is derived from or based upon the Licensed Material and in which the +Licensed Material is translated, altered, arranged, transformed, or otherwise +modified in a manner requiring permission under the Copyright and Similar +Rights held by the Licensor. For purposes of this Public License, where the +Licensed Material is a musical work, performance, or sound recording, Adapted +Material is always produced where the Licensed Material is synched in timed +relation with a moving image. + +b. Adapter's License means the license You apply to Your Copyright and Similar +Rights in Your contributions to Adapted Material in accordance with the terms +and conditions of this Public License. + +c. Copyright and Similar Rights means copyright and/or similar rights closely +related to copyright including, without limitation, performance, broadcast, +sound recording, and Sui Generis Database Rights, without regard to how the +rights are labeled or categorized. For purposes of this Public License, the +rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + +d. Effective Technological Measures means those measures that, in the absence +of proper authority, may not be circumvented under laws fulfilling obligations +under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, +and/or similar international agreements. + +e. Exceptions and Limitations means fair use, fair dealing, and/or any other +exception or limitation to Copyright and Similar Rights that applies to Your +use of the Licensed Material. + +f. Licensed Material means the artistic or literary work, database, or other +material to which the Licensor applied this Public License. + +g. Licensed Rights means the rights granted to You subject to the terms and +conditions of this Public License, which are limited to all Copyright and +Similar Rights that apply to Your use of the Licensed Material and that the +Licensor has authority to license. + +h. Licensor means the individual(s) or entity(ies) granting rights under this +Public License. + +i. Share means to provide material to the public by any means or process that +requires permission under the Licensed Rights, such as reproduction, public +display, public performance, distribution, dissemination, communication, or +importation, and to make material available to the public including in ways +that members of the public may access the material from a place and at a time +individually chosen by them. + +j. Sui Generis Database Rights means rights other than copyright resulting +from Directive 96/9/EC of the European Parliament and of the Council of 11 +March 1996 on the legal protection of databases, as amended and/or succeeded, +as well as other essentially equivalent rights anywhere in the world. + +k. You means the individual or entity exercising the Licensed Rights under +this Public License. Your has a corresponding meaning. + +Section 2 – Scope. + + a. License grant. + +1. Subject to the terms and conditions of this Public License, the Licensor +hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, +irrevocable license to exercise the Licensed Rights in the Licensed Material +to: + + A. reproduce and Share the Licensed Material, in whole or in part; and + + B. produce, reproduce, and Share Adapted Material. + +2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions +and Limitations apply to Your use, this Public License does not apply, and +You do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + +4. Media and formats; technical modifications allowed. The Licensor authorizes +You to exercise the Licensed Rights in all media and formats whether now known +or hereafter created, and to make technical modifications necessary to do +so. The Licensor waives and/or agrees not to assert any right or authority +to forbid You from making technical modifications necessary to exercise the +Licensed Rights, including technical modifications necessary to circumvent +Effective Technological Measures. For purposes of this Public License, simply +making modifications authorized by this Section 2(a)(4) never produces Adapted +Material. + + 5. Downstream recipients. + +A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed +Material automatically receives an offer from the Licensor to exercise the +Licensed Rights under the terms and conditions of this Public License. + +B. No downstream restrictions. You may not offer or impose any additional +or different terms or conditions on, or apply any Effective Technological +Measures to, the Licensed Material if doing so restricts exercise of the Licensed +Rights by any recipient of the Licensed Material. + +6. No endorsement. Nothing in this Public License constitutes or may be construed +as permission to assert or imply that You are, or that Your use of the Licensed +Material is, connected with, or sponsored, endorsed, or granted official status +by, the Licensor or others designated to receive attribution as provided in +Section 3(a)(1)(A)(i). + + b. Other rights. + +1. Moral rights, such as the right of integrity, are not licensed under this +Public License, nor are publicity, privacy, and/or other similar personality +rights; however, to the extent possible, the Licensor waives and/or agrees +not to assert any such rights held by the Licensor to the limited extent necessary +to allow You to exercise the Licensed Rights, but not otherwise. + +2. Patent and trademark rights are not licensed under this Public License. + +3. To the extent possible, the Licensor waives any right to collect royalties +from You for the exercise of the Licensed Rights, whether directly or through +a collecting society under any voluntary or waivable statutory or compulsory +licensing scheme. In all other cases the Licensor expressly reserves any right +to collect such royalties. + +Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following +conditions. + + a. Attribution. + +1. If You Share the Licensed Material (including in modified form), You must: + +A. retain the following if it is supplied by the Licensor with the Licensed +Material: + +i. identification of the creator(s) of the Licensed Material and any others +designated to receive attribution, in any reasonable manner requested by the +Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + +v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + +B. indicate if You modified the Licensed Material and retain an indication +of any previous modifications; and + +C. indicate the Licensed Material is licensed under this Public License, and +include the text of, or the URI or hyperlink to, this Public License. + +2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner +based on the medium, means, and context in which You Share the Licensed Material. +For example, it may be reasonable to satisfy the conditions by providing a +URI or hyperlink to a resource that includes the required information. + +3. If requested by the Licensor, You must remove any of the information required +by Section 3(a)(1)(A) to the extent reasonably practicable. + +4. If You Share Adapted Material You produce, the Adapter's License You apply +must not prevent recipients of the Adapted Material from complying with this +Public License. + +Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to +Your use of the Licensed Material: + +a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, +reuse, reproduce, and Share all or a substantial portion of the contents of +the database; + +b. if You include all or a substantial portion of the database contents in +a database in which You have Sui Generis Database Rights, then the database +in which You have Sui Generis Database Rights (but not its individual contents) +is Adapted Material; and + +c. You must comply with the conditions in Section 3(a) if You Share all or +a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not replace +Your obligations under this Public License where the Licensed Rights include +other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. + +a. Unless otherwise separately undertaken by the Licensor, to the extent possible, +the Licensor offers the Licensed Material as-is and as-available, and makes +no representations or warranties of any kind concerning the Licensed Material, +whether express, implied, statutory, or other. This includes, without limitation, +warranties of title, merchantability, fitness for a particular purpose, non-infringement, +absence of latent or other defects, accuracy, or the presence or absence of +errors, whether or not known or discoverable. Where disclaimers of warranties +are not allowed in full or in part, this disclaimer may not apply to You. + +b. To the extent possible, in no event will the Licensor be liable to You +on any legal theory (including, without limitation, negligence) or otherwise +for any direct, special, indirect, incidental, consequential, punitive, exemplary, +or other losses, costs, expenses, or damages arising out of this Public License +or use of the Licensed Material, even if the Licensor has been advised of +the possibility of such losses, costs, expenses, or damages. Where a limitation +of liability is not allowed in full or in part, this limitation may not apply +to You. + +c. The disclaimer of warranties and limitation of liability provided above +shall be interpreted in a manner that, to the extent possible, most closely +approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. + +a. This Public License applies for the term of the Copyright and Similar Rights +licensed here. However, if You fail to comply with this Public License, then +Your rights under this Public License terminate automatically. + +b. Where Your right to use the Licensed Material has terminated under Section +6(a), it reinstates: + +1. automatically as of the date the violation is cured, provided it is cured +within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + +c. For the avoidance of doubt, this Section 6(b) does not affect any right +the Licensor may have to seek remedies for Your violations of this Public +License. + +d. For the avoidance of doubt, the Licensor may also offer the Licensed Material +under separate terms or conditions or stop distributing the Licensed Material +at any time; however, doing so will not terminate this Public License. + + e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. + +a. The Licensor shall not be bound by any additional or different terms or +conditions communicated by You unless expressly agreed. + +b. Any arrangements, understandings, or agreements regarding the Licensed +Material not stated herein are separate from and independent of the terms +and conditions of this Public License. + +Section 8 – Interpretation. + +a. For the avoidance of doubt, this Public License does not, and shall not +be interpreted to, reduce, limit, restrict, or impose conditions on any use +of the Licensed Material that could lawfully be made without permission under +this Public License. + +b. To the extent possible, if any provision of this Public License is deemed +unenforceable, it shall be automatically reformed to the minimum extent necessary +to make it enforceable. If the provision cannot be reformed, it shall be severed +from this Public License without affecting the enforceability of the remaining +terms and conditions. + +c. No term or condition of this Public License will be waived and no failure +to comply consented to unless expressly agreed to by the Licensor. + +d. Nothing in this Public License constitutes or may be interpreted as a limitation +upon, or waiver of, any privileges and immunities that apply to the Licensor +or You, including from the legal processes of any jurisdiction or authority. + +Creative Commons is not a party to its public licenses. Notwithstanding, Creative +Commons may elect to apply one of its public licenses to material it publishes +and in those instances will be considered the "Licensor." The text of the +Creative Commons public licenses is dedicated to the public domain under the +CC0 Public Domain Dedication. Except for the limited purpose of indicating +that material is shared under a Creative Commons public license or as otherwise +permitted by the Creative Commons policies published at creativecommons.org/policies, +Creative Commons does not authorize the use of the trademark "Creative Commons" +or any other trademark or logo of Creative Commons without its prior written +consent including, without limitation, in connection with any unauthorized +modifications to any of its public licenses or any other arrangements, understandings, +or agreements concerning use of licensed material. For the avoidance of doubt, +this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/LICENSES/GPL-3.0-or-later.txt b/LICENSES/GPL-3.0-or-later.txt new file mode 100644 index 000000000..e142a525b --- /dev/null +++ b/LICENSES/GPL-3.0-or-later.txt @@ -0,0 +1,625 @@ +GNU GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and +other kinds of works. + +The licenses for most software and other practical works are designed to take +away your freedom to share and change the works. By contrast, the GNU General +Public License is intended to guarantee your freedom to share and change all +versions of a program--to make sure it remains free software for all its users. +We, the Free Software Foundation, use the GNU General Public License for most +of our software; it applies also to any other work released this way by its +authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom +to distribute copies of free software (and charge for them if you wish), that +you receive source code or can get it if you want it, that you can change +the software or use pieces of it in new free programs, and that you know you +can do these things. + +To protect your rights, we need to prevent others from denying you these rights +or asking you to surrender the rights. Therefore, you have certain responsibilities +if you distribute copies of the software, or if you modify it: responsibilities +to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or +for a fee, you must pass on to the recipients the same freedoms that you received. +You must make sure that they, too, receive or can get the source code. And +you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert +copyright on the software, and (2) offer you this License giving you legal +permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that +there is no warranty for this free software. For both users' and authors' +sake, the GPL requires that modified versions be marked as changed, so that +their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified +versions of the software inside them, although the manufacturer can do so. +This is fundamentally incompatible with the aim of protecting users' freedom +to change the software. The systematic pattern of such abuse occurs in the +area of products for individuals to use, which is precisely where it is most +unacceptable. Therefore, we have designed this version of the GPL to prohibit +the practice for those products. If such problems arise substantially in other +domains, we stand ready to extend this provision to those domains in future +versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States +should not allow patents to restrict development and use of software on general-purpose +computers, but in those that do, we wish to avoid the special danger that +patents applied to a free program could make it effectively proprietary. To +prevent this, the GPL assures that patents cannot be used to render the program +non-free. + +The precise terms and conditions for copying, distribution and modification +follow. + +TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of works, +such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this License. +Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals +or organizations. + +To "modify" a work means to copy from or adapt all or part of the work in +a fashion requiring copyright permission, other than the making of an exact +copy. The resulting work is called a "modified version" of the earlier work +or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based on the +Program. + +To "propagate" a work means to do anything with it that, without permission, +would make you directly or secondarily liable for infringement under applicable +copyright law, except executing it on a computer or modifying a private copy. +Propagation includes copying, distribution (with or without modification), +making available to the public, and in some countries other activities as +well. + +To "convey" a work means any kind of propagation that enables other parties +to make or receive copies. Mere interaction with a user through a computer +network, with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" to the +extent that it includes a convenient and prominently visible feature that +(1) displays an appropriate copyright notice, and (2) tells the user that +there is no warranty for the work (except to the extent that warranties are +provided), that licensees may convey the work under this License, and how +to view a copy of this License. If the interface presents a list of user commands +or options, such as a menu, a prominent item in the list meets this criterion. + + 1. Source Code. + +The "source code" for a work means the preferred form of the work for making +modifications to it. "Object code" means any non-source form of a work. + +A "Standard Interface" means an interface that either is an official standard +defined by a recognized standards body, or, in the case of interfaces specified +for a particular programming language, one that is widely used among developers +working in that language. + +The "System Libraries" of an executable work include anything, other than +the work as a whole, that (a) is included in the normal form of packaging +a Major Component, but which is not part of that Major Component, and (b) +serves only to enable use of the work with that Major Component, or to implement +a Standard Interface for which an implementation is available to the public +in source code form. A "Major Component", in this context, means a major essential +component (kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to produce +the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all the source +code needed to generate, install, and (for an executable work) run the object +code and to modify the work, including scripts to control those activities. +However, it does not include the work's System Libraries, or general-purpose +tools or generally available free programs which are used unmodified in performing +those activities but which are not part of the work. For example, Corresponding +Source includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically linked +subprograms that the work is specifically designed to require, such as by +intimate data communication or control flow between those subprograms and +other parts of the work. + +The Corresponding Source need not include anything that users can regenerate +automatically from other parts of the Corresponding Source. + + The Corresponding Source for a work in source code form is that same work. + + 2. Basic Permissions. + +All rights granted under this License are granted for the term of copyright +on the Program, and are irrevocable provided the stated conditions are met. +This License explicitly affirms your unlimited permission to run the unmodified +Program. The output from running a covered work is covered by this License +only if the output, given its content, constitutes a covered work. This License +acknowledges your rights of fair use or other equivalent, as provided by copyright +law. + +You may make, run and propagate covered works that you do not convey, without +conditions so long as your license otherwise remains in force. You may convey +covered works to others for the sole purpose of having them make modifications +exclusively for you, or provide you with facilities for running those works, +provided that you comply with the terms of this License in conveying all material +for which you do not control copyright. Those thus making or running the covered +works for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of your copyrighted +material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions +stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological measure +under any applicable law fulfilling obligations under article 11 of the WIPO +copyright treaty adopted on 20 December 1996, or similar laws prohibiting +or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention +of technological measures to the extent such circumvention is effected by +exercising rights under this License with respect to the covered work, and +you disclaim any intention to limit operation or modification of the work +as a means of enforcing, against the work's users, your or third parties' +legal rights to forbid circumvention of technological measures. + + 4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you receive +it, in any medium, provided that you conspicuously and appropriately publish +on each copy an appropriate copyright notice; keep intact all notices stating +that this License and any non-permissive terms added in accord with section +7 apply to the code; keep intact all notices of the absence of any warranty; +and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you +may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to produce +it from the Program, in the form of source code under the terms of section +4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified it, and +giving a relevant date. + +b) The work must carry prominent notices stating that it is released under +this License and any conditions added under section 7. This requirement modifies +the requirement in section 4 to "keep intact all notices". + +c) You must license the entire work, as a whole, under this License to anyone +who comes into possession of a copy. This License will therefore apply, along +with any applicable section 7 additional terms, to the whole of the work, +and all its parts, regardless of how they are packaged. This License gives +no permission to license the work in any other way, but it does not invalidate +such permission if you have separately received it. + +d) If the work has interactive user interfaces, each must display Appropriate +Legal Notices; however, if the Program has interactive interfaces that do +not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, +which are not by their nature extensions of the covered work, and which are +not combined with it such as to form a larger program, in or on a volume of +a storage or distribution medium, is called an "aggregate" if the compilation +and its resulting copyright are not used to limit the access or legal rights +of the compilation's users beyond what the individual works permit. Inclusion +of a covered work in an aggregate does not cause this License to apply to +the other parts of the aggregate. + + 6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of sections +4 and 5, provided that you also convey the machine-readable Corresponding +Source under the terms of this License, in one of these ways: + +a) Convey the object code in, or embodied in, a physical product (including +a physical distribution medium), accompanied by the Corresponding Source fixed +on a durable physical medium customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product (including +a physical distribution medium), accompanied by a written offer, valid for +at least three years and valid for as long as you offer spare parts or customer +support for that product model, to give anyone who possesses the object code +either (1) a copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical medium customarily +used for software interchange, for a price no more than your reasonable cost +of physically performing this conveying of source, or (2) access to copy the +Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the written +offer to provide the Corresponding Source. This alternative is allowed only +occasionally and noncommercially, and only if you received the object code +with such an offer, in accord with subsection 6b. + +d) Convey the object code by offering access from a designated place (gratis +or for a charge), and offer equivalent access to the Corresponding Source +in the same way through the same place at no further charge. You need not +require recipients to copy the Corresponding Source along with the object +code. If the place to copy the object code is a network server, the Corresponding +Source may be on a different server (operated by you or a third party) that +supports equivalent copying facilities, provided you maintain clear directions +next to the object code saying where to find the Corresponding Source. Regardless +of what server hosts the Corresponding Source, you remain obligated to ensure +that it is available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided you inform +other peers where the object code and Corresponding Source of the work are +being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from +the Corresponding Source as a System Library, need not be included in conveying +the object code work. + +A "User Product" is either (1) a "consumer product", which means any tangible +personal property which is normally used for personal, family, or household +purposes, or (2) anything designed or sold for incorporation into a dwelling. +In determining whether a product is a consumer product, doubtful cases shall +be resolved in favor of coverage. For a particular product received by a particular +user, "normally used" refers to a typical or common use of that class of product, +regardless of the status of the particular user or of the way in which the +particular user actually uses, or expects or is expected to use, the product. +A product is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent the +only significant mode of use of the product. + +"Installation Information" for a User Product means any methods, procedures, +authorization keys, or other information required to install and execute modified +versions of a covered work in that User Product from a modified version of +its Corresponding Source. The information must suffice to ensure that the +continued functioning of the modified object code is in no case prevented +or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically +for use in, a User Product, and the conveying occurs as part of a transaction +in which the right of possession and use of the User Product is transferred +to the recipient in perpetuity or for a fixed term (regardless of how the +transaction is characterized), the Corresponding Source conveyed under this +section must be accompanied by the Installation Information. But this requirement +does not apply if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has been installed +in ROM). + +The requirement to provide Installation Information does not include a requirement +to continue to provide support service, warranty, or updates for a work that +has been modified or installed by the recipient, or for the User Product in +which it has been modified or installed. Access to a network may be denied +when the modification itself materially and adversely affects the operation +of the network or violates the rules and protocols for communication across +the network. + +Corresponding Source conveyed, and Installation Information provided, in accord +with this section must be in a format that is publicly documented (and with +an implementation available to the public in source code form), and must require +no special password or key for unpacking, reading or copying. + + 7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this License +by making exceptions from one or more of its conditions. Additional permissions +that are applicable to the entire Program shall be treated as though they +were included in this License, to the extent that they are valid under applicable +law. If additional permissions apply only to part of the Program, that part +may be used separately under those permissions, but the entire Program remains +governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any +additional permissions from that copy, or from any part of it. (Additional +permissions may be written to require their own removal in certain cases when +you modify the work.) You may place additional permissions on material, added +by you to a covered work, for which you have or can give appropriate copyright +permission. + +Notwithstanding any other provision of this License, for material you add +to a covered work, you may (if authorized by the copyright holders of that +material) supplement the terms of this License with terms: + +a) Disclaiming warranty or limiting liability differently from the terms of +sections 15 and 16 of this License; or + +b) Requiring preservation of specified reasonable legal notices or author +attributions in that material or in the Appropriate Legal Notices displayed +by works containing it; or + +c) Prohibiting misrepresentation of the origin of that material, or requiring +that modified versions of such material be marked in reasonable ways as different +from the original version; or + +d) Limiting the use for publicity purposes of names of licensors or authors +of the material; or + +e) Declining to grant rights under trademark law for use of some trade names, +trademarks, or service marks; or + +f) Requiring indemnification of licensors and authors of that material by +anyone who conveys the material (or modified versions of it) with contractual +assumptions of liability to the recipient, for any liability that these contractual +assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered "further restrictions" +within the meaning of section 10. If the Program as you received it, or any +part of it, contains a notice stating that it is governed by this License +along with a term that is a further restriction, you may remove that term. +If a license document contains a further restriction but permits relicensing +or conveying under this License, you may add to a covered work material governed +by the terms of that license document, provided that the further restriction +does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, +in the relevant source files, a statement of the additional terms that apply +to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form +of a separately written license, or stated as exceptions; the above requirements +apply either way. + + 8. Termination. + +You may not propagate or modify a covered work except as expressly provided +under this License. Any attempt otherwise to propagate or modify it is void, +and will automatically terminate your rights under this License (including +any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from +a particular copyright holder is reinstated (a) provisionally, unless and +until the copyright holder explicitly and finally terminates your license, +and (b) permanently, if the copyright holder fails to notify you of the violation +by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently +if the copyright holder notifies you of the violation by some reasonable means, +this is the first time you have received notice of violation of this License +(for any work) from that copyright holder, and you cure the violation prior +to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses +of parties who have received copies or rights from you under this License. +If your rights have been terminated and not permanently reinstated, you do +not qualify to receive new licenses for the same material under section 10. + + 9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run a copy +of the Program. Ancillary propagation of a covered work occurring solely as +a consequence of using peer-to-peer transmission to receive a copy likewise +does not require acceptance. However, nothing other than this License grants +you permission to propagate or modify any covered work. These actions infringe +copyright if you do not accept this License. Therefore, by modifying or propagating +a covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically receives +a license from the original licensors, to run, modify and propagate that work, +subject to this License. You are not responsible for enforcing compliance +by third parties with this License. + +An "entity transaction" is a transaction transferring control of an organization, +or substantially all assets of one, or subdividing an organization, or merging +organizations. If propagation of a covered work results from an entity transaction, +each party to that transaction who receives a copy of the work also receives +whatever licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the Corresponding +Source of the work from the predecessor in interest, if the predecessor has +it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights +granted or affirmed under this License. For example, you may not impose a +license fee, royalty, or other charge for exercise of rights granted under +this License, and you may not initiate litigation (including a cross-claim +or counterclaim in a lawsuit) alleging that any patent claim is infringed +by making, using, selling, offering for sale, or importing the Program or +any portion of it. + + 11. Patents. + +A "contributor" is a copyright holder who authorizes use under this License +of the Program or a work on which the Program is based. The work thus licensed +is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims owned or controlled +by the contributor, whether already acquired or hereafter acquired, that would +be infringed by some manner, permitted by this License, of making, using, +or selling its contributor version, but do not include claims that would be +infringed only as a consequence of further modification of the contributor +version. For purposes of this definition, "control" includes the right to +grant patent sublicenses in a manner consistent with the requirements of this +License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent +license under the contributor's essential patent claims, to make, use, sell, +offer for sale, import and otherwise run, modify and propagate the contents +of its contributor version. + +In the following three paragraphs, a "patent license" is any express agreement +or commitment, however denominated, not to enforce a patent (such as an express +permission to practice a patent or covenant not to sue for patent infringement). +To "grant" such a patent license to a party means to make such an agreement +or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the +Corresponding Source of the work is not available for anyone to copy, free +of charge and under the terms of this License, through a publicly available +network server or other readily accessible means, then you must either (1) +cause the Corresponding Source to be so available, or (2) arrange to deprive +yourself of the benefit of the patent license for this particular work, or +(3) arrange, in a manner consistent with the requirements of this License, +to extend the patent license to downstream recipients. "Knowingly relying" +means you have actual knowledge that, but for the patent license, your conveying +the covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that country +that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, +you convey, or propagate by procuring conveyance of, a covered work, and grant +a patent license to some of the parties receiving the covered work authorizing +them to use, propagate, modify or convey a specific copy of the covered work, +then the patent license you grant is automatically extended to all recipients +of the covered work and works based on it. + +A patent license is "discriminatory" if it does not include within the scope +of its coverage, prohibits the exercise of, or is conditioned on the non-exercise +of one or more of the rights that are specifically granted under this License. +You may not convey a covered work if you are a party to an arrangement with +a third party that is in the business of distributing software, under which +you make payment to the third party based on the extent of your activity of +conveying the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by you +(or copies made from those copies), or (b) primarily for and in connection +with specific products or compilations that contain the covered work, unless +you entered into that arrangement, or that patent license was granted, prior +to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied +license or other defenses to infringement that may otherwise be available +to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or otherwise) +that contradict the conditions of this License, they do not excuse you from +the conditions of this License. If you cannot convey a covered work so as +to satisfy simultaneously your obligations under this License and any other +pertinent obligations, then as a consequence you may not convey it at all. +For example, if you agree to terms that obligate you to collect a royalty +for further conveying from those to whom you convey the Program, the only +way you could satisfy both those terms and this License would be to refrain +entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have permission to +link or combine any covered work with a work licensed under version 3 of the +GNU Affero General Public License into a single combined work, and to convey +the resulting work. The terms of this License will continue to apply to the +part which is the covered work, but the special requirements of the GNU Affero +General Public License, section 13, concerning interaction through a network +will apply to the combination as such. + + 14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of the +GNU General Public License from time to time. Such new versions will be similar +in spirit to the present version, but may differ in detail to address new +problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies +that a certain numbered version of the GNU General Public License "or any +later version" applies to it, you have the option of following the terms and +conditions either of that numbered version or of any later version published +by the Free Software Foundation. If the Program does not specify a version +number of the GNU General Public License, you may choose any version ever +published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of +the GNU General Public License can be used, that proxy's public statement +of acceptance of a version permanently authorizes you to choose that version +for the Program. + +Later license versions may give you additional or different permissions. However, +no additional obligations are imposed on any author or copyright holder as +a result of your choosing to follow a later version. + + 15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE +LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM +PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + + 16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL +ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM +AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO +USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED +INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER +PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided above cannot +be given local legal effect according to their terms, reviewing courts shall +apply local law that most closely approximates an absolute waiver of all civil +liability in connection with the Program, unless a warranty or assumption +of liability accompanies a copy of the Program in return for a fee. END OF +TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible +use to the public, the best way to achieve this is to make it free software +which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively state the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + + + +Copyright (C) + +This program 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. + +This program 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 +this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like +this when it starts in an interactive mode: + + Copyright (C) + +This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + +This is free software, and you are welcome to redistribute it under certain +conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands might +be different; for a GUI interface, you would use an "about box". + +You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. For +more information on this, and how to apply and follow the GNU GPL, see . + +The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General Public +License instead of this License. But first, please read . diff --git a/LICENSES/LGPL-3.0-only.txt b/LICENSES/LGPL-3.0-only.txt new file mode 100644 index 000000000..bd405afbe --- /dev/null +++ b/LICENSES/LGPL-3.0-only.txt @@ -0,0 +1,163 @@ +GNU LESSER GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +This version of the GNU Lesser General Public License incorporates the terms +and conditions of version 3 of the GNU General Public License, supplemented +by the additional permissions listed below. + + 0. Additional Definitions. + + + +As used herein, "this License" refers to version 3 of the GNU Lesser General +Public License, and the "GNU GPL" refers to version 3 of the GNU General Public +License. + + + +"The Library" refers to a covered work governed by this License, other than +an Application or a Combined Work as defined below. + + + +An "Application" is any work that makes use of an interface provided by the +Library, but which is not otherwise based on the Library. Defining a subclass +of a class defined by the Library is deemed a mode of using an interface provided +by the Library. + + + +A "Combined Work" is a work produced by combining or linking an Application +with the Library. The particular version of the Library with which the Combined +Work was made is also called the "Linked Version". + + + +The "Minimal Corresponding Source" for a Combined Work means the Corresponding +Source for the Combined Work, excluding any source code for portions of the +Combined Work that, considered in isolation, are based on the Application, +and not on the Linked Version. + + + +The "Corresponding Application Code" for a Combined Work means the object +code and/or source code for the Application, including any data and utility +programs needed for reproducing the Combined Work from the Application, but +excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + +You may convey a covered work under sections 3 and 4 of this License without +being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + +If you modify a copy of the Library, and, in your modifications, a facility +refers to a function or data to be supplied by an Application that uses the +facility (other than as an argument passed when the facility is invoked), +then you may convey a copy of the modified version: + +a) under this License, provided that you make a good faith effort to ensure +that, in the event an Application does not supply the function or data, the +facility still operates, and performs whatever part of its purpose remains +meaningful, or + +b) under the GNU GPL, with none of the additional permissions of this License +applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + +The object code form of an Application may incorporate material from a header +file that is part of the Library. You may convey such object code under terms +of your choice, provided that, if the incorporated material is not limited +to numerical parameters, data structure layouts and accessors, or small macros, +inline functions and templates (ten or fewer lines in length), you do both +of the following: + +a) Give prominent notice with each copy of the object code that the Library +is used in it and that the Library and its use are covered by this License. + +b) Accompany the object code with a copy of the GNU GPL and this license document. + + 4. Combined Works. + +You may convey a Combined Work under terms of your choice that, taken together, +effectively do not restrict modification of the portions of the Library contained +in the Combined Work and reverse engineering for debugging such modifications, +if you also do each of the following: + +a) Give prominent notice with each copy of the Combined Work that the Library +is used in it and that the Library and its use are covered by this License. + +b) Accompany the Combined Work with a copy of the GNU GPL and this license +document. + +c) For a Combined Work that displays copyright notices during execution, include +the copyright notice for the Library among these notices, as well as a reference +directing the user to the copies of the GNU GPL and this license document. + + d) Do one of the following: + +0) Convey the Minimal Corresponding Source under the terms of this License, +and the Corresponding Application Code in a form suitable for, and under terms +that permit, the user to recombine or relink the Application with a modified +version of the Linked Version to produce a modified Combined Work, in the +manner specified by section 6 of the GNU GPL for conveying Corresponding Source. + +1) Use a suitable shared library mechanism for linking with the Library. A +suitable mechanism is one that (a) uses at run time a copy of the Library +already present on the user's computer system, and (b) will operate properly +with a modified version of the Library that is interface-compatible with the +Linked Version. + +e) Provide Installation Information, but only if you would otherwise be required +to provide such information under section 6 of the GNU GPL, and only to the +extent that such information is necessary to install and execute a modified +version of the Combined Work produced by recombining or relinking the Application +with a modified version of the Linked Version. (If you use option 4d0, the +Installation Information must accompany the Minimal Corresponding Source and +Corresponding Application Code. If you use option 4d1, you must provide the +Installation Information in the manner specified by section 6 of the GNU GPL +for conveying Corresponding Source.) + + 5. Combined Libraries. + +You may place library facilities that are a work based on the Library side +by side in a single library together with other library facilities that are +not Applications and are not covered by this License, and convey such a combined +library under terms of your choice, if you do both of the following: + +a) Accompany the combined library with a copy of the same work based on the +Library, uncombined with any other library facilities, conveyed under the +terms of this License. + +b) Give prominent notice with the combined library that part of it is a work +based on the Library, and explaining where to find the accompanying uncombined +form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + +The Free Software Foundation may publish revised and/or new versions of the +GNU Lesser General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to address +new problems or concerns. + +Each version is given a distinguishing version number. If the Library as you +received it specifies that a certain numbered version of the GNU Lesser General +Public License "or any later version" applies to it, you have the option of +following the terms and conditions either of that published version or of +any later version published by the Free Software Foundation. If the Library +as you received it does not specify a version number of the GNU Lesser General +Public License, you may choose any version of the GNU Lesser General Public +License ever published by the Free Software Foundation. + +If the Library as you received it specifies that a proxy can decide whether +future versions of the GNU Lesser General Public License shall apply, that +proxy's public statement of acceptance of any version is permanent authorization +for you to choose that version for the Library. diff --git a/LICENSES/LicenseRef-Apple-Permissive.txt b/LICENSES/LicenseRef-Apple-Permissive.txt new file mode 100644 index 000000000..fbf440817 --- /dev/null +++ b/LICENSES/LicenseRef-Apple-Permissive.txt @@ -0,0 +1,36 @@ +This Apple software is supplied to you by Apple Inc. ("Apple") +in consideration of your agreement to the following terms, and your use, +installation, modification or redistribution of this Apple software +constitutes acceptance of these terms. If you do not agree with these +terms, please do not use, install, modify or redistribute this Apple +software. + +In consideration of your agreement to abide by the following terms, and +subject to these terms, Apple grants you a personal, non - exclusive +license, under Apple's copyrights in this original Apple software ( the +"Apple Software" ), to use, reproduce, modify and redistribute the Apple +Software, with or without modifications, in source and / or binary forms; +provided that if you redistribute the Apple Software in its entirety and +without modifications, you must retain this notice and the following text +and disclaimers in all such redistributions of the Apple Software. Neither +the name, trademarks, service marks or logos of Apple Inc. may be used to +endorse or promote products derived from the Apple Software without specific +prior written permission from Apple. Except as expressly stated in this +notice, no other rights or licenses, express or implied, are granted by +Apple herein, including but not limited to any patent rights that may be +infringed by your derivative works or by other works in which the Apple +Software may be incorporated. + +The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO +WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED +WARRANTIES OF NON - INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION +ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + +IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ( INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION ) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION +AND / OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER +UNDER THEORY OF CONTRACT, TORT ( INCLUDING NEGLIGENCE ), STRICT LIABILITY OR +OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt new file mode 100644 index 000000000..204b93da4 --- /dev/null +++ b/LICENSES/MIT.txt @@ -0,0 +1,19 @@ +MIT License Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/LICENSES/Zlib.txt b/LICENSES/Zlib.txt new file mode 100644 index 000000000..e197a5262 --- /dev/null +++ b/LICENSES/Zlib.txt @@ -0,0 +1,19 @@ +zlib License Copyright (c) + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the +use of this software. + +Permission is granted to anyone to use this software for any purpose, including +commercial applications, and to alter it and redistribute it freely, subject +to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim +that you wrote the original software. If you use this software in a product, +an acknowledgment in the product documentation would be appreciated but is +not required. + +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source distribution. diff --git a/README.md b/README.md index e511d6ca6..9e376a52e 100644 --- a/README.md +++ b/README.md @@ -1,664 +1,1547 @@ -![](./docs/doxygen/images/gnss-sdr_logo.png) + +[comment]: # ( +SPDX-License-Identifier: GPL-3.0-or-later +) + +[comment]: # ( +SPDX-FileCopyrightText: 2011-2024 Carles Fernandez-Prades +) + + +[![](./docs/doxygen/images/gnss-sdr_logo.png)](https://gnss-sdr.org "GNSS-SDR website") + +[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) +[![REUSE status](https://api.reuse.software/badge/github.com/gnss-sdr/gnss-sdr)](https://api.reuse.software/info/github.com/gnss-sdr/gnss-sdr) +[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md) **Welcome to GNSS-SDR!** -Visit [gnss-sdr.org](http://gnss-sdr.org "GNSS-SDR's Homepage") for more information about this open source GNSS software defined receiver. +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: -If you have questions about GNSS-SDR, please [subscribe to the gnss-sdr-developers mailing list](http://lists.sourceforge.net/lists/listinfo/gnss-sdr-developers "Subscribe to the gnss-sdr-developers mailing list" ) and post your questions there. +In the L1 band: - +- 🛰 GLONASS L1 C/A (centered at 1602.000 MHz) :white_check_mark: +- 🛰 GPS L1 C/A (centered at 1575.420 MHz) :white_check_mark: +- 🛰 Galileo E1b/c (centered at 1575.420 MHz) :white_check_mark: +- 🛰 BeiDou B1I (centered at 1561.098 MHz) :white_check_mark: + +In the E6 band: + +- 🛰 Galileo E6B (centered at 1278.750 MHz) :white_check_mark: + +In the L2 band: + +- 🛰 BeiDou B3I (centered at 1268.520 MHz) :white_check_mark: +- 🛰 GLONASS L2 C/A (centered at 1246.000 MHz) :white_check_mark: +- 🛰 GPS L2C (centered at 1227.600 MHz) :white_check_mark: + +In the L5 band: + +- 🛰 Galileo E5b (centered at 1207.140 MHz) :white_check_mark: +- 🛰 Galileo E5a (centered at 1176.450 MHz) :white_check_mark: +- 🛰 GPS L5 (centered at 1176.450 MHz) :white_check_mark: + +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. + +:sparkles: See what's new in the [changelog](./docs/CHANGELOG.md). + +# Table of Contents + +
+(click to expand) + + +- [Table of Contents](#table-of-contents) +- [How to build GNSS-SDR](#how-to-build-gnss-sdr) + - [GNU/Linux](#gnulinux) + - [Alternative 1: Install dependencies using software packages](#alternative-1-install-dependencies-using-software-packages) + - [Debian / Ubuntu](#debian--ubuntu) + - [AlmaLinux](#almalinux) + - [Arch Linux](#arch-linux) + - [Fedora](#fedora) + - [openSUSE](#opensuse) + - [Rocky Linux](#rocky-linux) + - [Alternative 2: Install dependencies using PyBOMBS](#alternative-2-install-dependencies-using-pybombs) + - [Manual installation of other required dependencies](#manual-installation-of-other-required-dependencies) + - [Install Armadillo, a C++ linear algebra library](#install-armadillo-a-c-linear-algebra-library) + - [Install Gflags, a commandline flags processing module for C++](#install-gflags-a-commandline-flags-processing-module-for-c) + - [Install Glog, a library that implements application-level logging](#install-glog-a-library-that-implements-application-level-logging) + - [Install the OpenSSL libraries](#install-the-openssl-libraries) + - [Install Matio, MATLAB MAT file I/O library](#install-matio-matlab-mat-file-io-library) + - [Install Protocol Buffers, a portable mechanism for serialization of structured data](#install-protocol-buffers-a-portable-mechanism-for-serialization-of-structured-data) + - [Install Pugixml, a light-weight C++ XML processing library](#install-pugixml-a-light-weight-c-xml-processing-library) + - [Download GoogleTest](#download-googletest) + - [Clone GNSS-SDR's Git repository](#clone-gnss-sdrs-git-repository) + - [Build and install GNSS-SDR](#build-and-install-gnss-sdr) + - [Build OSMOSDR support (OPTIONAL)](#build-osmosdr-support-optional) + - [Build FMCOMMS2 based SDR Hardware support (OPTIONAL)](#build-fmcomms2-based-sdr-hardware-support-optional) + - [Build OpenCL support (OPTIONAL)](#build-opencl-support-optional) + - [Build CUDA support (OPTIONAL)](#build-cuda-support-optional) + - [macOS](#macos) + - [Macports](#macports) + - [Homebrew](#homebrew) + - [Other package managers](#other-package-managers) + - [Build GNSS-SDR](#build-gnss-sdr) + - [Other builds](#other-builds) +- [Updating GNSS-SDR](#updating-gnss-sdr) +- [Getting started](#getting-started) +- [Using GNSS-SDR](#using-gnss-sdr) + - [Control plane](#control-plane) + - [Configuration](#configuration) + - [GNSS block factory](#gnss-block-factory) + - [Signal Processing plane](#signal-processing-plane) + - [Signal Source](#signal-source) + - [Signal Conditioner](#signal-conditioner) + - [Data type adapter](#data-type-adapter) + - [Input filter](#input-filter) + - [Resampler](#resampler) + - [Channel](#channel) + - [Acquisition](#acquisition) + - [Tracking](#tracking) + - [Decoding of the navigation message](#decoding-of-the-navigation-message) + - [Observables](#observables) + - [Computation of Position, Velocity, and Time](#computation-of-position-velocity-and-time) +- [About the software license](#about-the-software-license) +- [Publications and Credits](#publications-and-credits) +- [Ok, now what?](#ok-now-what) + + +
# How to build GNSS-SDR +This section describes how to set up the compilation environment in GNU/Linux or +[macOS / Mac OS X](#macos), and to build GNSS-SDR. See also our +[build and install page](https://gnss-sdr.org/build-and-install/ "GNSS-SDR's Build and Install"). -This section describes how to set up the compilation environment in GNU/Linux or [Mac OS X](#macosx), and to build GNSS-SDR. See also [our Building Guide](http://gnss-sdr.org/documentation/building-guide "GNSS-SDR's Building Guide"). +## GNU/Linux -GNU/Linux ----------- +- Tested distributions: Ubuntu 14.04 LTS and above; Debian 9.0 "stretch" and + above; Arch Linux; Fedora 26 and above; OpenSUSE 42.3 and above. +- Supported microprocessor architectures: + - i386: Intel x86 instruction set (32-bit microprocessors). + - amd64: also known as x86-64, the 64-bit version of the x86 instruction set, + originally created by AMD and implemented by AMD, Intel, VIA, and others. + - armel: ARM embedded ABI, supported on ARM v4t and higher. + - armhf: ARM hard float, ARMv7 + VFP3-D16 floating-point hardware extension + + Thumb-2 instruction set and above. + - arm64: ARM 64 bits or ARMv8. + - mips: MIPS architecture (big-endian, such as those manufactured by SGI). + - mipsel: MIPS architecture (little-endian, such as Loongson 3). + - mips64el: 64-bit version of MIPS architecture. + - powerpc: the RISC 32-bit microprocessor architecture developed by IBM, + Motorola (now Freescale), and Apple. + - ppc64: 64-bit big-endian PowerPC architecture. + - ppc64el: 64-bit little-endian PowerPC architecture. + - riscv64: 64-bit RISC-V open standard instruction set architecture. + - s390x: IBM System z architecture for mainframe computers. - * Tested distributions: Ubuntu 14.04 LTS, 14.10 and 15.04, Debian 8.0 "jessie", Linaro 15.03 - * Known to work but not continually tested: Fedora 19 and 20, and openSUSE 13.1 - * Supported microprocessor architectures: - * i386: Intel x86 instruction set (32-bit microprocessors). - * amd64: also known as x86-64, the 64-bit version of the x86 instruction set, originally created by AMD and implemented by AMD, Intel, VIA and others. - * armel: ARM embedded ABI, supported on ARM v4t and higher. - * armhf: ARM hard float, ARMv7 + VFP3-D16 floating-point hardware extension + Thumb-2 instruction set and above. - * arm64: ARM 64 bits or ARMv8. +Older distribution releases might work as well, but you will need GCC 4.7 or +newer. -Older distribution releases might work as well, but you will need GCC 4.7 or newer. +Before building GNSS-SDR, you need to install all the required dependencies. +There are two alternatives here: through software packages or building them from +the source code. It is in general not a good idea to mix both approaches. -Before building GNSS-SDR, you need to install all the required dependencies. If you are using Debian 8, Ubuntu 14.10 or above, this can be done by copying and pasting the following line in a terminal: +### Alternative 1: Install dependencies using software packages -~~~~~~ -$ sudo apt-get install build-essential cmake git libboost-dev libboost-date-time-dev \ +If you want to start building and running GNSS-SDR as quickly and easily as +possible, the best option is to install all the required dependencies as binary +packages. + +#### Debian / Ubuntu + +If you are using Debian 9, Ubuntu 14.10 or above, this can be done by copying +and pasting the following line in a terminal: + +``` +$ sudo apt-get install build-essential cmake git pkg-config libboost-dev libboost-date-time-dev \ libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-chrono-dev \ - libboost-serialization-dev libboost-program-options-dev libboost-test-dev \ - liblog4cpp5-dev libuhd-dev gnuradio-dev gr-osmosdr libblas-dev liblapack-dev \ - libarmadillo-dev libgflags-dev libgoogle-glog-dev libssl-dev libgtest-dev -~~~~~~ + libboost-serialization-dev liblog4cpp5-dev libuhd-dev gnuradio-dev gr-osmosdr \ + libblas-dev liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev \ + libssl-dev libpcap-dev libmatio-dev libpugixml-dev libgtest-dev \ + libprotobuf-dev libcpu-features-dev protobuf-compiler python3-mako +``` -Once you have installed these packages, you can jump directly to [how to download the source code and build GNSS-SDR](#download-and-build-linux). Alternatively, if you need to manually install those libraries, please keep reading. +Please note that the required files from `libgtest-dev` were named `googletest` +in Debian 9 "stretch" and Ubuntu 18.04 "bionic", and renamed to `libgtest-dev` +in Debian 10 "buster" and above. -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. +In distributions older than Ubuntu 21.04 Hirsute / Debian 11, the package +`libcpu-features-dev` is not required. -### Manual installation of GNU Radio +In distributions older than Ubuntu 22.04 Jammy / Debian 12, the package +`libssl-dev` must be replaced by `libgnutls-openssl-dev`. -Downloading, building and installing [GNU Radio](http://gnuradio.org/redmine/projects/gnuradio/wiki "GNU Radio's Homepage") and all its dependencies is not a simple task. We recommend to use [PyBOMBS](http://gnuradio.org/redmine/projects/pybombs/wiki "Python Build Overlay Managed Bundle System wiki") (Python Build Overlay Managed Bundle System), the GNU Radio install management system that automatically does all the work for you. In a terminal, type: +**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. +In distributions older than Ubuntu 16.04 or Debian 9, `python3-mako` must be +replaced by `python-mako`. For Ubuntu 14.04, you will need to add the package +`python-six` to the list of dependencies. -~~~~~~ -$ git clone git://github.com/pybombs/pybombs -$ cd pybombs -~~~~~~ +Once you have installed these packages, you can jump directly to +[download the source code and build GNSS-SDR](#clone-gnss-sdrs-git-repository). -Configure PyBOMBS: +#### AlmaLinux -~~~~~~ -$ ./pybombs config -~~~~~~ +If you are using AlmaLinux: -You can safely accept the default options but for ```prefix```. We recommend to put ```/usr/local``` there. After the configuration, you should get something similar to: +``` +# dnf update -y +# dnf install -y 'dnf-command(config-manager)' +# dnf config-manager --set-enabled powertools +# dnf install -y epel-release +# dnf install -y make gcc gcc-c++ kernel-devel cmake git boost-devel \ + boost-date-time boost-system boost-thread boost-chrono \ + boost-serialization log4cpp-devel gmp-devel uhd-devel gnuradio-devel \ + pugixml-devel matio-devel protobuf-devel glog-devel libpcap-devel \ + blas-devel lapack-devel armadillo-devel openssl-devel python3-mako \ + libarchive +``` -~~~~~~ -gituser = username -prefix = /usr/local -satisfy_order = deb,src # For Debian/Ubuntu/LinuxMint -satisfy_order = rpm,src # For Fedora/CentOS/RHEL/openSUSE -forcepkgs = -forcebuild = gnuradio,uhd,gr-osmosdr,rtl-sdr -timeout = 30 -cmakebuildtype = RelWithDebInfo -builddocs = OFF -cc = gcc -cxx = g++ -makewidth = 4 -~~~~~~ +Once you have installed these packages, you can jump directly to +[download the source code and build GNSS-SDR](#clone-gnss-sdrs-git-repository). +#### Arch Linux -Then, you are ready to download and install [UHD](http://files.ettus.com/uhd_docs/manual/html/) (the Universal Hardware Driver), GNU Radio and all their required dependencies by doing: +If you are using Arch Linux: -~~~~~~ -$ sudo ./pybombs install uhd gnuradio -~~~~~~ +``` +$ pacman -S gcc make cmake pkgconf git boost boost-libs libvolk gnuradio \ + blas lapack hdf5 openssl pugixml libmatio protobuf libpcap gtest \ + python-mako +``` -This can take some time (up to two hours to complete, depending on your system), and downloads, builds and installs the latest versions of the Universal Hardware Driver (UHD) and GNU Radio in your system, including all their dependencies. -In case you do not want to use PyBOMBS and prefer to build and install GNU Radio step by step, follow instructions at the [GNU Radio Build Guide](http://gnuradio.org/redmine/projects/gnuradio/wiki/BuildGuide). +Once you have installed these packages, you can jump directly to +[download the source code and build GNSS-SDR](#clone-gnss-sdrs-git-repository). + +#### Fedora + +If you are using Fedora 26 or above, the required software dependencies can be +installed by doing: + +``` +$ 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 libpcap-devel pugixml-devel python3-mako \ + protobuf-devel protobuf-compiler +``` + +In Fedora 33 and above, you will need to add `gmp-devel` to the package list. +Optionally, you can add `uhd-devel` starting from Fedora 32. + +In Fedora 36 and above, packages `spdlog-devel` and `fmt-devel` are also +required. + +#### openSUSE + +If you are using openSUSE Leap: + +``` +$ zypper install cmake git gcc-c++ boost-devel libboost_atomic-devel \ + libboost_system-devel libboost_filesystem-devel libboost_chrono-devel \ + libboost_thread-devel libboost_serialization-devel log4cpp-devel \ + gnuradio-devel pugixml-devel libpcap-devel armadillo-devel libtool \ + automake hdf5-devel openssl-devel python3-Mako libmatio-devel +``` + +If you are using openSUSE Tumbleweed: + +``` +$ zypper install cmake git gcc-c++ boost-devel libboost_atomic-devel \ + libboost_system-devel libboost_filesystem-devel libboost_date_time-devel \ + libboost_thread-devel libboost_chrono-devel libboost_serialization-devel \ + spdlog-devel fmt-devel gtest gnuradio-devel pugixml-devel libpcap-devel \ + armadillo-devel libtool automake hdf5-devel libopenssl-devel \ + python3-Mako protobuf-devel +``` + +Once you have installed these packages, you can jump directly to +[download the source code and build GNSS-SDR](#clone-gnss-sdrs-git-repository). + +#### Rocky Linux + +If you are using Rocky Linux: + +``` +$ dnf install -y 'dnf-command(config-manager)' +$ dnf config-manager --set-enabled powertools +$ yum install -y epel-release +$ yum install -y make gcc gcc-c++ kernel-devel cmake git boost-devel \ + boost-date-time boost-system boost-thread boost-chrono boost-serialization \ + log4cpp-devel gmp-devel uhd-devel gnuradio-devel pugixml-devel matio-devel \ + protobuf-devel glog-devel libpcap-devel blas-devel lapack-devel \ + armadillo-devel openssl-devel python3-mako libarchive +``` + +Once you have installed these packages, you can jump directly to +[download the source code and build GNSS-SDR](#clone-gnss-sdrs-git-repository). + +### 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 using +[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: + +``` +$ sudo apt-get install git python3-pip +``` + +Download, build and install PyBOMBS: + +``` +$ sudo pip3 install --upgrade git+https://github.com/gnuradio/pybombs.git +``` + +Apply a configuration: + +``` +$ pybombs auto-config +``` + +Add list of default recipes: + +``` +$ pybombs recipes add-defaults +``` + +Download, build and install GNU Radio, related drivers, and some other extra +modules into the directory `/path/to/prefix` (replace this path by your +preferred one, for instance `$HOME/sdr`): + +``` +$ pybombs prefix init /path/to/prefix -a myprefix -R gnuradio-default +``` + +This will perform a local installation of the dependencies under +`/path/to/prefix`, so they will not be visible when opening a new terminal. In +order to make them available, you will need to set up the adequate environment +variables: + +``` +$ cd /path/to/prefix +$ . ./setup_env.sh +``` + +Now you are ready to use GNU Radio and to jump into building GNSS-SDR after +installing a few other dependencies. Actually, those are steps that PyBOMBS can +do for you as well: + +``` +$ pybombs install gnss-sdr +``` + +By default, PyBOMBS installs the ‘next’ branch of GNSS-SDR development, which is +the most recent version of the source code. This behavior can be modified by +altering the corresponding recipe at +`$HOME/.pybombs/recipes/gr-recipes/gnss-sdr.lwr` + +In case you do not want to use PyBOMBS and prefer to build and install GNSS-SDR +step by step (i.e., cloning the repository and doing the usual +`cmake .. && make && make install` dance), Armadillo, GFlags, Glog, GnuTLS, and +Matio can be installed either by using PyBOMBS: + +``` +$ pybombs install armadillo gflags glog gnutls matio +``` + +or manually as explained below, and then please follow instructions on how to +[download the source code and build GNSS-SDR](#clone-gnss-sdrs-git-repository). - - ### Manual installation of other required dependencies -#### Install the [Armadillo](http://arma.sourceforge.net/ "Armadillo's Homepage") C++ linear algebra library: +#### Install [Armadillo](https://arma.sourceforge.net/ "Armadillo's Homepage"), a C++ linear algebra library -~~~~~~ -$ sudo apt-get install libopenblas-dev liblapack-dev # For Debian/Ubuntu/LinuxMint -$ sudo yum install lapack-devel blas-devel # For Fedora/CentOS/RHEL +``` +$ sudo apt-get install libblas-dev liblapack-dev # For Debian/Ubuntu/LinuxMint +$ sudo yum install lapack-devel blas-devel # For Fedora/RHEL $ sudo zypper install lapack-devel blas-devel # For OpenSUSE -$ wget http://sourceforge.net/projects/arma/files/armadillo-5.200.2.tar.gz -$ tar xvfz armadillo-5.200.2.tar.gz -$ cd armadillo-5.200.2 +$ sudo pacman -S blas lapack # For Arch Linux +$ wget https://sourceforge.net/projects/arma/files/armadillo-14.0.0.tar.xz +$ tar xvfz armadillo-14.0.0.tar.xz +$ cd armadillo-14.0.0 $ 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 (e.g., +BLAS, LAPACK, and ATLAS). - +#### Install [Gflags](https://github.com/gflags/gflags "Gflags' Homepage"), a commandline flags processing module for C++ -#### Install [Gflags](https://github.com/gflags/gflags "Gflags' Homepage"), a commandline flags processing module for C++: - -~~~~~~ -$ wget https://github.com/gflags/gflags/archive/v2.1.2.tar.gz -$ tar xvfz v2.1.2.tar.gz -$ cd gflags-2.1.2 +``` +$ 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 $ sudo ldconfig -~~~~~~ +``` - +Please note that GFlags is replaced by the +[Abseil Flags Library](https://abseil.io/docs/cpp/guides/flags) if Abseil >= +v20240116 is available in your system. -#### Install [Glog](https://github.com/google/glog "Glog's Homepage"), a library that implements application-level logging: +#### Install [Glog](https://github.com/google/glog "Glog's Homepage"), a library that implements application-level logging -~~~~~~ -$ wget https://github.com/google/glog/archive/v0.3.4.tar.gz -$ tar xvfz v0.3.4.tar.gz -$ cd glog-0.3.4 +``` +$ wget https://github.com/google/glog/archive/v0.7.1.tar.gz +$ tar xvfz v0.7.1.tar.gz +$ cd glog-0.7.1 +$ mkdir build && cd build +$ cmake .. +$ make +$ sudo make install +$ sudo ldconfig +``` + +Please note that Glog is replaced by the +[Abseil Logging Library](https://abseil.io/docs/cpp/guides/logging) if Abseil >= +v20240116 is available in your system. + +#### Install the OpenSSL libraries + +``` +$ sudo apt-get install libssl-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 +``` + +#### Install [Matio](https://github.com/tbeu/matio "Matio's Homepage"), MATLAB MAT file I/O library + +``` +$ wget https://github.com/tbeu/matio/releases/download/v1.5.26/matio-1.5.27.tar.gz +$ tar xvfz matio-1.5.27.tar.gz +$ cd matio-1.5.27 $ ./configure $ make $ sudo make install $ sudo ldconfig -~~~~~~ +``` - +#### Install [Protocol Buffers](https://protobuf.dev/ "Protocol Buffers' Homepage"), a portable mechanism for serialization of structured data -#### Build the [Google C++ Testing Framework](http://code.google.com/p/googletest/ "Googletest Homepage"), also known as googletest: +GNSS-SDR requires Protocol Buffers v3.0.0 or later. If the packages that come +with your distribution are older than that (_e.g._, Ubuntu 16.04 Xenial came +with an older versions), then you will need to install it manually: -~~~~~~ -$ wget http://googletest.googlecode.com/files/gtest-1.7.0.zip -$ unzip gtest-1.7.0.zip -$ cd gtest-1.7.0 -$ ./configure +``` +$ git clone --recursive https://github.com/protocolbuffers/protobuf.git +$ cd protobuf +$ cmake -DABSL_PROPAGATE_CXX_STD=ON -Dprotobuf_BUILD_TESTS=OFF . +$ cmake --build --config Release --target install . +$ sudo ldconfig +``` + +For more options, please check the +[Protocol Buffers' installation instructions](https://github.com/protocolbuffers/protobuf/blob/main/src/README.md/). + +#### Install [Pugixml](https://pugixml.org/ "Pugixml's Homepage"), a light-weight C++ XML processing library + +``` +$ wget https://github.com/zeux/pugixml/releases/download/v1.14/pugixml-1.14.tar.gz +$ tar xvfz pugixml-1.14.tar.gz +$ cd pugixml-1.14 +$ mkdir build && cd build +$ cmake .. $ make -~~~~~~ +$ sudo make install +$ sudo ldconfig +``` -Please **DO NOT install** gtest (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 gtest its own tests; it is only required that you tell the system where the gtest folder that you downloaded resides. Just add to your ```$HOME/.bashrc``` file the following line: +#### Download [GoogleTest](https://github.com/google/googletest "Googletest Homepage") -~~~~~~ -export GTEST_DIR=/home/username/gtest-1.7.0 -~~~~~~ +``` +$ wget https://github.com/google/googletest/archive/refs/tags/v1.15.2.zip +$ unzip v1.15.2.zip +``` -changing /home/username/gtest-1.7.0 by the actual directory where you downloaded gtest. +Please **DO NOT build or install** Google Test. Every user needs to compile +tests using the same compiler flags used to compile the Google Test libraries; +otherwise, he or she may run into undefined behaviors (_i.e._, the tests can +behave strangely and may even crash for no obvious reasons). The explanation is +that C++ has 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, GNSS-SDR does not +make use of pre-compiled Google Test libraries. Instead, it compiles Google +Test's source code 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 manages the +compilation and linking of Google Test's source code to its own tests; it is +only required that you tell the system where the Google Test folder that you +downloaded resides. Just type in your terminal (or add it to your +`$HOME/.bashrc` file for a permanent solution) the following line: - +``` +export GTEST_DIR=/home/username/googletest-1.15.2 +``` -#### Install the [SSL development libraries](https://www.openssl.org/ "OpenSSL's Homepage"): +changing `/home/username/googletest-1.15.2` by the actual path where you +unpacked Google Test. If the CMake script does not find that folder, or the +environment variable is not defined, or the source code is not installed by a +package, then it will download a fresh copy of the Google Test source code and +will compile and link it for you. -~~~~~~ -$ sudo apt-get install libssl-dev # For Debian/Ubuntu/LinuxMint -$ sudo yum install openssl-devel # For Fedora/CentOS/RHEL -~~~~~~ + - +### Clone GNSS-SDR's Git repository -### Clone GNSS-SDR's Git repository: +``` +$ git clone https://github.com/gnss-sdr/gnss-sdr +``` -~~~~~~ -$ git clone git://github.com/gnss-sdr/gnss-sdr -~~~~~~ +Cloning the GNSS-SDR repository as in the line above will create a folder named +gnss-sdr with the following structure: -Cloning the GNSS-SDR repository as in the line above will create a folder named gnss-sdr with the following structure: - -~~~~~~ +``` |-gnss-sdr - |---build <- where gnss-sdr is built - |---cmake <- CMake-related files - |---conf <- Configuration files. Each file represents one receiver. - |---data <- Populate this folder with your captured data. - |---docs <- Contains documentation-related files - |---drivers <- Drivers for some RF front-ends - |---firmware <- Firmware for some front-ends - |---install <- Executables - |---src <- Source code folder - |-----algorithms - |-----core - |-----main - |-----tests - |-----utils <- some utilities (e.g. Matlab scripts) -~~~~~~ + |---cmake <- CMake-related files. + |---conf <- Configuration files. Each file defines one particular receiver. + |---docs <- Contains documentation-related files. + |---install <- Executables will be placed here. + |---src <- Source code folder. + |-----algorithms <- Signal processing blocks. + |-----core <- Control plane, interfaces, systems' parameters. + |-----main <- Main function of the C++ program. + |---tests <- QA code. + |---utils <- some utilities (e.g. Matlab scripts). +``` +By default, you will be in the 'main' branch of the Git repository, which +corresponds to the latest stable release. If you want to try the latest +developments, you can use the 'next' branch by going to the newly created +gnss-sdr folder doing: + +``` +$ git checkout next +``` + +More information about GNSS-SDR-specific Git usage and pointers to further +readings can be found at our +[Git tutorial](https://gnss-sdr.org/docs/tutorials/using-git/ "Using Git"). ### Build and install GNSS-SDR Go to GNSS-SDR's build directory: -~~~~~~ -$ cd gnss-sdr/build -~~~~~~ +``` +$ cd gnss-sdr +``` Configure and build the application: -~~~~~~ -$ cmake ../ -$ make -~~~~~~ +``` +$ cmake -S . -B build +$ cmake --build build +``` -By default, CMake will build the Release version, meaning that the compiler will generate a fast, optimized executable. This is the recommended build type when using a RF front-end and you need to attain real time. If working with a file (and thus without real-time constraints), you may want to obtain more information about the internals of the receiver, as well as more fine-grained logging. This can be done by building the Debug version, by doing: +By default, CMake will build the Release version, meaning that the compiler will +generate a fast, optimized executable. This is the recommended build type when +using an RF front-end and you need to attain real-time. If working with a file +(and thus without real-time constraints), you may want to obtain more +information about the internals of the receiver, as well as more fine-grained +logging. This can be done by building the Debug version, by doing: -~~~~~~ -$ cmake -DCMAKE_BUILD_TYPE=Debug ../ -$ make -~~~~~~ +``` +$ cmake -S . -B build-debug -DCMAKE_BUILD_TYPE=Debug +$ cmake --build build-debug +``` -This will create three executables at gnss-sdr/install, namely ```gnss-sdr```, ```run_tests``` and ```volk_gnsssdr_profile```. You can run them from that folder, but if you prefer to install ```gnss-sdr``` on your system and have it available anywhere else, do: +This will create four executables at gnss-sdr/install, namely `gnss-sdr`, +`run_tests`, `front-end-cal` and `volk_gnsssdr_profile`. You can run them from +that folder, but if you prefer to install `gnss-sdr` on your system and have it +available anywhere else, do: -~~~~~~ -$ sudo make install -~~~~~~ +``` +$ sudo cmake --install build +``` -This will make a copy of the conf/ folder into /usr/local/share/gnss-sdr/conf for your reference. We suggest to create a working directory at your preferred location and store your own configuration and data files there. +This will also make a copy of the conf/ folder into +/usr/local/share/gnss-sdr/conf for your reference. We suggest creating a working +directory at your preferred location and store your own configuration and data +files there. -You could be interested in creating the documentation by doing: +You could be interested in creating the documentation (requires: +`sudo apt-get install doxygen-latex` in Ubuntu/Debian) by doing: -~~~~~~ -$ make doc -~~~~~~ +``` +$ cmake --build build --target doc +``` -from the gnss-sdr/build folder. This will generate HTML documentation that can be retrieved pointing your browser of preference to gnss-sdr/docs/html/index.html. -If a LaTeX installation is detected in your system, +This will generate HTML documentation that can be retrieved pointing your +browser of preference to `build/docs/html/index.html`. If a LaTeX installation +is detected in your system, -~~~~~~ -$ make pdfmanual -~~~~~~ +``` +$ cmake --build build --target pdfmanual +``` -will create a PDF manual at gnss-sdr/docs/GNSS-SDR_manual.pdf. Finally, +will create a PDF manual at build/docs/GNSS-SDR_manual.pdf. Finally, -~~~~~~ -$ make doc-clean -~~~~~~ +``` +$ cmake --build build --target doc-clean +``` -will remove the content of previously-generated documentation. +will remove the content of previously generated documentation. -GNSS-SDR comes with a library with some specific Vector-Optimized Library of Kernels (VOLK) and a profiler that will build a config file for the best SIMD architecture for your processor. Run ``volk_gnsssdr_profile`` that is installed into $PREFIX/bin. This program tests all known VOLK kernels for each architecture supported by the processor. When finished, it will write to $HOME/.volk_gnsssdr/volk_gnsssdr_config the best architecture for the VOLK function. This file is read when using a function to know the best version of the function to execute. It mimics GNU Radio's VOLK library, so if you still have not run ```volk_profile```, this is a good moment to do so. +GNSS-SDR comes with a library which is a module of the Vector-Optimized Library +of Kernels (so-called +[VOLK_GNSSSDR](./src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/README.md)) +and a profiler that will build a config file for the best SIMD architecture for +your processor. Run `volk_gnsssdr_profile` that is installed into `$PREFIX/bin`. +This program tests all known VOLK kernels for each architecture supported by the +processor. When finished, it will write to +`$HOME/.volk_gnsssdr/volk_gnsssdr_config` the best architecture for the VOLK +function. This file is read when using a function to know the best version of +the function to execute. It mimics GNU Radio's [VOLK](https://www.libvolk.org/) +library, so if you still have not run `volk_profile`, this is a good moment to +do so. +#### Build OSMOSDR support (OPTIONAL) +Install the [OsmoSDR](https://osmocom.org/projects/sdr "OsmoSDR's Homepage") +library and GNU Radio's source block: -If you are using Eclipse as your development environment, CMake can create the project for you. Type: - -~~~~~~ -$ cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DECLIPSE_CDT4_GENERATE_SOURCE_PROJECT=TRUE -DCMAKE_ECLIPSE_VERSION=3.7 -DCMAKE_ECLIPSE_MAKE_ARGUMENTS=-j8 ../ -~~~~~~ - -and then import the created project file into Eclipse: - -1. Import project using Menu File -> Import. -2. Select General -> Existing projects into workspace. -3. Browse where your build tree is and select the root build tree directory. Keep "Copy projects into workspace" unchecked. -4. You get a fully functional Eclipse project. - - -###### Build GN3S V2 Custom firmware and driver (OPTIONAL): - -Go to GR-GN3S root directory, compile and install the driver (read the drivers/gr-gn3s/README for more information): - -~~~~~~ -$ cd gnss-sdr/drivers/gr-gn3s -$ cd build -$ cmake ../ -$ make -$ sudo make install -$ sudo ldconfig -~~~~~~ - -Then configure GNSS-SDR to build the GN3S_Signal_Source by: - -~~~~~~ -$ cmake -DENABLE_GN3S=ON ../ -$ make -$ sudo make install -~~~~~~ - -In order to gain access to USB ports, gnss-sdr should be used as root. In addition, the driver requires access to the GN3S firmware binary file. It should be available in the same path where the application is called. -GNSS-SDR comes with a pre-compiled custom GN3S firmware available at gnss-sdr/firmware/GN3S_v2/bin/gn3s_firmware.ihx. Please copy this file to the application path. The GNSS-SDR default path is gnss-sdr/install - -(in order to disable the GN3S_Signal_Source compilation, you can pass -DENABLE_GN3S=OFF to cmake and build GNSS-SDR again). - - - -###### Build OSMOSDR support (OPTIONAL): - -Install the [OsmoSDR](http://sdr.osmocom.org/trac/ "OsmoSDR's Homepage") library and GNU Radio's source block: - - -~~~~~~ +``` $ git clone git://git.osmocom.org/osmo-sdr.git $ cd osmo-sdr/software/libosmosdr $ mkdir build $ cd build/ -$ cmake ../ +$ cmake .. $ make $ sudo make install $ sudo ldconfig -$ cd ../../ +$ cd ../.. $ git clone git://git.osmocom.org/gr-osmosdr $ cd gr-osmosdr $ mkdir build $ cd build -$ cmake ../ -Wno-dev +$ cmake .. -Wno-dev $ make $ sudo make install $ sudo ldconfig -~~~~~~ +``` +Then, configure GNSS-SDR to build the `Osmosdr_Signal_Source` by: -Then, configure GNSS-SDR to build the Osmosdr_Signal_Source by: +``` +$ cmake -S . -B build -DENABLE_OSMOSDR=ON +$ cmake --build build +$ sudo cmake --install build +``` -~~~~~~ -$ cmake -DENABLE_OSMOSDR=ON ../ -$ make -$ sudo make install -~~~~~~ +(in order to disable the `Osmosdr_Signal_Source` compilation, you can pass +`-DENABLE_OSMOSDR=OFF` to cmake and build GNSS-SDR again). -(in order to disable the Osmosdr_Signal_Source compilation, you can pass -DENABLE_OSMOSDR=OFF to cmake and build GNSS-SDR again). +#### Build FMCOMMS2 based SDR Hardware support (OPTIONAL) +Install the [libiio](https://github.com/analogdevicesinc/libiio.git) (>=v0.11), +[libad9361](https://github.com/analogdevicesinc/libad9361-iio.git) (>=v0.1-1) +libraries and [gr-iio](https://github.com/analogdevicesinc/gr-iio.git) (>v0.3) +gnuradio block: +``` +$ sudo apt-get install libxml2-dev bison flex +$ git clone https://github.com/analogdevicesinc/libiio.git +$ cd libiio +$ mkdir build +$ cd build +$ cmake .. +$ make && sudo make install && sudo ldconfig +$ cd ../.. +$ git clone https://github.com/analogdevicesinc/libad9361-iio.git +$ cd libad9361-iio +$ mkdir build +$ cd build +$ cmake .. +$ make && sudo make install && sudo ldconfig +$ cd ../.. +$ git clone https://github.com/analogdevicesinc/gr-iio.git +$ cd gr-iio +$ mkdir build +$ cd build +$ cmake -DCMAKE_INSTALL_PREFIX=/usr .. +$ make && sudo make install && sudo ldconfig +$ cd ../.. +``` -###### Build OpenCL support (OPTIONAL): +Then configure GNSS-SDR to build the `Fmcomms2_Signal_Source` implementation: + +``` +$ cd gnss-sdr +$ cmake -S . -B build -DENABLE_FMCOMMS2=ON +$ cmake --build build +$ sudo cmake --install build +``` + +or configure it to build `Plutosdr_Signal_Source`: + +``` +$ cmake -S . -B build -DENABLE_PLUTOSDR=ON +$ cmake --build build +$ sudo cmake --install build +``` + +With `Fmcomms2_Signal_Source` you can use any SDR hardware based on +[FMCOMMS2](https://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz), +including the ADALM-PLUTO (PlutoSdr) by configuring correctly the .conf file. +The `Plutosdr_Signal_Source` offers a simpler manner to use the ADALM-PLUTO +because implements only a subset of FMCOMMS2's parameters valid for those +devices. + +#### Build OpenCL support (OPTIONAL) In order to enable the building of blocks that use OpenCL, type: -~~~~~~ -$ cmake -DENABLE_OPENCL=ON ../ -$ make -$ sudo make install -~~~~~~ +``` +$ cmake -S . -B build -DENABLE_OPENCL=ON +$ cmake --build build +$ sudo cmake --install build +``` +#### Build CUDA support (OPTIONAL) -###### Build a portable binary +In order to enable the building of blocks that use CUDA, NVIDIA's parallel +programming model that enables graphics processing unit (GPU) acceleration for +data-parallel computations, first you need to install the CUDA Toolkit from +[NVIDIA Developers Download page](https://developer.nvidia.com/cuda-downloads "CUDA Downloads"). +Make sure that the SDK samples build well. Then, build GNSS-SDR by doing: -In order to build an executable that not depends on the specific SIMD instruction set that is present in the processor of the compiling machine, so other users can execute it in other machines without those particular sets, use: +``` +$ cmake -S . -B build -DENABLE_CUDA=ON +$ cmake --build build +$ sudo cmake --install build +``` -~~~~~~ -$ cmake -DENABLE_GENERIC_ARCH=ON ../ -$ make -$ sudo make install -~~~~~~ +Of course, you will also need a GPU that +[supports CUDA](https://developer.nvidia.com/cuda-gpus "CUDA GPUs"). -Using this option, all SIMD instructions are exclusively accessed via VOLK, which automatically includes versions of each function for different SIMD instruction sets, then detects at runtime which to use, or if there are none, substitutes a generic, non-SIMD implementation. +## macOS +GNSS-SDR can be built on macOS (or the former Mac OS X), starting from 10.9 +(Mavericks) and including 14 (Sonoma). 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, which do not +come by default in macOS versions older than Big Sur. If you are using an older +version, please launch the Terminal, found in /Applications/Utilities/, and +type: - -Mac OS X ---------- - - -### Mac OS X 10.9 (Mavericks) and 10.10 (Yosemite) - -If you still have not installed [Xcode](http://developer.apple.com/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 -~~~~~~ +``` -Agree to Xcode license: +Agree to Xcode license: -~~~~~~ +``` $ sudo xcodebuild -license -~~~~~~ +``` -Then, [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). +Software pre-requisites can be installed using either [Macports](#macports) or +[Homebrew](#homebrew). + +### Macports + +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: -~~~~~~ +``` $ sudo port selfupdate $ sudo port upgrade outdated -$ sudo port install doxygen +latex -$ sudo port install gnuradio -$ sudo port install armadillo -$ sudo port install google-glog +gflags -~~~~~~ +$ sudo port install armadillo cmake pkgconfig protobuf3-cpp pugixml openssl3 +$ sudo port install gnuradio +uhd +grc +zeromq +$ sudo port install boost matio libad9361-iio libiio +$ sudo port install py311-mako +$ sudo port install doxygen +docs +``` -You also might need to activate a Python installation. The list of installed versions can be retrieved with: +For macOS versions older than Sonoma, you will also need LAPACK: -~~~~~~ -$ port select list python -~~~~~~ +``` +$ sudo port install lapack +``` + +You also might need to activate a Python installation. The list of installed +versions can be retrieved with: + +``` +$ port select --list python +``` and you can activate a certain version by typing: -~~~~~~ -$ sudo port select --set python python27 -~~~~~~ +``` +$ sudo port select --set python python311 +``` -Finally, you are ready to clone the GNSS-SDR repository and build the software: +### Homebrew -~~~~~~ -$ git clone git://github.com/gnss-sdr/gnss-sdr -$ cd gnss-sdr/build -$ cmake -DCMAKE_CXX_COMPILER=/usr/bin/clang++ ../ -$ make -~~~~~~ +First, install [Homebrew](https://brew.sh/). Paste this in a terminal prompt: -This will create three executables at gnss-sdr/install, namely ```gnss-sdr```, ```run_tests``` and ```volk_gnsssdr_profile```. You can install the software receiver on your system by doing: +``` +$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" +``` -~~~~~~ -$ sudo make install -~~~~~~ +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 the required dependencies: +``` +$ brew update && brew upgrade +$ brew install armadillo cmake hdf5 gnuradio libmatio openssl pkg-config protobuf pugixml boost +$ brew install --cask mactex # when completed, restart Terminal +$ brew install graphviz doxygen +¢ pip3 install mako +``` + +For macOS versions older than Sonoma, you will also need LAPACK: + +``` +$ brew install lapack +``` + +### Other package managers + +GNU Radio and other dependencies can also be installed using other package +managers than Macports, such as [Fink](https://www.finkproject.org/ "Fink"). +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 -S . -B build -DPYTHON_EXECUTABLE=/path/to/bin/python3 +``` + +In case you have installed Macports in a non-standard location, you can use: + +``` +$ cmake -S . -B build -DCMAKE_PREFIX_PATH=/opt/local -DUSE_MACPORTS_PYTHON=/opt/local/bin/python +``` + +changing `/opt/local` by the base directory in which your software is installed. + +The CMake script will create Makefiles that download, build and link Armadillo, +Gflags, Glog, Matio, Protocol Buffers, PugiXML and Google Test on the fly at +compile time if they are not detected in your machine. + +### Build GNSS-SDR + +Finally, you are ready to clone the GNSS-SDR repository, configure and build the +software: + +``` +$ git clone https://github.com/gnss-sdr/gnss-sdr +$ cd gnss-sdr +$ cmake -S . -B build +$ cmake --build build +``` + +This will create three executables at `gnss-sdr/install`, namely `gnss-sdr`, +`run_tests` and `volk_gnsssdr_profile`. You can install the software receiver on +your system by doing: + +``` +$ sudo cmake --install build +``` + +and uninstall it with: + +``` +$ sudo cmake --build build --target uninstall +``` + +Note, it is advisable not to run the install step in a homebrew environment. The documentation can be built by: -~~~~~~ -$ make doc -~~~~~~ +``` +$ cmake --build build --target doc +``` and can be viewed doing: -~~~~~~ -$ open ../docs/html/index.html -~~~~~~ +``` +$ open ./docs/html/index.html +``` -GNSS-SDR comes with a library with some specific Vector-Optimized Library of Kernels (VOLK) and a profiler that will build a config file for the best SIMD architecture for your processor. Run ``volk_gnsssdr_profile`` that is installed into $PREFIX/bin. This program tests all known VOLK kernels for each architecture supported by the processor. When finished, it will write to $HOME/.volk_gnsssdr/volk_gnsssdr_config the best architecture for the VOLK function. This file is read when using a function to know the best version of the function to execute. It mimics GNU Radio's VOLK library, so if you still have not run ```volk_profile```, this is a good moment to do so. +GNSS-SDR comes with a library which is a module of the Vector-Optimized Library +of Kernels (so-called +[VOLK_GNSSSDR](./src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr/README.md)) +and a profiler that will build a config file for the best SIMD architecture for +your processor. Run `volk_gnsssdr_profile` that is installed into `$PREFIX/bin`. +This program tests all known VOLK kernels for each architecture supported by the +processor. When finished, it will write to +`$HOME/.volk_gnsssdr/volk_gnsssdr_config` the best architecture for the VOLK +function. This file is read when using a function to know the best version of +the function to execute. It mimics GNU Radio's [VOLK](https://www.libvolk.org/) +library, so if you still have not run `volk_profile`, this is a good moment to +do so. +## Other builds -Updating GNSS-SDR -================= +- **Docker image**: 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. -If you cloned GNSS-SDR some days ago, it is possible that some developer has updated files at the Git repository. You can update your working copy by doing: +- **Snap package**: [Snaps](https://snapcraft.io) are Linux packages aimed for + Ubuntu or Ubuntu-like distros. Visit + [https://github.com/carlesfernandez/snapcraft-sandbox](https://github.com/carlesfernandez/snapcraft-sandbox) + for instructions, or directly + [get the software from the Snap Store](https://snapcraft.io/gnss-sdr-next): -~~~~~~ -$ git checkout master # Switch to branch you want to update -$ git pull origin master # Download the newest code from our repository -~~~~~~ +

+ Get GNSS-SDR from the Snap Store +

-or, if you want to test the lastest developments: +- **GNSS-SDR in embedded platforms**: we provide a Software Development Kit + (SDK) based on [OpenEmbedded](https://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 Xilinx's Zynq and + ZynqMP architectures, Raspberry Pi, and many others. Please check + [yocto-geniux](https://github.com/carlesfernandez/yocto-geniux) for + instructions on how to build bootable images. -~~~~~~ -$ git checkout next -$ git pull origin next -~~~~~~ +# Updating GNSS-SDR -Before rebuilding the source code, it is safe (and recommended) to remove the remainders of old compilations: +If you cloned or forked GNSS-SDR some time ago, it is possible that some +developer has updated files at the Git repository. If you still have not done +so, add the `upstream` repository to the list of remotes: -~~~~~~ +``` +$ git remote add upstream https://github.com/gnss-sdr/gnss-sdr.git +``` + +and then you can update your working copy by doing: + +``` +$ git checkout main # Switch to branch you want to update +$ git pull upstream main # Download the newest code from our repository +``` + +or, if you want to test the latest developments: + +``` +$ git checkout next +$ git pull upstream next +``` + +Before rebuilding the source code, it is safe (and recommended) to remove the +remainders of old compilations, _e.g._: + +``` $ rm -rf gnss-sdr/build/* -~~~~~~ +``` -If you are interested in contributing to the development of GNSS-SDR, please check out [how to do it](http://gnss-sdr.org/documentation/how-contribute-source-code "How to contribute to GNSS-SDR source code"). +If you are interested in contributing to the development of GNSS-SDR, please +check out +[how to do it](https://gnss-sdr.org/contribute/ "How to contribute to GNSS-SDR source code"). -There is a more controlled way to upgrade your repository, which is to use the Git commands ```fetch``` and ```merge```, as described [here](http://gnss-sdr.org/source-code). +There is a more controlled way to upgrade your repository, which is to use the +Git commands `fetch` and `merge`, as described in our +[Git Tutorial](https://gnss-sdr.org/docs/tutorials/using-git/ "Using Git"). - +# Getting started - -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``` 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). -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 underuns 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```. - 5. If you have no access to a 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/). -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: - * ```SignalSource.filename=``` (absolute or relative route to your GNSS signal captured file) - * ```GNSS-SDR.internal_fs_hz=``` (captured file sampling rate in Hz) - * ```SignalSource.sampling_frequency=``` (captured file sampling rate in Hz) - * ```SignalConditioner.sample_freq_in=``` (captured file sampling rate in Hz) - * ```SignalConditioner.sample_freq_out=``` (captured file sampling rate in Hz) - * ```TelemetryDecoder.fs_in=``` (captured file sampling rate in Hz) - 3. The configuration file has in-line documentation, you can try to tune the number of channels and several receiver parameters. Store your .conf file in some working directory of your choice. +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` mode. 2. You will need a GPS active antenna, a + [USRP](https://www.ettus.com/products/) and a suitable USRP daughter board to + receive GPS L1 C/A signals. GNSS-SDR requires to have at least 2 MHz of + bandwidth in 1.57542 GHz. (remember to enable the DC bias with the + daughterboard jumper). We use a + [DBSRX2](https://www.ettus.com/all-products/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 a complex float file sink. You + need to tune the USRP central frequency and decimation factor using the 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 it to a virtual RAM drive. + 80 seconds of signal at 5 MSPS occupies less than 3 Gbytes using + `gr_complex`. 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: + - `SignalSource.filename=` (absolute or relative route to your GNSS signal + captured file) + - `GNSS-SDR.internal_fs_sps=` (captured file sampling rate in samples per + second) + - `SignalSource.sampling_frequency=` (captured file sampling rate in + samples per second) + - `SignalConditioner.sample_freq_in=` (captured file sampling rate in + samples per second) + - `SignalConditioner.sample_freq_out=` (captured file sampling rate in + samples per second) + 3. The configuration file has in-line documentation, you can try to tune the + number of channels and several receiver parameters. Store your .conf file + in some working directory of your choice. 4. Run the receiver invoking the configuration by -```$ gnss-sdr --config_file=/path/to/my_receiver.conf``` -The program reports the current status in text mode, directly to the terminal window. If all goes well, and GNSS-SDR is able to successfully track and decode at least 4 satellites, you will get PVT fixes. The program will write a .kml file and RINEX (yet experimental) files in the install directory. In addition to the console output, GNSS-SDR also writes log files at /tmp/ (configurable with the commandline flag ```./gnss-sdr --log_dir=/path/to/log```). + `$ gnss-sdr --config_file=/path/to/my_receiver.conf` The program reports the + current status in text mode, directly to the terminal window. If all goes + well, and GNSS-SDR is able to successfully track and decode at least 4 + satellites, you will get PVT fixes. The program will write .kml, .geojson and + RINEX files in the folder from which `gnss-sdr` was run. In addition to the + console output, GNSS-SDR also writes log files at /tmp/ (configurable with + the commandline flag `./gnss-sdr --log_dir=/path/to/log`). - +For more information, check out our +[quick start guide](https://gnss-sdr.org/quick-start-guide/). +# Using GNSS-SDR -Using GNSS-SDR -============== +With GNSS-SDR, you can define your own receiver, work with captured raw data or +from an RF front-end, dump into files intermediate signals, or tune every single +algorithm used in the signal processing. All the configuration is done in a +single file. Those configuration files reside at the [gnss-sdr/conf/](./conf/) +folder (or at /usr/local/share/gnss-sdr/conf if you installed the program). By +default, the executable `gnss-sdr` will read the configuration available at +`gnss-sdr/conf/gnss-sdr.conf` (or at (usr/local/share/gnss-sdr/conf/default.conf +if you installed the program). You can edit that file to fit your needs, or even +better, define a new `my_receiver.conf` file with your own configuration. This +new receiver can be generated by invoking gnss-sdr with the `--config_file` flag +pointing to your configuration file: -With GNSS-SDR, you can define you own receiver, work with captured raw data or from a RF front-end, dump into files intermediate signals, or tune every single algorithm used in the signal processing. All the configuration is done in a single file. Those configuration files reside at the [gnss-sdr/conf/](./conf/) folder (or at /usr/local/share/gnss-sdr/conf if you installed the program). By default, the executable ```gnss-sdr``` will read the configuration available at ```gnss-sdr/conf/gnss-sdr.conf``` (or at (usr/local/share/gnss-sdr/conf/default.conf if you installed the program). You can edit that file to fit your needs, or even better, define a new ```my_receiver.conf``` file with your own configuration. This new receiver can be generated by invoking gnss-sdr with the ```--config_file``` flag pointing to your configuration file: - -~~~~~~ +``` $ gnss-sdr --config_file=/path/to/my_receiver.conf -~~~~~~ +``` -You can see a guide of available implementations at ```gnss-sdr/conf/master.conf```. That folder contains other working examples as well. If you have a working configuration and want to share it will others, please tell us and we will be happy to upload it to the server. +You can use a single configuration file for processing different data files, +specifying the file to be processed with the `--signal_source` flag: -You can use a single configuration file for processing different data files, specifying the file to be processed with the ```--signal_source``` flag: +``` +$ gnss-sdr --config_file=../conf/my_receiver.conf --signal_source=./my_captured_data.dat +``` -~~~~~~ -$ gnss-sdr --config_file=../conf/my_receiver.conf --signal_source=../data/my_captured_data.dat -~~~~~~ +This will override the `SignalSource.filename` specified in the configuration +file. - -This will override the ```SignalSource.filename``` specified in the configuration file. - - - - -Control plane -------------- +## Control plane ![](./docs/doxygen/images/GeneralBlockDiagram.png) -GNSS-SDR's main method initializes the logging library, processes the command line flags, if any, provided by the user and instantiates a [ControlThread](./src/core/receiver/control_thread.h) object. Its constructor reads the configuration file, creates a control queue and creates a flowgraph according to the configuration. Then, the program's main method calls the run() method of the instantiated object, an action that connects the flowgraph and starts running it. After that, and until a stop message is received, it reads control messages sent by the receiver's modules through a safe-thread queue and processes them. Finally, when a stop message is received, the main method executes the destructor of the ControlThread object, which deallocates memory, does other cleanup and exits the program. +GNSS-SDR's main method initializes the logging library, processes the command +line flags, if any, provided by the user and instantiates a +[ControlThread](./src/core/receiver/control_thread.h) object. Its constructor +reads the configuration file, creates a control queue, and creates a flowgraph +according to the configuration. Then, the program's main method calls the run() +method of the instantiated object, an action that connects the flowgraph and +starts running it. After that, and until a stop message is received, it reads +control messages sent by the receiver's modules through a safe-thread queue and +processes them. Finally, when a stop message is received, the main method +executes the destructor of the ControlThread object, which deallocates memory, +does other cleanup, and exits the program. -The [GNSSFlowgraph](./src/core/receiver/gnss_flowgraph.h) class is responsible for preparing the graph of blocks according to the configuration, running it, modifying it during run-time and stopping it. Blocks are identified by its role. This class knows which roles it has to instantiate and how to connect them. It relies on the configuration to get the correct instances of the roles it needs and then it applies the connections between GNU Radio blocks to make the graph ready to be started. The complexity related to managing the blocks and the data stream is handled by GNU Radio's ```gr::top_block``` class. GNSSFlowgraph wraps the ```gr::top_block``` instance so we can take advantage of the ```gnss_block_factory``` (see below), the configuration system and the processing blocks. This class is also responsible for applying changes to the configuration of the flowgraph during run-time, dynamically reconfiguring channels: it selects the strategy for selecting satellites. This can range from a sequential search over all the satellites' ID to other more efficient approaches. +The [GNSSFlowgraph](./src/core/receiver/gnss_flowgraph.h) class is responsible +for preparing the graph of blocks according to the configuration, running it, +modifying it during run-time, and stopping it. Blocks are identified by their +role. This class knows which roles it has to instantiate and how to connect +them. It relies on the configuration to get the correct instances of the roles +it needs and then it applies the connections between GNU Radio blocks to make +the graph ready to be started. The complexity related to managing the blocks and +the data stream is handled by GNU Radio's `gr::top_block` class. GNSSFlowgraph +wraps the `gr::top_block` instance so we can take advantage of the +`gnss_block_factory` (see below), the configuration system, and the processing +blocks. This class is also responsible for applying changes to the configuration +of the flowgraph during run-time, dynamically reconfiguring channels: it selects +the strategy for selecting satellites. This can range from a sequential search +over all the satellites' ID to other more efficient approaches. -The Control Plane is in charge of creating a flowgraph according to the configuration and then managing the modules. Configuration allows users to define in an easy way their own custom receiver by specifying the flowgraph (type of signal source, number of channels, algorithms to be used for each channel and each module, strategies for satellite selection, type of output format, etc.). Since it is difficult to foresee what future module implementations will be needed in terms of configuration, we used a very simple approach that can be extended without a major impact in the code. This can be achieved by simply mapping the names of the variables in the modules with the names of the parameters in the configuration. - - +The Control Plane is in charge of creating a flowgraph according to the +configuration and then managing the modules. Configuration allows users to +define in an easy way their own custom receiver by specifying the flowgraph +(type of signal source, number of channels, algorithms to be used for each +channel and each module, strategies for satellite selection, type of output +format, etc.). Since it is difficult to foresee what future module +implementations will be needed in terms of configuration, we used a very simple +approach that can be extended without a major impact on the code. This can be +achieved by simply mapping the names of the variables in the modules with the +names of the parameters in the configuration. ### Configuration -Properties are passed around within the program using the [ConfigurationInterface](./src/core/interfaces/configuration_interface.h) class. There are two implementations of this interface: [FileConfiguration](./src/core/receiver/file_configuration.h) and [InMemoryConfiguration](./src/core/receiver/in_memory_configuration.h). FileConfiguration reads the properties (pairs of property name and value) from a file and stores them internally. InMemoryConfiguration does not read from a file; it remains empty after instantiation and property values and names are set using the set property method. FileConfiguration is intended to be used in the actual GNSS-SDR application whereas InMemoryConfiguration is intended to be used in tests to avoid file-dependency in the file system. Classes that need to read configuration parameters will receive instances of ConfigurationInterface from where they will fetch the values. For instance, parameters related to SignalSource should look like this: +Properties are passed around within the program using the +[ConfigurationInterface](./src/core/interfaces/configuration_interface.h) class. +There are two implementations of this interface: +[FileConfiguration](./src/core/receiver/file_configuration.h) and +[InMemoryConfiguration](./src/core/receiver/in_memory_configuration.h). +FileConfiguration reads the properties (pairs of property name and value) from a +file and stores them internally. InMemoryConfiguration does not read from a +file; it remains empty after instantiation and property values and names are set +using the set property method. FileConfiguration is intended to be used in the +actual GNSS-SDR application whereas InMemoryConfiguration is intended to be used +in tests to avoid file-dependency in the file system. Classes that need to read +configuration parameters will receive instances of ConfigurationInterface from +where they will fetch the values. For instance, parameters related to +SignalSource should look like this: -~~~~~~ +``` SignalSource.parameter1=value1 SignalSource.parameter2=value2 -~~~~~~ +``` -The name of these parameters can be anything but one reserved word: implementation. This parameter indicates in its value the name of the class that has to be instantiated by the factory for that role. For instance, if our signal source is providing data already at baseband and thus we want to use the implementation [Pass_Through](./src/algorithms/libs/pass_through.h) for module SignalConditioner, the corresponding line in the configuration file would be +The name of these parameters can be anything but one reserved word: +implementation. This parameter indicates in its value the name of the class that +has to be instantiated by the factory for that role. For instance, if our signal +source is providing data already at baseband and thus we want to use the +implementation [Pass_Through](./src/algorithms/libs/pass_through.h) for module +SignalConditioner, the corresponding line in the configuration file would be -~~~~~~ +``` 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)). ### GNSS block factory -Hence, the application defines a simple accessor class to fetch the configuration pairs of values and passes them to a factory class called [GNSSBlockFactory](./src/core/receiver/gnss_block_factory.h). This factory decides, according to the configuration, which class needs to be instantiated and which parameters should be passed to the constructor. Hence, the factory encapsulates the complexity of blocks' instantiation. With that approach, adding a new block that requires new parameters will be as simple as adding the block class and modifying the factory to be able to instantiate it. This loose coupling between the blocks' implementations and the syntax of the configuration enables extending the application capacities in a high degree. It also allows to produce fully customized receivers, for instance a testbed for acquisition algorithms, and to place observers at any point of the receiver chain. +Hence, the application defines a simple accessor class to fetch the +configuration pairs of values and passes them to a factory class called +[GNSSBlockFactory](./src/core/receiver/gnss_block_factory.h). This factory +decides, according to the configuration, which class needs to be instantiated +and which parameters should be passed to the constructor. Hence, the factory +encapsulates the complexity of blocks' instantiation. With that approach, adding +a new block that requires new parameters will be as simple as adding the block +class and modifying the factory to be able to instantiate it. This loose +coupling between the blocks' implementations and the syntax of the configuration +enables extending the application capacities to a high degree. It also allows +producing fully customized receivers, for instance a testbed for acquisition +algorithms, and to place observers at any point of the receiver chain. - +More information can be found at the +[Control Plane page](https://gnss-sdr.org/docs/control-plane/). +## Signal Processing plane -Signal Processing plane ------------------------ - -GNU Radio's class ```gr::basic_block``` is the abstract base class for all signal processing blocks, a bare abstraction of an entity that has a name and a set of inputs and outputs. It is never instantiated directly; rather, this is the abstract parent class of both ```gr::hier_block2```, which is a recursive container that adds or removes processing or hierarchical blocks to the internal graph, and ```gr::block```, which is the abstract base class for all the processing blocks. +GNU Radio's class `gr::basic_block` is the abstract base class for all signal +processing blocks, a bare abstraction of an entity that has a name and a set of +inputs and outputs. It is never instantiated directly; rather, this is the +abstract parent class of both `gr::hier_block2`, which is a recursive container +that adds or removes processing or hierarchical blocks to the internal graph, +and `gr::block`, which is the abstract base class for all the processing blocks. ![](./docs/doxygen/images/ClassHierarchy.png) -A signal processing flow is constructed by creating a tree of hierarchical blocks, which at any level may also contain terminal nodes that actually implement signal processing functions. +A signal processing flow is constructed by creating a tree of hierarchical +blocks, which at any level may also contain terminal nodes that actually +implement signal processing functions. -Class ```gr::top_block``` is the top-level hierarchical block representing a flowgraph. It defines GNU Radio runtime functions used during the execution of the program: run(), start(), stop(), wait(), etc. A a subclass called [GNSSBlockInterface](./src/core/interfaces/gnss_block_interface.h) is the common interface for all the GNSS-SDR modules. It defines pure virtual methods, that are required to be implemented by a derived class. +Class `gr::top_block` is the top-level hierarchical block representing a +flowgraph. It defines GNU Radio runtime functions used during the execution of +the program: run(), start(), stop(), wait(), etc. A subclass called +[GNSSBlockInterface](./src/core/interfaces/gnss_block_interface.h) is the common +interface for all the GNSS-SDR modules. It defines pure virtual methods, that +are required to be implemented by a derived class. -Subclassing GNSSBlockInterface, we defined interfaces for the GNSS receiver blocks depicted in the figure above. This hierarchy provides the definition of different algorithms and different implementations, which will be instantiated according to the configuration. This strategy allows multiple implementations sharing a common interface, achieving the objective of decoupling interfaces from implementations: it defines a family of algorithms, encapsulates each one, and makes them interchangeable. Hence, we let the algorithm vary independently from the program that uses it. +Subclassing GNSSBlockInterface, we defined interfaces for the GNSS receiver +blocks depicted in the figure above. This hierarchy provides the definition of +different algorithms and different implementations, which will be instantiated +according to the configuration. This strategy allows multiple implementations to +share a common interface, achieving the objective of decoupling interfaces from +implementations: it defines a family of algorithms, encapsulates each one, and +makes them interchangeable. Hence, we let the algorithm vary independently of +the program that uses it. -Internally, GNSS-SDR makes use of the complex data types defined by [VOLK](http://libvolk.org/ "Vector-Optimized Library of Kernels home"). They are fundamental for handling sample streams in which samples are complex numbers with real and imaginary components of 8, 16 or 32 bits, common formats delivered by GNSS (and generic SDR) radio frequency front-ends. The following list shows the data type names that GNSS-SDR exposes through the configuration file: +Internally, GNSS-SDR makes use of the complex data types defined by +[VOLK](https://www.libvolk.org/ "Vector-Optimized Library of Kernels home"). +They are fundamental for handling sample streams in which samples are complex +numbers with real and imaginary components of 8, 16, or 32 bits, common formats +delivered by GNSS (and generic SDR) radio frequency front-ends. The following +list shows the data type names that GNSS-SDR exposes through the configuration +file: -- **`byte`**: Signed integer, 8-bit two's complement number ranging from -128 to 127. C++ type name: `int8_t`. -- **`short`**: Signed integer, 16-bit two's complement number ranging from -32768 to 32767. C++ type name: `int16_t` . -- **`float`**: Defines numbers with fractional parts, can represent values ranging from approx. 1.5e-45 to 3.4e+38 with a precision of 7 digits (32 bits). C++ type name: `float`. -- **`ibyte`**: Interleaved (I&Q) stream of samples of type `byte`. C++ type name: `int8_t`. -- **`ishort`**: Interleaved (I&Q) stream of samples of type `short`. C++ type name: `int16_t`. -- **`cbyte`**: Complex samples, with real and imaginary parts of type `byte`. C++ type name: `lv_8sc_t`. -- **`cshort`**: Complex samples, with real and imaginary parts of type `short`. C++ type name: `lv_16sc_t`. -- **`gr_complex`**: Complex samples, with real and imaginary parts of type `float`. C++ type name: `std::complex`. +- **`byte`**: Signed integer, 8-bit two's complement number ranging from -128 + to 127. C++ type name: `int8_t`. +- **`short`**: Signed integer, 16-bit two's complement number ranging from + -32768 to 32767. C++ type name: `int16_t` . +- **`float`**: Defines numbers with fractional parts, can represent values + ranging from approx. 1.5e-45 to 3.4e+38 with a precision of 7 digits (32 + bits). C++ type name: `float`. +- **`ibyte`**: Interleaved (I&Q) stream of samples of type `byte`. C++ type + name: `int8_t`. +- **`ishort`**: Interleaved (I&Q) stream of samples of type `short`. C++ type + name: `int16_t`. +- **`cbyte`**: Complex samples, with real and imaginary parts of type `byte`. + C++ type name: `lv_8sc_t`. +- **`cshort`**: Complex samples, with real and imaginary parts of type `short`. + C++ type name: `lv_16sc_t`. +- **`gr_complex`**: Complex samples, with real and imaginary parts of type + `float`. C++ type name: `std::complex`. +More information about the available processing blocks and their configuration +parameters can be found at the +[Signal Processing Blocks documentation page](https://gnss-sdr.org/docs/sp-blocks/). +### Signal Source +The inputs of a software receiver are the raw bits that come out from the +front-end's analog-to-digital converter (ADC). Those bits can be read from a +file stored in the hard disk or directly in real-time from a hardware device +through USB or Ethernet buses. -### Signal Source +The Signal Source module is in charge of implementing the hardware driver, that +is, the portion of the code that communicates with the RF front-end and receives +the samples coming from the ADC. This communication is usually performed through +USB or Ethernet buses. Since real-time processing requires a highly optimized +implementation of the whole receiver, this module also allows reading samples +from a file stored in a hard disk, and thus processing without time constraints. +Relevant parameters of those samples are the intermediate frequency (or baseband +I&Q components), the sampling rate, and the number of bits per sample, which +must be specified by the user in the configuration file. -The input of a software receiver are the raw bits that come out from the front-end's analog-to-digital converter (ADC). Those bits can be read from a file stored in the hard disk or directly in real-time from a hardware device through USB or Ethernet buses. +This module also performs bit-depth adaptation, since most of the existing RF +front-ends provide samples quantized with 2 or 3 bits, while operations inside +the processor are performed on 32- or 64-bit words, depending on its +architecture. Although there are implementations of the most intensive +computational processes (mainly correlation) that take advantage of specific +data types and architectures for the sake of efficiency, the approach is +processor-specific and hardly portable. We suggest keeping signal samples in +standard data types and letting the compiler select the best library version +(implemented using SIMD or any other processor-specific technology) of the +required routines for a given processor. -The Signal Source module is in charge of implementing the hardware driver, that is, the portion of the code that communicates with the RF front-end and receives the samples coming from the ADC. This communication is usually performed through USB or Ethernet buses. Since real-time processing requires a highly optimized implementation of the whole receiver, this module also allows to read samples from a file stored in a hard disk, and thus processing without time constraints. Relevant parameters of those samples are the intermediate frequency (or baseband I&Q components), the sampling rate and number of bits per sample, that must be specified by the user in the configuration file. +**_Example: File Signal Source_** -This module also performs bit-depth adaptation, since most of the existing RF front-ends provide samples quantized with 2 or 3 bits, while operations inside the processor are performed on 32- or 64-bit words, depending on its architecture. Although there are implementations of the most intensive computational processes (mainly correlation) that take advantage of specific data types and architectures for the sake of efficiency, the approach is processor-specific and hardly portable. We suggest to keep signal samples in standard data types and letting the compiler select the best library version (implemented using SIMD or any other processor-specific technology) of the required routines for a given processor. - -***Example: FileSignalSource*** +The user can configure the receiver for reading from a file, setting in the +configuration file the data file location, sample format, and the sampling +frequency and intermediate frequency at what the signal was originally captured. -The user can configure the receiver for reading from a file, setting in the configuration file the data file location, sample format, and the sampling frequency and intermediate frequency at what the signal was originally captured. - -~~~~~~ +``` ;######### SIGNAL_SOURCE CONFIG ############ SignalSource.implementation=File_Signal_Source SignalSource.filename=/home/user/gnss-sdr/data/my_capture.dat SignalSource.item_type=gr_complex -SignalSource.sampling_frequency=4000000 ; Sampling frequency in [Hz] -SignalSource.freq=1575420000 ; RF front-end center frequency in [Hz] -~~~~~~ +SignalSource.sampling_frequency=4000000 ; Sampling frequency in samples per second (Sps) +``` -Type ```gr_complex``` refers to a GNU Radio typedef equivalent to ```std::complex```. In order to save some storage space, you might wanted to store your signal in a more efficient format such as an I/Q interleaved ```short`` integer sample stream. In that case, change the corresponding line to: +Type `gr_complex` refers to a GNU Radio typedef equivalent to +`std::complex`. In order to save some storage space, you might want to +store your signal in a more efficient format such as an I/Q interleaved `short` +integer sample stream. In that case, change the corresponding line to: -~~~~~~ +``` +SignalSource.item_type=ishort +``` + +In this latter case, you will need to convert the interleaved I/Q samples to a +complex stream via Data Type Adapter block (see below). + +**_Example: Two-bit packed file source_** + +Sometimes, samples are stored in files with a format that is not in the list of +_native_ types supported by the `File_Signal_Source` implementation (i.e, it is +not among `byte`, `ibyte`, `short`, `ishort`, `float`, or `gr_complex`). This is +the case of 2-bit samples, which is a common format delivered by GNSS RF +front-ends. The `Two_Bit_Packed_File_Signal_Source` implementation allows +reading two-bit length samples from a file. The data is assumed to be packed as +bytes `item_type=byte` or shorts `item_type=short` so that there are 4 two-bit +samples in each byte. The two-bit values are assumed to have the following +interpretation: + +| **b_1** | **b_0** | **Value** | +| :-----: | :-----: | :-------: | +| 0 | 0 | +1 | +| 0 | 1 | +3 | +| 1 | 0 | -3 | +| 1 | 1 | -1 | + +Within a byte the samples may be packed in big-endian `big_endian_bytes=true` +(if the most significant byte value is stored at the memory location with the +lowest address, the next byte value in significance is stored at the following +memory location, and so on) or little-endian `big_endian_bytes=false` (if the +least significant byte value is at the lowest address, and the other bytes +follow in increasing order of significance). If the order is big-endian then the +most significant two bits will form the first sample output. Otherwise, the +least significant two bits will be used. + +Additionally, the samples may be either real `sample_type=real`, or complex. If +the sample type is complex, then the samples are either stored in the order: +real, imag, real, imag, ... `sample_type=iq` or in the order: imag, real, imag, +real, ... `sample_type=qi`. + +Finally, if the data is stored as shorts `item_type=short`, then it may be +stored in either big-endian `big_endian_items=true` or little-endian +`big_endian_items=false`. If the shorts are big-endian then the 2nd byte in each +short is output first. + +The output data type is either `float` or `gr_complex` depending on whether or +not `sample_type` is real. Example: + +``` +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Two_Bit_Packed_File_Signal_Source +SignalSource.filename=/data/my_capture.datz SignalSource.item_type=short -~~~~~~ +SignalSource.sampling_frequency=60000000 +SignalSource.freq=1575468750 +SignalSource.samples=6000000000 ; Notice that 0 indicates the entire file. +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +SignalSource.enable_throttle_control=false +SignalSource.sample_type=iq +SignalSource.big_endian_items=true +SignalSource.big_endian_bytes=false +``` -In this latter case, you will need to convert the interleaved I/Q samples to a complex stream via Data Type Adapter block (see below). +**_Example: UHD Signal Source_** -***Example: UhdSignalSource*** +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: -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: - -~~~~~~ +``` ;######### SIGNAL_SOURCE CONFIG ############ SignalSource.implementation=UHD_Signal_Source SignalSource.item_type=gr_complex SignalSource.sampling_frequency=4000000 ; Sampling frequency in [Hz] -SignalSource.freq=1575420000 ; RF front-end center frequency in [Hz] +SignalSource.freq=1575420000 ; RF front-end center frequency in [Hz] SignalSource.gain=60 ; Front-end gain in dB SignalSource.subdevice=B:0 ; UHD subdevice specification (for USRP1 use A:0 or B:0, for USRP B210 use A:0) -~~~~~~ +``` -Other examples are available at [gnss-sdr/conf/](./conf/). +**_Example: Configuring the USRP X300/X310 with two front-ends for receiving +signals in L1 and L2 bands_** +``` +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=UHD_Signal_Source +SignalSource.device_address=192.168.40.2 ; Put your USRP IP address here +SignalSource.item_type=gr_complex +SignalSource.RF_channels=2 +SignalSource.sampling_frequency=4000000 +SignalSource.subdevice=A:0 B:0 +;######### RF Channels specific settings ###### +SignalSource.freq0=1575420000 +SignalSource.gain0=50 +SignalSource.samples0=0 +SignalSource.dump0=false + +SignalSource.freq1=1227600000 +SignalSource.gain1=50 +SignalSource.samples1=0 +SignalSource.dump1=false +``` + +**_Example: OsmoSDR-compatible Signal Source_** + +[OsmoSDR](https://osmocom.org/projects/sdr) is a small form-factor, inexpensive +software defined radio project. It provides a driver for several front-ends, +such as [RTL-based dongles](https://www.rtl-sdr.com/tag/v3/), +[HackRF](https://greatscottgadgets.com/hackrf/), +[bladeRF](https://www.nuand.com/), +[LimeSDR](https://myriadrf.org/projects/limesdr/), +[etc](https://github.com/osmocom/gr-osmosdr/blob/master/README). Note that not +all the OsmoSDR-compatible devices can work as radio frequency front-ends for +proper GNSS signal reception, please check the specifications. For suitable RF +front-ends, you can use: + +``` +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Osmosdr_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=2000000 +SignalSource.freq=1575420000 +SignalSource.rf_gain=40 +SignalSource.if_gain=30 +SignalSource.enable_throttle_control=false +SignalSource.osmosdr_args=hackrf,bias=1 +``` + +For [RTL-SDR Blog V3](https://www.rtl-sdr.com/tag/v3/) dongles, the arguments +are: + +``` +SignalSource.osmosdr_args=rtl,bias=1 +``` + +and for [LimeSDR](https://myriadrf.org/projects/limesdr/): + +``` +SignalSource.osmosdr_args=driver=lime,soapy=0 +``` + +In case of using a Zarlink's RTL2832 based DVB-T receiver, you can even use the +`rtl_tcp` I/Q server in order to use the USB dongle remotely. In a terminal, +type: + +``` +$ rtl_tcp -a 127.0.0.1 -p 1234 -f 1575420000 -g 0 -s 2000000 +``` + +and use the following configuration: + +``` +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=RtlTcp_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=1200000 +SignalSource.freq=1575420000 +SignalSource.gain=40 +SignalSource.rf_gain=40 +SignalSource.if_gain=30 +SignalSource.AGC_enabled=false +SignalSource.samples=0 +SignalSource.enable_throttle_control=false +SignalSource.address=127.0.0.1 +SignalSource.port=1234 +SignalSource.swap_iq=false +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +``` + +Example for a dual-frequency receiver: + +``` +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=UHD_Signal_Source +SignalSource.device_address=192.168.40.2 ; Put your USRP IP address here +SignalSource.item_type=gr_complex +SignalSource.RF_channels=2 +SignalSource.sampling_frequency=4000000 +SignalSource.subdevice=A:0 B:0 + +;######### RF Channels specific settings ###### +SignalSource.freq0=1575420000 +SignalSource.gain0=50 +SignalSource.samples0=0 +SignalSource.dump0=false + +SignalSource.freq1=1227600000 +SignalSource.gain1=50 +SignalSource.samples1=0 +SignalSource.dump1=false +``` + +More documentation and examples are available at the +[Signal Source Blocks page](https://gnss-sdr.org/docs/sp-blocks/signal-source/). ### Signal Conditioner ![](./docs/doxygen/images/SignalConditioner.png) -The signal conditioner is in charge of resampling the signal and delivering a reference sample rate to the downstream processing blocks, acting as a facade between the signal source and the synchronization channels, providing a simplified interface to the input signal. In case of multiband front-ends, this module would be in charge of providing a separated data stream for each band. +The signal conditioner is in charge of resampling the signal and delivering a +reference sample rate to the downstream processing blocks, acting as a facade +between the signal source and the synchronization channels, providing a +simplified interface to the input signal. In the case of multiband front-ends, +this module would be in charge of providing a separated data stream for each +band. -If your signal source is providing baseband signal samples of type ```gr_complex``` at 4 Msps, you can bypass the Signal Conditioner block by: +If your signal source is providing baseband signal samples of type `gr_complex` +at 4 Msps, you can bypass the Signal Conditioner block by: -~~~~~~ +``` SignalConditioner.implementation=Pass_Through -~~~~~~ +``` -If you need to adapt some aspect of you signal, you can enable the Signal Conditioner and configure three internal blocks: a data type adpater, an input signal and a resampler. +If you need to adapt some aspect of your signal, you can enable the Signal +Conditioner and configure three internal blocks: a data type adapter, an input +signal, and a resampler. -~~~~~~ +``` ;#[Signal_Conditioner] enables this block. Then you have to configure [DataTypeAdapter], [InputFilter] and [Resampler] blocks SignalConditioner.implementation=Signal_Conditioner -~~~~~~ - +``` + +More documentation at the +[Signal Conditioner Blocks page](https://gnss-sdr.org/docs/sp-blocks/signal-conditioner/). #### Data type adapter -This block changes the type of input data samples. If your signal source delivers data samples of type ```short```, you can use this block to convert them to ```gr_complex``` like this: +This block changes the type of input data samples. If your signal source +delivers data samples of type `short`, you can use this block to convert them to +`gr_complex` like this: -~~~~~~ +``` ;######### DATA_TYPE_ADAPTER CONFIG ############ ;#implementation: [Pass_Through] disables this block DataTypeAdapter.implementation=Ishort_To_Complex -~~~~~~ +``` - +More documentation at the +[Data Type Adapter Blocks page](https://gnss-sdr.org/docs/sp-blocks/data-type-adapter/). #### Input filter -This blocks 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 reponse 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://www.gnuradio.org/doc/doxygen/pm__remez_8h.html), which +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: -~~~~~~ +``` ;######### INPUT_FILTER CONFIG ############ ;#implementation: Use [Pass_Through] or [Fir_Filter] or [Freq_Xlating_Fir_Filter] ;#[Pass_Through] disables this block @@ -666,7 +1549,7 @@ The block can be configured like this: ;#[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 InputFilter.dump=false ; #dump: Dump the filtered data to a file. -InputFilter.dump_filename=../data/input_filter.dat ; #dump_filename: Log path and filename. +InputFilter.dump_filename=./input_filter.dat ; #dump_filename: Log path and filename. InputFilter.input_item_type=gr_complex InputFilter.output_item_type=gr_complex InputFilter.taps_item_type=float @@ -691,7 +1574,7 @@ InputFilter.ampl2_end=0.0 InputFilter.band1_error=1.0 InputFilter.band2_error=1.0 -;#filter_type: one of "bandpass", "hilbert" or "differentiator" +;#filter_type: one of "bandpass", "hilbert" or "differentiator" InputFilter.filter_type=bandpass ;#grid_density: determines how accurately the filter will be constructed. @@ -703,54 +1586,70 @@ InputFilter.grid_density=16 InputFilter.sampling_frequency=4000000 InputFilter.IF=0 InputFilter.decimation_factor=1 -~~~~~~ +``` - +More documentation at the +[Input Filter Blocks page](https://gnss-sdr.org/docs/sp-blocks/input-filter/). #### Resampler -This block resamples the input data stream. The ```Direct_Resampler``` block implements a nearest neigbourhood interpolation: +This block resamples the input data stream. The `Direct_Resampler` block +implements a nearest neighbourhood interpolation: -~~~~~~ +``` ;######### RESAMPLER CONFIG ############ ;#implementation: Use [Pass_Through] or [Direct_Resampler] ;#[Pass_Through] disables this block Resampler.implementation=Direct_Resampler Resampler.dump=false ; Dumps the resampled data to a file. -Resampler.dump_filename=../data/resampler.dat ; log path and filename. -Resampler.item_type=gr_complex +Resampler.dump_filename=./resampler.dat ; log path and filename. +Resampler.item_type=gr_complex Resampler.sample_freq_in=8000000 ; sample frequency of the input signal Resampler.sample_freq_out=4000000 ; desired sample frequency of the output signal -~~~~~~ +``` - +More documentation at the +[Resampler Blocks page](https://gnss-sdr.org/docs/sp-blocks/resampler/). -### Channel +### Channel -A channel encapsulates all signal processing devoted to a single satellite. Thus, it is a large composite object which encapsulates the acquisition, tracking and navigation data decoding modules. As a composite object, it can be treated as a single entity, meaning that it can be easily replicated. Since the number of channels is selectable by the user in the configuration file, this approach helps improving the scalability and maintainability of the receiver. +A channel encapsulates all signal processing devoted to a single satellite. +Thus, it is a large composite object which encapsulates the acquisition, +tracking, and navigation data decoding modules. As a composite object, it can be +treated as a single entity, meaning that it can be easily replicated. Since the +number of channels is selectable by the user in the configuration file, this +approach helps to improve the scalability and maintainability of the receiver. -Each channel must be assigned to a GNSS signal, according to the following identifiers: - -| **Signal** | **Identifier** | -|:------------------|:---------------:| -| GPS L1 C/A | 1C | -| GPS L2 L2C(M) | 2S | -| Galileo E1B | 1B | -| Galileo E5a (I+Q) | 5X | +Each channel must be assigned to a GNSS signal, according to the following +identifiers: +| **Signal** | **Identifier** | +| :------------- | :------------: | +| GPS L1 C/A | 1C | +| Galileo E1b/c | 1B | +| Glonass L1 C/A | 1G | +| Beidou B1I | B1 | +| Galileo E6B | E6 | +| Beidou B3I | B3 | +| GPS L2 L2C(M) | 2S | +| Glonass L2 C/A | 2G | +| GPS L5 | L5 | +| Galileo E5a | 5X | +| Galileo E5b | 7X | Example: Eight GPS L1 C/A channels. -~~~~~~ + +``` ;######### CHANNELS GLOBAL CONFIG ############ Channels_1C.count=8 ; Number of available GPS L1 C/A channels. Channels_1B.count=0 ; Number of available Galileo E1B channels. Channels.in_acquisition=1 ; Number of channels simultaneously acquiring -Channel.signal=1C ; -~~~~~~ - +Channel.signal=1C ; +``` Example: Four GPS L1 C/A and four Galileo E1B channels. -~~~~~~ + +``` ;######### CHANNELS GLOBAL CONFIG ############ Channels_1C.count=4 ; Number of available GPS L1 C/A channels. Channels_1B.count=4 ; Number of available Galileo E1B channels. @@ -763,55 +1662,135 @@ Channel4.signal=1B ; Channel5.signal=1B ; Channel6.signal=1B ; Channel7.signal=1B ; -~~~~~~ +``` -This module is also in charge of managing the interplay between acquisition and tracking. Acquisition can be initialized in several ways, depending on the prior information available (called cold start when the receiver has no information about its position nor the satellites almanac; warm start when a rough location and the approximate time of day are available, and the receiver has a recently recorded almanac broadcast; or hot start when the receiver was tracking a satellite and the signal line of sight broke for a short period of time, but the ephemeris and almanac data is still valid, or this information is provided by other means), and an acquisition process can finish deciding that the satellite is not present, that longer integration is needed in order to confirm the presence of the satellite, or declaring the satellite present. In the latter case, acquisition process should stop and trigger the tracking module with coarse estimations of the synchronization parameters. The mathematical abstraction used to design this logic is known as finite state machine (FSM), that is a behavior model composed of a finite number of states, transitions between those states, and actions. For the implementation, we use the [Boost.Statechart library](http://www.boost.org/libs/statechart/doc/tutorial.html), which provides desirable features such as support for asynchronous state machines, multi-threading, type-safety, error handling and compile-time validation. - -The abstract class [ChannelInterface](./src/core/interfaces/channel_interface.h) represents an interface to a channel GNSS block. Check [Channel](./src/algorithms/channel/adapters/channel.h) for an actual implementation. +This module is also in charge of managing the interplay between acquisition and +tracking. Acquisition can be initialized in several ways, depending on the prior +information available (called cold start when the receiver has no information +about its position nor the satellites' almanac; warm start when a rough location +and the approximate time of day are available, and the receiver has a recently +recorded almanac broadcast; or hot start when the receiver was tracking a +satellite and the signal line of sight broke for a short period of time, but the +ephemeris and almanac data is still valid, or this information is provided by +other means), and an acquisition process can finish deciding that the satellite +is not present, that longer integration is needed in order to confirm the +presence of the satellite, or declaring the satellite present. In the latter +case, the acquisition process should stop and trigger the tracking module with +coarse estimations of the synchronization parameters. The mathematical +abstraction used to design this logic is known as a finite state machine (FSM), +which is a behavior model composed of a finite number of states, transitions +between those states, and actions. + +The abstract class [ChannelInterface](./src/core/interfaces/channel_interface.h) +represents an interface to a channel GNSS block. Check +[Channel](./src/algorithms/channel/adapters/channel.h) for an actual +implementation. + +More documentation at the +[Channels page](https://gnss-sdr.org/docs/sp-blocks/channels/). - #### 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 that 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, which 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: - -~~~~~~ +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: + +``` |-gnss-sdr |---src |-----algorithms |-------acquisition |---------adapters <- Adapters of the processing blocks to an AcquisitionInterface |---------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: +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.dump=false ; Enables internal data file logging [true] or [false] -Acquisition_1C.dump_filename=./acq_dump.dat ; Log path and filename -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.implementation=GPS_L1_CA_PCPS_Acquisition ; Acquisition algorithm selection for this channel -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] +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 ; Signal block duration for the acquisition signal detection [ms] +Acquisition_1C.threshold=2.5 ; Acquisition threshold +Acquisition_1C.pfa=0.01 ; Acquisition false alarm probability. This option overrides the threshold option. Acquisition_1C.doppler_max=10000 ; Maximum expected Doppler shift [Hz] Acquisition_1C.doppler_step=500 ; Doppler step in the grid search [Hz] -~~~~~~ +Acquisition_1C.dump=false ; Enables internal data file logging [true] or [false] +Acquisition_1C.dump_filename=./acq_dump.dat ; Log path and filename +``` +and, for Galileo E1B channels: + +``` +;######### 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.pfa=0.008 +Acquisition_1B.doppler_max=15000 +Acquisition_1B.doppler_step=125 +Acquisition_1B.dump=false +Acquisition_1B.dump_filename=./acq_dump.dat +``` + +More documentation at the +[Acquisition Blocks page](https://gnss-sdr.org/docs/sp-blocks/acquisition/). #### Tracking -When a satellite is declared present, the parameters estimated by the acquisition module are then fed to the receiver tracking module, which represents the second stage of the signal processing unit, aiming to perform a local search for accurate estimates of code delay and carrier phase, and following their eventual variations. +When a satellite is declared present, the parameters estimated by the +acquisition module are then fed to the receiver tracking module, which +represents the second stage of the signal processing unit, aiming to perform a +local search for accurate estimates of code delay and carrier phase, and +following their eventual variations. -Again, a class hierarchy consisting of a [TrackingInterface](./src/core/interfaces/tracking_interface.h) class and subclasses implementing algorithms provides a way of testing different approaches, with full access to their parameters. Check [GpsL1CaDllPllTracking](./src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.h) or [GalileoE1DllPllVemlTracking](./src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.h) for examples of adapters, and [Gps_L1_Ca_Dll_Pll_Tracking_cc](./src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_cc.h) for an example of a signal processing block implementation. There are also available some useful classes and functions for signal tracking; take a look at [correlator.h](./src/algorithms/tracking/libs/correlator.h), [lock_detectors.h](./src/algorithms/tracking/libs/lock_detectors.h), [tracking_discriminators.h](./src/algorithms/tracking/libs/tracking_discriminators.h) or [tracking_2nd_DLL_filter.h](./src/algorithms/tracking/libs/tracking_2nd_DLL_filter.h). +Again, a class hierarchy consisting of a +[TrackingInterface](./src/core/interfaces/tracking_interface.h) class and +subclasses implementing algorithms provides a way of testing different +approaches, with full access to their parameters. Check +[GpsL1CaDllPllTracking](./src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.h) +or +[GalileoE1DllPllVemlTracking](./src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.h) +for examples of adapters, and +[Gps_L1_Ca_Dll_Pll_Tracking_cc](./src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_tracking_cc.h) +for an example of a signal processing block implementation. There are also +available some useful classes and functions for signal tracking; take a look at +[cpu_multicorrelator.h](./src/algorithms/tracking/libs/cpu_multicorrelator.h), +[lock_detectors.h](./src/algorithms/tracking/libs/lock_detectors.h), +[tracking_discriminators.h](./src/algorithms/tracking/libs/tracking_discriminators.h) +or +[tracking_2nd_DLL_filter.h](./src/algorithms/tracking/libs/tracking_2nd_DLL_filter.h). The source code of all the available tracking algorithms is located at: -~~~~~~ +``` |-gnss-sdr |---src |-----algorithms @@ -819,219 +1798,361 @@ The source code of all the available tracking algorithms is located at: |---------adapters <- Adapters of the processing blocks to a TrackingInterface |---------gnuradio_blocks <- Signal processing blocks implementation |---------libs <- libraries of tracking objects (e.g. correlators, discriminators, and so on) -~~~~~~ +``` -The user can select a given implementation for the algorithm to be used in all the tracking blocks, as well as its parameters, in the configuration file: +The user can select a given implementation for the algorithm to be used in all +the tracking blocks, as well as its parameters, in the configuration file. For +instance, for GPS l1 channels: -~~~~~~ -;######### TRACKING GLOBAL CONFIG ############ +``` +;######### TRACKING GPS L1 CONFIG ############ Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking Tracking_1C.item_type=gr_complex -Tracking_1C.if=0 ; Signal Intermediate Frequency in [Hz] -Tracking_1C.dump=false ; Enable internal binary data file logging [true] or [false] -Tracking_1C.dump_filename=./tracking_ch_ ; Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. Tracking_1C.pll_bw_hz=50.0 ; PLL loop filter bandwidth [Hz] Tracking_1C.dll_bw_hz=2.0 ; DLL loop filter bandwidth [Hz] -Tracking_1C.fll_bw_hz=10.0 ; FLL loop filter bandwidth [Hz] -Tracking_1C.order=3 ; PLL/DLL loop filter order [2] or [3] -Tracking_1C.early_late_space_chips=0.5 ; correlator early-late space [chips]. -~~~~~~ +Tracking_1C.pll_filter_order=3 ; PLL loop filter order [2] or [3] +Tracking_1C.dll_filter_order=2 ; DLL loop filter order [1], [2] or [3] +Tracking_1C.early_late_space_chips=0.5 ; correlator early-late space [chips]. +Tracking_1C.dump=false ; Enable internal binary data file logging [true] or [false] +Tracking_1C.dump_filename=./tracking_ch_ ; Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. +``` - +and, for Galileo E1B channels: + +``` +;######### TRACKING GALILEO E1B 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.dll_bw_hz=2.0; +Tracking_1B.pll_filter_order=3 ; PLL loop filter order [2] or [3] +Tracking_1B.dll_filter_order=2 ; DLL loop filter order [1], [2] or [3] +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ +``` + +More documentation at the +[Tracking Blocks page](https://gnss-sdr.org/docs/sp-blocks/tracking/). #### Decoding of the navigation message -Most of GNSS signal links are modulated by a navigation message containing the time the message was transmitted, orbital parameters of satellites (also known as ephemeris) and an almanac (information about the general system health, rough orbits of all satellites in the network as well as data related to error correction). Navigation data bits are structured in words, pages, subframes, frames and superframes. Sometimes, bits corresponding to a single parameter are spread over different words, and values extracted from different frames are required for proper decoding. Some words are for synchronization purposes, others for error control an others contain actual information. There are also error control mechanisms, from parity checks to forward error correction (FEC) encoding and interleaving, depending on the system. All this decoding complexity is managed by a finite state machine implemented with the [Boost.Statechart library](http://www.boost.org/libs/statechart/doc/tutorial.html). +Most of GNSS signal links are modulated by a navigation message containing the +time the message was transmitted, orbital parameters of satellites (also known +as ephemeris), and an almanac (information about the general system health, +rough orbits of all satellites in the network as well as data related to error +correction). Navigation data bits are structured in words, pages, subframes, +frames, and superframes. Sometimes, bits corresponding to a single parameter are +spread over different words, and values extracted from different frames are +required for proper decoding. Some words are for synchronization purposes, +others for error control, and others contain actual information. There are also +error control mechanisms, from parity checks to forward error correction (FEC) +encoding and interleaving, depending on the system. All this decoding complexity +is managed by a finite state machine. -The common interface is [TelemetryDecoderInterface](./src/core/interfaces/telemetry_decoder_interface.h). Check [GpsL1CaTelemetryDecoder](./src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.h) for an example of the GPS L1 NAV message decoding adapter, and [gps_l1_ca_telemetry_decoder_cc](./src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h) for an actual implementation of a signal processing block. Configuration example: +The common interface is +[TelemetryDecoderInterface](./src/core/interfaces/telemetry_decoder_interface.h). +Check +[GpsL1CaTelemetryDecoder](./src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.h) +for an example of the GPS L1 NAV message decoding adapter, and +[gps_l1_ca_telemetry_decoder_cc](./src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h) +for an actual implementation of a signal processing block. Configuration +example: -~~~~~~ +``` ;######### TELEMETRY DECODER CONFIG ############ TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder TelemetryDecoder_1C.dump=false -~~~~~~ +``` +In case you are configuring a multi-system receiver, you will need to decimate +the one with the fastest code rate in order to get both data streams +synchronized. For instance, for hybrid GPS L1 / Galileo E1B receivers: - +``` +;######### TELEMETRY DECODER GPS L1 CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false -#### Observables +;######### TELEMETRY DECODER GALILEO E1B CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.dump=false +``` -GNSS systems provide different kinds of observations. The most commonly used are the code observations, also called pseudoranges. The *pseudo* comes from the fact that on the receiver side the clock error is unknown and thus the measurement is not a pure range observation. High accuracy applications also use the carrier phase observations, which are based on measuring the difference between the carrier phase transmitted by the GNSS satellites and the phase of the carrier generated in the receiver. Both observables are computed from the outputs of the tracking module and the decoding of the navigation message. This module collects all the data provided by every tracked channel, aligns all received data into a coherent set, and computes the observables. +More documentation at the +[Telemetry Decoder Blocks page](https://gnss-sdr.org/docs/sp-blocks/telemetry-decoder/). -The common interface is [ObservablesInterface](./src/core/interfaces/observables_interface.h). +### Observables + +GNSS systems provide different kinds of observations. The most commonly used are +the code observations, also called pseudoranges. The _pseudo_ comes from the +fact that on the receiver side the clock error is unknown and thus the +measurement is not a pure range observation. High-accuracy applications also use +the carrier phase observations, which are based on measuring the difference +between the carrier phase transmitted by the GNSS satellites and the phase of +the carrier generated in the receiver. Both observables are computed from the +outputs of the tracking module and the decoding of the navigation message. This +module collects all the data provided by every tracked channel, aligns all +received data into a coherent set, and computes the observables. + +The common interface is +[ObservablesInterface](./src/core/interfaces/observables_interface.h). Configuration example: -~~~~~~ +``` ;######### OBSERVABLES CONFIG ############ -Observables.implementation=GPS_L1_CA_Observables +Observables.implementation=Hybrid_Observables Observables.dump=false Observables.dump_filename=./observables.dat -~~~~~~ +``` - +More documentation at the +[Observables Blocks page](https://gnss-sdr.org/docs/sp-blocks/observables/). -#### 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 a simple least square solution and leaves room for more sophisticated positioning methods. The integration with libraries and software tools that are able to deal with multi-constellation data such as [GPSTk](http://www.gpstk.org), [RTKLIB](http://www.rtklib.com/) or [gLAB](http://gage14.upc.es/gLAB/) appear as viable solutions for high performance, completely customizable GNSS receivers. +### Computation of Position, Velocity, and Time -The common interface is [PvtInterface](./src/core/interfaces/pvt_interface.h). For instance, in order to use the implementation GpsL1CaPvt, add to the configuration file: +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](https://www.topografix.com/gpx.asp), and +[KML](https://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](https://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). + +Configuration example: + +``` ;######### PVT CONFIG ############ -PVT.implementation=GPS_L1_CA_PVT +PVT.implementation=RTKLIB_PVT +PVT.positioning_mode=Single ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic +PVT.iono_model=Broadcast ; options: OFF, Broadcast +PVT.trop_model=Saastamoinen ; options: OFF, Saastamoinen +PVT.rinex_version=2 ; options: 2 or 3 +PVT.output_rate_ms=100 ; Period in [ms] between two PVT outputs +PVT.display_rate_ms=500 ; Position console print (std::out) interval [ms]. PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea ; NMEA log path and filename -PVT.flag_nmea_tty_port=true ; Enable the NMEA log to a serial TTY port +PVT.flag_nmea_tty_port=false ; Enables the NMEA log to a serial TTY port PVT.nmea_dump_devname=/dev/pts/4 ; serial device descriptor for NMEA logging -PVT.dump=false ; Enables the PVT internal binary data file logging [true] or [false] -~~~~~~ +PVT.flag_rtcm_server=true ; Enables or disables a TCP/IP server dispatching RTCM messages +PVT.flag_rtcm_tty_port=false ; Enables the RTCM log to a serial TTY port +PVT.rtcm_dump_devname=/dev/pts/1 ; serial device descriptor for RTCM logging +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1019_rate_ms=5000 +PVT.rtcm_MT1045_rate_ms=5000 +PVT.rtcm_MT1097_rate_ms=1000 +PVT.rtcm_MT1077_rate_ms=1000 +``` -This implementation allows tuning of the following parameters: +**Notes on the output formats:** -~~~~~~ -PVT.averaging_depth=10 ; Number of PVT observations in the moving average algorithm -PVT.flag_averaging=true ; Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.output_rate_ms=100 ; Period in [ms] between two PVT outputs -PVT.display_rate_ms=500 ; Position console print (std::out) interval [ms]. -PVT.dump=false ; Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump_filename=./PVT ; Log path and filename without extension. -~~~~~~ +- **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](https://mapserver.org/), + [GeoServer](https://geoserver.org/), + [GeoDjango](https://www.djangoproject.com), [GDAL](https://gdal.org/), and + [CartoDB](https://cartodb.com). It is also possible to use GeoJSON with + [PostGIS](https://postgis.net/) and [Mapnik](https://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](https://github.com/gwaldron/osgearth), or used with the + [NASA World Wind SDK for Java](https://worldwind.arc.nasa.gov/java/). -#### Output filter +- **GPX** (the GPS Exchange Format) is a lightweight 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](https://www.topografix.com/gpx_resources.asp). -Implements a sink for the signal stream. +- **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](https://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](https://gpsd.gitlab.io/gpsd/index.html "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). -~~~~~~ -;######### OUTPUT_FILTER CONFIG ############ -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex -~~~~~~ +- **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 + [GNSSTK](https://github.com/SGL-UT/gnsstk), [RTKLIB](https://www.rtklib.com/), + and + [gLAB](https://gage.upc.edu/en/learning-materials/software-tools/glab-tool-suite). + GNSS-SDR by default generates RINEX version + [3.02](ftp://igs.org/pub/data/format/rinex302.pdf). If + [2.11](ftp://igs.org/pub/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](https://www.rtcm.org/ "Radio Technical Commission for Maritime Services")), + they have become an industry standard for the 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 behavior can be + changed in the configuration file: -About the software license -========================== +``` +PVT.flag_rtcm_server=true +PVT.rtcm_tcp_port=2102 +PVT.rtcm_station_id=1111 +``` -GNSS-SDR is released under the [General Public License (GPL) v3](http://www.gnu.org/licenses/gpl.html), thus securing practical usability, inspection, and continuous improvement by the research community, allowing the discussion based on tangible code and the analysis of results obtained with real signals. The GPL implies that: +**Important note:** - 1. Copies may be distributed free of charge or for money, but the source code has to be shipped or provided free of charge (or at cost price) on demand. The receiver of the source code has the same rights meaning he can share copies free of charge or resell. - 2. The licensed material may be analyzed or modified. - 3. Modified material may be distributed under the same licensing terms but *do not* have to be distributed. +In order to get well-formatted GeoJSON, KML, and RINEX files, always terminate +`gnss-sdr` execution by pressing key `q` and then key `ENTER`. Those files will +be automatically deleted if no position fix has been obtained during the +execution of the software receiver. -That means that modifications only have to be made available to the public if distribution happens. So it is perfectly fine to take the GNSS-SDR source code, modify it heavily and use it in a not distributed application / library. This is how companies like Google can run their own patched versions of Linux for example. +More documentation at the +[PVT Blocks page](https://gnss-sdr.org/docs/sp-blocks/pvt/). -But what this also means is that non-GPL code cannot use GPL code. This means that you cannot modify / use GNSS-SDR, blend it with non-GPL code, and make money with the resulting software. You cannot distribute the resulting software under a non-disclosure agreement or contract. Distributors under the GPL also grant a license for any of their patents practiced by the software, to practice those patents in GPL software. You can sell a device that runs with GNSS-SDR, but if you distribute the code, it has to remain under GPL. +# About the software license - +GNSS-SDR is released under the +[General Public License (GPL) v3](https://www.gnu.org/licenses/gpl.html), thus +securing practical usability, inspection, and continuous improvement by the +research community, allowing the discussion based on tangible code and the +analysis of results obtained with real signals. The GPL implies that: -Publications and Credits -======================== +1. Copies may be distributed free of charge or for money, but the source code + has to be shipped or provided free of charge (or at cost price) on demand. + The receiver of the source code has the same rights meaning he can share + copies free of charge or resell. +2. The licensed material may be analyzed or modified. +3. Modified material may be distributed under the same licensing terms but _do + not_ have to be distributed. -If you use GNSS-SDR to produce a research paper or Thesis, we would appreciate if you reference any of these articles to credit the GNSS-SDR project: +That means that modifications only have to be made available to the public if +distribution happens. So it is perfectly fine to take the GNSS-SDR source code, +modify it heavily and use it in a not distributed application / library. This is +how companies like Google can run their own patched versions of Linux for +example. - * J. Arribas, M. Branzanti, C. Fernández-Prades, P. Closas, [Fastening GPS and Galileo Tight with a Software Receiver](http://www.cttc.es/publication/fastening-gps-and-galileo-tight-with-a-software-receiver/), in Proc. of the ION GNSS+ 2014 Conference, Tampa, Florida, Sept. 2014. - * J. Arribas, P. Closas, C. Fernández-Prades, [Interference Mitigation in GNSS Receivers by Array Signal Processing: A Software Radio Approach](http://www.cttc.es/publication/interference-mitigation-in-gnss-receivers-by-array-signal-processing-a-software-radio-approach/), in Proc. of the 8th IEEE Sensor Array and Multichannel Signal Processing Workshop, A Coruña, Spain, June 2014. - * C. Fernández-Prades, J. Arribas, P. Closas, [Turning a Television into a GNSS Receiver](http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/), in Proc. of the ION GNSS+ 2013 Conference, Nashville, Tennessee, Sept. 2013. - * C. Fernández-Prades, J. Arribas, L. Esteve, D. Pubill, P. Closas, [An Open Source Galileo E1 Software Receiver](http://www.cttc.es/publication/an-open-source-galileo-e1-software-receiver/), in Proc. of the 6th ESA Workshop on Satellite Navigation Technologies (NAVITEC 2012), ESTEC, Noordwijk, The Netherlands, Dec. 2012. - * J. Arribas, [GNSS Array-based Acquisition: Theory and Implementation](http://theses.eurasip.org/theses/449/gnss-array-based-acquisition-theory-and/), PhD Thesis, Universitat Politècnica de Catalunya, Barcelona, Spain, June 2012. - * C. Fernández-Prades, J. Arribas, P. Closas, C. Avilés, and L. Esteve, [GNSS-SDR: an open source tool for researchers and developers](http://www.cttc.es/publication/gnss-sdr-an-open-source-tool-for-researchers-and-developers/), in Proc. of the ION GNSS 2011 Conference, Portland, Oregon, Sept. 19-23, 2011. - * C. Fernández-Prades, C. Avilés, L. Esteve, J. Arribas, and P. Closas, [Design patterns for GNSS software receivers](http://www.cttc.es/publication/design-patterns-for-gnss-software-receivers/), in Proc. of the 5th ESA Workshop on Satellite Navigation Technologies (NAVITEC'2010), ESTEC, Noordwijk, The Netherlands, Dec. 2010. DOI:10.1109/NAVITEC.2010.5707981 +But what this also means is that non-GPL code cannot use GPL code. This means +that you cannot modify / use GNSS-SDR, blend it with non-GPL code, and make +money with the resulting software. You cannot distribute the resulting software +under a non-disclosure agreement or contract. Distributors under the GPL also +grant a license for any of their patents practiced by the software, to practice +those patents in GPL software. You can sell a device that runs with GNSS-SDR, +but if you distribute the code, it has to remain under GPL. -For LaTeX users, these are the BibTeX cites for your convenience: -~~~~~~ -@INPROCEEDINGS{GNSS-SDR14b, - AUTHOR = {J.~Arribas and M.~Branzanti and C.~{Fern\'{a}ndez--Prades} and P.~Closas}, - TITLE = {Fastening {GPS} and {G}alileo Tight with a Software Receiver}, - BOOKTITLE = {Proc. of the ION GNSS+ 2014 Conference}, - YEAR = {2014}, - address = {Tampa, Florida}, - month = {Sept.} -} -~~~~~~ +# Publications and Credits -~~~~~~ -@INPROCEEDINGS{GNSS-SDR14a, - AUTHOR = {J.~Arribas and P.~Closas and C.~{Fern\'{a}ndez--Prades}}, - TITLE = {Interference Mitigation in {GNSS} Receivers by Array Signal Processing: {A} Software Radio Approach}, - BOOKTITLE = {Proc. of the 8th IEEE Sensor Array and Multichannel Signal Processing Workshop}, - YEAR = {2014}, - address = {A Coru\~{n}a, Spain}, - month = {June} -} -~~~~~~ +If you use GNSS-SDR to produce a research paper or Thesis, we would appreciate +if you reference the following article to credit the GNSS-SDR project: -~~~~~~ -@INPROCEEDINGS{GNSS-SDR13, - AUTHOR = {C.~{Fern\'{a}ndez--Prades} and J.~Arribas and P.~Closas}, - TITLE = {Turning a Television into a {GNSS} Receiver}, - BOOKTITLE = {Proc. of the ION GNSS+ 2013 Conference}, - YEAR = {2013}, - address = {Nashville, Tennessee}, - month = {Sept.} -} -~~~~~~ +- C. Fernández-Prades, J. Arribas, P. Closas, C. Avilés, and L. + Esteve, + [GNSS-SDR: an open source tool for researchers and developers](https://www.researchgate.net/publication/233380791_GNSS-SDR_An_open_source_tool_for_researchers_and_developers), + in Proceedings of the 24th International Technical Meeting of The Satellite + Division of the Institute of Navigation (ION GNSS), Portland, Oregon, Sept. + 19-23, 2011, pp. 780-794. -~~~~~~ -@INPROCEEDINGS{GNSS-SDR12 - author = {C.~{Fern\'{a}ndez--Prades} and J.~Arribas and L.~Esteve and D.~Pubill and P.~Closas}, - title = {An Open Source {G}alileo {E1} Software Receiver}, - booktitle = {Proc. of the 6th ESA Workshop on Satellite Navigation Technologies (NAVITEC'2012)}, - year = {2012}, - address = {ESTEC, Noordwijk, The Netherlands}, - month = {Dec.} } -~~~~~~ - -~~~~~~ -@PHDTHESIS{Arribas12, - author = {J.~Arribas}, - title = {{GNSS} Array-based Acquisition: Theory and Implementation}, - school = {Universitat Polit\`{e}cnica de Catalunya}, - year = {2012}, - address = {Barcelona, Spain}, - month = {June} } -~~~~~~ - -~~~~~~ -@INPROCEEDINGS{GNSS-SDR11, - AUTHOR = {C.~{Fern\'{a}ndez--Prades} and J.~Arribas and P.~Closas and C.~Avil\'{e}s and L.~Esteve}, - TITLE = {{GNSS-SDR}: An Open Source Tool For Researchers and Developers}, - BOOKTITLE = {Proc. of the ION GNSS 2011 Conference}, - YEAR = {2011}, - address = {Portland, Oregon}, - month = {Sept.} } -~~~~~~ - -~~~~~~ -@INPROCEEDINGS{GNSS-SDR10, - AUTHOR = {C.~{Fern\'{a}ndez--Prades} and C.~Avil\'{e}s and L.~Esteve and J.~Arribas and P.~Closas}, - TITLE = {Design patterns for {GNSS} software receivers}, - BOOKTITLE = {Proc. of the 5th ESA Workshop on Satellite Navigation Technologies (NAVITEC'2010)}, - YEAR = {2010}, - address = {ESTEC, Noordwijk, The Netherlands}, - month = {Dec.}, - note = {DOI:10.1109/NAVITEC.2010.5707981} } -~~~~~~ +For LaTeX users, this is the BibTeX entry for your convenience: - +``` +@INPROCEEDINGS{GNSS-SDR11, + AUTHOR = {C.~{Fern\'{a}ndez--Prades} and J.~Arribas and P.~Closas and C.~Avil\'{e}s and L.~Esteve}, + TITLE = {{GNSS-SDR}: An Open Source Tool For Researchers and Developers}, + BOOKTITLE = {Proc. 24th Intl. Tech. Meeting Sat. Div. Inst. Navig.}, + YEAR = {2011}, + PAGES = {780--794}, + ADDRESS = {Portland, Oregon}, + MONTH = {Sept.} } +``` +There is a list of papers related to GNSS-SDR in our +[publications page](https://gnss-sdr.org/publications/ "Publications"). -Ok, now what? -============= +# 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 intemediate 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. +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 a 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), 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, 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](http://gnss-sdr.org/documents) or directly asking to the [GNSS-SDR Developers mailing list](http://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](http://gnss-sdr.org/participate). 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](http://gnss-sdr.org/contact-us). +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/). **Enjoy GNSS-SDR!** The Developer Team. - - - diff --git a/build/.gitignore b/build/.gitignore deleted file mode 100644 index 86d0cb272..000000000 --- a/build/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore \ No newline at end of file diff --git a/cmake/Modules/AvoidAccelerate.cmake b/cmake/Modules/AvoidAccelerate.cmake new file mode 100644 index 000000000..5d052296d --- /dev/null +++ b/cmake/Modules/AvoidAccelerate.cmake @@ -0,0 +1,62 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# Avoid using the BLAS and LAPACK implementations that comes with the Accelerate +# framework, which causes a bug when the BeiDou constellation is enabled + +if(NOT BLAS_ROOT) + set(BLAS_ROOT_USER_DEFINED /usr/local/lib) +else() + set(BLAS_ROOT_USER_DEFINED ${BLAS_ROOT}) +endif() +if(DEFINED ENV{BLAS_ROOT}) + set(BLAS_ROOT_USER_DEFINED + ${BLAS_ROOT_USER_DEFINED} + $ENV{BLAS_ROOT} + ) +endif() + +find_library(BLAS_LIBRARIES + NAMES libblas.dylib libopenblas.dylib + PATHS + ${BLAS_ROOT_USER_DEFINED} + ${BLAS_ROOT_USER_DEFINED}/lapack + /opt/local/lib/lapack + /opt/local/lib/ + /usr/local/opt/lapack/lib + /opt/homebrew/opt/lapack/lib + NO_DEFAULT_PATH + NO_SYSTEM_ENVIRONMENT_PATH + NO_CMAKE_ENVIRONMENT_PATH + NO_SYSTEM_ENVIRONMENT_PATH + NO_CMAKE_SYSTEM_PATH +) + +if(BLAS_LIBRARIES) + set(BLAS_FOUND TRUE) + message(STATUS "BLAS library found at ${BLAS_LIBRARIES}") +endif() + + +find_library(LAPACK_LIBRARIES + liblapack.dylib + PATHS + ${BLAS_ROOT_USER_DEFINED} + ${BLAS_ROOT_USER_DEFINED}/lapack + /opt/local/lib/lapack + /usr/local/opt/lapack/lib + /opt/homebrew/opt/lapack/lib + NO_DEFAULT_PATH + NO_SYSTEM_ENVIRONMENT_PATH + NO_CMAKE_ENVIRONMENT_PATH + NO_SYSTEM_ENVIRONMENT_PATH + NO_CMAKE_SYSTEM_PATH +) + +if(LAPACK_LIBRARIES) + set(LAPACK_FOUND TRUE) + message(STATUS "LAPACK library found at ${LAPACK_LIBRARIES}") +endif() diff --git a/cmake/Modules/BuildProtobuf.cmake b/cmake/Modules/BuildProtobuf.cmake new file mode 100644 index 000000000..5590943db --- /dev/null +++ b/cmake/Modules/BuildProtobuf.cmake @@ -0,0 +1,166 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2023 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# Downloads and builds the protoc compiler and static libraries of Protocol +# Buffers >= v22.0 (see https://protobuf.dev/) It requires CMake >= 3.10 and the +# abseil-cpp >= 20230117 libraries (see https://github.com/abseil/abseil-cpp) +# already installed. Zlib is used if found. +# +# Creates protobuf::libprotobuf and protobuf::protoc imported targets. + + +if(NOT GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION) + set(GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION "25.0") +endif() + +if(NOT GNSSSDR_BINARY_DIR) + set(GNSSSDR_BINARY_DIR "${PROJECT_BINARY_DIR}") +endif() + +if(NOT ZLIB_FOUND) + find_package(ZLIB) + set_package_properties(ZLIB PROPERTIES + URL "https://www.zlib.net/" + PURPOSE "Required to build Protocol Buffers." + TYPE REQUIRED + ) + if(ZLIB_FOUND AND ZLIB_VERSION_STRING) + set_package_properties(ZLIB PROPERTIES + DESCRIPTION "A Massively Spiffy Yet Delicately Unobtrusive Compression Library (found: v${ZLIB_VERSION_STRING})" + ) + else() + set_package_properties(ZLIB PROPERTIES + DESCRIPTION "A Massively Spiffy Yet Delicately Unobtrusive Compression Library" + ) + endif() + if(ZLIB_FOUND) + set(ZLIB_LIBRARIES_ ${ZLIB_LIBRARIES}) + set(USE_ZLIB -Dprotobuf_WITH_ZLIB=ON) + else() + set(ZLIB_LIBRARIES_ "") + set(USE_ZLIB -Dprotobuf_WITH_ZLIB=OFF) + endif() +else() + set(ZLIB_LIBRARIES_ ${ZLIB_LIBRARIES}) + set(USE_ZLIB -Dprotobuf_WITH_ZLIB=ON) +endif() + +include(GNUInstallDirs) + +list(APPEND UTF8_LIBRARIES + ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}utf8_validity${CMAKE_STATIC_LIBRARY_SUFFIX} + ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}utf8_range${CMAKE_STATIC_LIBRARY_SUFFIX} +) + +ExternalProject_Add(protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + PREFIX ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + GIT_REPOSITORY https://github.com/protocolbuffers/protobuf + GIT_TAG v${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + GIT_PROGRESS ON + UPDATE_COMMAND "" + PATCH_COMMAND ${PROTOBUF_PATCH_COMMAND} + SOURCE_DIR ${GNSSSDR_BINARY_DIR}/thirdparty/protobuf/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + BINARY_DIR ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + CMAKE_ARGS + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DBUILD_SHARED_LIBS=OFF + -DCMAKE_BUILD_TYPE=$<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + -DCMAKE_CXX_VISIBILITY_PRESET=hidden + -DCMAKE_VISIBILITY_INLINES_HIDDEN=1 + -DCMAKE_INSTALL_PREFIX=${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION} + -Dprotobuf_BUILD_TESTS=OFF + -Dprotobuf_ABSL_PROVIDER=package + ${USE_ZLIB} + BUILD_COMMAND ${CMAKE_COMMAND} + "--build" "${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}" + "--config" $<$:Debug>$<$:Release>$<$:RelWithDebInfo>$<$:MinSizeRel>$<$:Debug>$<$:Debug>$<$:RelWithDebInfo>$<$:RelWithDebInfo>$<$:Debug> + "--target" install + BUILD_BYPRODUCTS ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}protobuf$<$:d>${CMAKE_STATIC_LIBRARY_SUFFIX} + ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/bin/protoc + ${ABSL_LIBRARIES} + ${UTF8_LIBRARIES} + INSTALL_COMMAND "" +) + +file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/include) +file(MAKE_DIRECTORY ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/${CMAKE_INSTALL_LIBDIR}) + +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + find_library(CoreFoundation CoreFoundation) +else() + set(CoreFoundation "") +endif() + +set(PROTOBUF_ABSL_USED_TARGETS + absl::absl_check + absl::absl_log + absl::algorithm + absl::base + absl::bind_front + absl::bits + absl::btree + absl::cleanup + absl::cord + absl::core_headers + absl::debugging + absl::die_if_null + absl::dynamic_annotations + absl::flags + absl::flat_hash_map + absl::flat_hash_set + absl::function_ref + absl::hash + absl::layout + absl::log_initialize + absl::log_severity + absl::memory + absl::node_hash_map + absl::node_hash_set + absl::optional + absl::span + absl::status + absl::statusor + absl::strings + absl::synchronization + absl::time + absl::type_traits + absl::utility + absl::variant +) + +if(NOT TARGET protobuf::libprotobuf) + add_library(protobuf::libprotobuf STATIC IMPORTED) + add_dependencies(protobuf::libprotobuf protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}) + set_target_properties(protobuf::libprotobuf PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_CONFIGURATIONS "None;Debug;Release;RelWithDebInfo;MinSizeRel" + MAP_IMPORTED_CONFIG_NOOPTWITHASM Debug + MAP_IMPORTED_CONFIG_COVERAGE Debug + MAP_IMPORTED_CONFIG_O2WITHASM RelWithDebInfo + MAP_IMPORTED_CONFIG_O3WITHASM RelWithDebInfo + MAP_IMPORTED_CONFIG_ASAN Debug + IMPORTED_LOCATION_NONE ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}protobuf${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_DEBUG ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}protobufd${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELEASE ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}protobuf${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_RELWITHDEBINFO ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}protobuf${CMAKE_STATIC_LIBRARY_SUFFIX} + IMPORTED_LOCATION_MINSIZEREL ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}protobuf${CMAKE_STATIC_LIBRARY_SUFFIX} + INTERFACE_INCLUDE_DIRECTORIES ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/include + INTERFACE_LINK_LIBRARIES "${ZLIB_LIBRARIES_};${CoreFoundation};${UTF8_LIBRARIES};${PROTOBUF_ABSL_USED_TARGETS};${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}protobuf$<$:d>${CMAKE_STATIC_LIBRARY_SUFFIX}" + ) +endif() + +if(NOT TARGET protobuf::protoc) + add_executable(protobuf::protoc IMPORTED) + add_dependencies(protobuf::protoc protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}) + unset(Protobuf_PROTOC_EXECUTABLE) + set(PROTOBUF_PROTOC_EXECUTABLE "${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/bin/protoc") + set_target_properties(protobuf::protoc PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/bin/protoc + INTERFACE_LINK_LIBRARIES ${GNSSSDR_BINARY_DIR}/protobuf-${GNSSSDR_PROTOCOLBUFFERS_LOCAL_VERSION}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_FIND_LIBRARY_PREFIXES}protoc$<$:d>${CMAKE_STATIC_LIBRARY_SUFFIX} + ) +endif() diff --git a/cmake/Modules/CMakeParseArgumentsCopy.cmake b/cmake/Modules/CMakeParseArgumentsCopy.cmake deleted file mode 100644 index 7ce4c49ae..000000000 --- a/cmake/Modules/CMakeParseArgumentsCopy.cmake +++ /dev/null @@ -1,138 +0,0 @@ -# CMAKE_PARSE_ARGUMENTS( 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 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 argument contains all keywords for this macro -# which are followed by one value, like e.g. DESTINATION keyword of the -# install() command. -# -# The 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 , and -# a variable composed of the given -# followed by "_" and the name of the respective keyword. -# These variables will then hold the respective value from the argument list. -# For the keywords this will be TRUE or FALSE. -# -# All remaining arguments are collected in a variable -# _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 -# -# 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) diff --git a/cmake/Modules/DetectLinuxDistro.cmake b/cmake/Modules/DetectLinuxDistro.cmake new file mode 100644 index 000000000..014b2a8d3 --- /dev/null +++ b/cmake/Modules/DetectLinuxDistro.cmake @@ -0,0 +1,109 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +if(CMAKE_VERSION VERSION_LESS 3.19) + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(ARCHITECTURE_STRING "(64 bits)") + else() + set(ARCHITECTURE_STRING "(32 bits)") + endif() +else() + set(ARCHITECTURE_STRING "(${CMAKE_HOST_SYSTEM_PROCESSOR})") +endif() + +if(EXISTS "/etc/lsb-release") + execute_process(COMMAND cat /etc/lsb-release + COMMAND grep DISTRIB_ID + COMMAND awk -F= "{ print $2 }" + COMMAND tr "\n" " " + COMMAND sed "s/ //" + OUTPUT_VARIABLE LINUX_DISTRIBUTION + RESULT_VARIABLE LINUX_ID_RESULT + ) + execute_process(COMMAND cat /etc/lsb-release + COMMAND grep DISTRIB_RELEASE + COMMAND awk -F= "{ print $2 }" + COMMAND tr "\n" " " + COMMAND sed "s/ //" + OUTPUT_VARIABLE LINUX_VER + RESULT_VARIABLE LINUX_VER_RESULT + ) +endif() + +if(NOT LINUX_DISTRIBUTION) + if(EXISTS "/etc/linuxmint/info") + set(LINUX_DISTRIBUTION "LinuxMint") + execute_process(COMMAND cat /etc/linuxmint/info + COMMAND grep -m1 RELEASE + COMMAND awk -F= "{ print $2 }" + COMMAND tr "\n" " " + COMMAND sed "s/ //" + OUTPUT_VARIABLE LINUX_VER + RESULT_VARIABLE LINUX_VER_RESULT + ) + endif() +endif() + +if(NOT LINUX_DISTRIBUTION) + if(EXISTS "/etc/os-release") + execute_process(COMMAND cat /etc/os-release + COMMAND grep -m1 NAME + COMMAND awk -F= "{ print $2 }" + COMMAND tr "\n" " " + COMMAND sed "s/ //" + OUTPUT_VARIABLE LINUX_DISTRIBUTION_ + RESULT_VARIABLE LINUX_ID_RESULT + ) + execute_process(COMMAND cat /etc/os-release + COMMAND grep VERSION_ID + COMMAND awk -F= "{ print $2 }" + COMMAND tr "\n" " " + COMMAND sed "s/ //" + OUTPUT_VARIABLE LINUX_VER_ + RESULT_VARIABLE LINUX_VER_RESULT + ) + if(LINUX_DISTRIBUTION_) + string(REPLACE "\"" "" LINUX_DISTRIBUTION__ ${LINUX_DISTRIBUTION_}) + string(STRIP ${LINUX_DISTRIBUTION__} LINUX_DISTRIBUTION) + endif() + if(LINUX_VER_) + string(REPLACE "\"" "" LINUX_VER ${LINUX_VER_}) + endif() + if(${LINUX_DISTRIBUTION} MATCHES "Debian") + set(LINUX_DISTRIBUTION "Debian") + file(READ /etc/debian_version LINUX_VER_) + string(REPLACE "\n" "" LINUX_VER ${LINUX_VER_}) + endif() + endif() +endif() + +if(NOT LINUX_DISTRIBUTION) + if(EXISTS "/etc/redhat-release") + set(LINUX_DISTRIBUTION "Red Hat") + file(READ /etc/redhat-release LINUX_VER_) + string(REPLACE "\n" "" LINUX_VER ${LINUX_VER_}) + endif() +endif() + +if(NOT LINUX_DISTRIBUTION) + if(EXISTS "/etc/debian_version") + set(LINUX_DISTRIBUTION "Debian") + file(READ /etc/debian_version LINUX_VER_) + string(REPLACE "\n" "" LINUX_VER ${LINUX_VER_}) + endif() +endif() + +if(NOT LINUX_DISTRIBUTION) + if(EXISTS "/etc/arch-release") + set(LINUX_DISTRIBUTION "Arch Linux") + set(LINUX_VER "") + endif() +endif() + +if(NOT LINUX_DISTRIBUTION) + set(LINUX_DISTRIBUTION "Generic") + set(LINUX_VER "Unknown") +endif() diff --git a/cmake/Modules/DetectMacOSVersion.cmake b/cmake/Modules/DetectMacOSVersion.cmake new file mode 100644 index 000000000..ac986ba6d --- /dev/null +++ b/cmake/Modules/DetectMacOSVersion.cmake @@ -0,0 +1,79 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +execute_process(COMMAND uname -v OUTPUT_VARIABLE DARWIN_VERSION) +string(REGEX MATCH "[0-9]+" DARWIN_VERSION ${DARWIN_VERSION}) + +if(${DARWIN_VERSION} VERSION_GREATER "19") + execute_process(COMMAND awk "/SOFTWARE LICENSE AGREEMENT FOR macOS/" "/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf" OUTPUT_VARIABLE macOS_NAME) + if(macOS_NAME) + string(REGEX MATCH "macOS*([^\n\r]*)" macOS_NAME ${macOS_NAME}) + string(REGEX REPLACE "macOS " "" macOS_NAME ${macOS_NAME}) + string(REGEX REPLACE ".$" "" macOS_NAME ${macOS_NAME}) + execute_process(COMMAND sw_vers -productVersion OUTPUT_VARIABLE macOS_VERSION) + string(REGEX REPLACE "\n$" "" macOS_VERSION ${macOS_VERSION}) + set(MACOS_DISTRIBUTION "macOS ${macOS_NAME} ${macOS_VERSION} (${CMAKE_SYSTEM_PROCESSOR})") + endif() +endif() + +if(${DARWIN_VERSION} MATCHES "19") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++17") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(MACOS_DISTRIBUTION "macOS Catalina 10.15") +endif() + +if(${DARWIN_VERSION} MATCHES "18") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(MACOS_DISTRIBUTION "macOS Mojave 10.14") +endif() + +if(${DARWIN_VERSION} MATCHES "17") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(MACOS_DISTRIBUTION "macOS High Sierra 10.13") +endif() + +if(${DARWIN_VERSION} MATCHES "16") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(MACOS_DISTRIBUTION "macOS Sierra 10.12") +endif() + +if(${DARWIN_VERSION} MATCHES "15") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(MACOS_DISTRIBUTION "Mac OS X 10.11 El Capitan") +endif() + +if(${DARWIN_VERSION} MATCHES "14") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(MACOS_DISTRIBUTION "Mac OS X 10.10 Yosemite") +endif() + +if(${DARWIN_VERSION} MATCHES "13") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION="com.apple.compilers.llvm.clang.1_0") + set(MACOS_DISTRIBUTION "Mac OS X 10.9 Mavericks") +endif() + +if(${DARWIN_VERSION} MATCHES "12") + set(MACOS_DISTRIBUTION "Mac OS X 10.8 Mountain Lion") +endif() + +if(${DARWIN_VERSION} MATCHES "11") + set(MACOS_DISTRIBUTION "Mac OS X 10.7 Lion") +endif() + +if(${DARWIN_VERSION} MATCHES "10") + set(MACOS_DISTRIBUTION "Mac OS X 10.6 Snow Leopard") +endif() + +if(NOT MACOS_DISTRIBUTION) + set(MACOS_DISTRIBUTION "macOS (Unknown version)") +endif() diff --git a/cmake/Modules/FindCPUFEATURES.cmake b/cmake/Modules/FindCPUFEATURES.cmake new file mode 100644 index 000000000..6f4f0e58f --- /dev/null +++ b/cmake/Modules/FindCPUFEATURES.cmake @@ -0,0 +1,67 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2021 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +set(FPHSA_NAME_MISMATCHED ON) + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +find_library(CPUFEATURES_LIBRARIES + NAMES cpu_features + PATHS ${GNSSSDR_LIB_PATHS} +) + +find_path(CPUFEATURES_INCLUDE_DIR cpu_features_macros.h + PATHS $ENV{CPUFEATURES_DIR}/include + $ENV{CPUFEATURES_DIR} + /usr/include + /usr/local/include + ~/Library/Frameworks + /Library/Frameworks + /sw/include # Fink + /opt/local/include # MacPorts + /opt/csw/include # Blastwave + PATH_SUFFIXES cpu_features +) + +if(CPUFEATURES_INCLUDE_DIR AND CPUFEATURES_LIBRARIES) + if(NOT PACKAGE_VERSION) + set(PACKAGE_VERSION "") + endif() + set(OLD_PACKAGE_VERSION ${PACKAGE_VERSION}) + unset(PACKAGE_VERSION) + list(GET CPUFEATURES_LIBRARIES 0 FIRST_DIR) + get_filename_component(CPUFEATURES_LIBRARIES_PATH ${FIRST_DIR} DIRECTORY) + if(EXISTS ${CPUFEATURES_LIBRARIES_PATH}/cmake/CpuFeatures/CpuFeaturesConfigVersion.cmake) + include(${CPUFEATURES_LIBRARIES_PATH}/cmake/CpuFeatures/CpuFeaturesConfigVersion.cmake) + endif() + if(PACKAGE_VERSION) + set(CPUFEATURES_VERSION ${PACKAGE_VERSION}) + else() + set(CPUFEATURES_VERSION "Unknown") + endif() + set(PACKAGE_VERSION ${OLD_PACKAGE_VERSION}) +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(CPUFEATURES + DEFAULT_MSG + CPUFEATURES_LIBRARIES + CPUFEATURES_INCLUDE_DIR +) + +if(CPUFEATURES_FOUND AND NOT TARGET CpuFeature::cpu_features) + add_library(CpuFeature::cpu_features STATIC IMPORTED) + set_target_properties(CpuFeature::cpu_features PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${CPUFEATURES_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${CPUFEATURES_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES "${CPUFEATURES_LIBRARIES}" + ) +endif() + +mark_as_advanced(CPUFEATURES_LIBRARIES) diff --git a/cmake/Modules/FindFILESYSTEM.cmake b/cmake/Modules/FindFILESYSTEM.cmake new file mode 100644 index 000000000..8f3b5f741 --- /dev/null +++ b/cmake/Modules/FindFILESYSTEM.cmake @@ -0,0 +1,265 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# Original code from https://github.com/vector-of-bool/CMakeCM and modified +# by C. Fernandez. The original code is distributed under the OSI-approved +# BSD 3-Clause License. See https://cmake.org/licensing for details. + +#[=======================================================================[.rst: + +FindFILESYSTEM +############## + +This module supports the C++17 standard library's filesystem utilities. Use the +:imp-target:`std::filesystem` imported target to + +Options +******* + +The ``COMPONENTS`` argument to this module supports the following values: + +.. find-component:: Experimental + :name: fs.Experimental + + Allows the module to find the "experimental" Filesystem TS version of the + Filesystem library. This is the library that should be used with the + ``std::experimental::filesystem`` namespace. + +.. find-component:: Final + :name: fs.Final + + Finds the final C++17 standard version of the filesystem library. + +If no components are provided, behaves as if the +:find-component:`fs.Final` component was specified. + +If both :find-component:`fs.Experimental` and :find-component:`fs.Final` are +provided, first looks for ``Final``, and falls back to ``Experimental`` in case +of failure. If ``Final`` is found, :imp-target:`std::filesystem` and all +:ref:`variables ` will refer to the ``Final`` version. + + +Imported Targets +**************** + +.. imp-target:: std::filesystem + + The ``std::filesystem`` imported target is defined when any requested + version of the C++ filesystem library has been found, whether it is + *Experimental* or *Final*. + + If no version of the filesystem library is available, this target will not + be defined. + + .. note:: + This target has ``cxx_std_17`` as an ``INTERFACE`` + :ref:`compile language standard feature `. Linking + to this target will automatically enable C++17 if no later standard + version is already required on the linking target. + + +.. _fs.variables: + +Variables +********* + +.. variable:: CXX_FILESYSTEM_IS_EXPERIMENTAL + + Set to ``TRUE`` when the :find-component:`fs.Experimental` version of C++ + filesystem library was found, otherwise ``FALSE``. + +.. variable:: CXX_FILESYSTEM_HAVE_FS + + Set to ``TRUE`` when a filesystem header was found. + +.. variable:: CXX_FILESYSTEM_HEADER + + Set to either ``filesystem`` or ``experimental/filesystem`` depending on + whether :find-component:`fs.Final` or :find-component:`fs.Experimental` was + found. + +.. variable:: CXX_FILESYSTEM_NAMESPACE + + Set to either ``std::filesystem`` or ``std::experimental::filesystem`` + depending on whether :find-component:`fs.Final` or + :find-component:`fs.Experimental` was found. + + +Examples +******** + +Using `find_package(FILESYSTEM)` with no component arguments: + +.. code-block:: cmake + + find_package(FILESYSTEM REQUIRED) + + add_executable(my-program main.cpp) + target_link_libraries(my-program PRIVATE std::filesystem) + + +#]=======================================================================] + + +if(TARGET std::filesystem) + # This module has already been processed. Don't do it again. + return() +endif() + +include(CMakePushCheckState) +include(CheckIncludeFileCXX) +include(CheckCXXSourceCompiles) + +cmake_push_check_state() + +if(FILESYSTEM_FIND_QUIETLY) + set(CMAKE_REQUIRED_QUIET ${FILESYSTEM_FIND_QUIETLY}) +endif() + +# All of our tests require C++17 or later +set(OLD_CMAKE_CXX_STANDARD ${CMAKE_CXX_STANDARD}) +set(CMAKE_CXX_STANDARD 17) +if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER "8.0.0")) + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.99") + set(UNDEFINED_BEHAVIOR_WITHOUT_LINKING TRUE) + endif() + set(CMAKE_REQUIRED_FLAGS "-std=c++17") +endif() +if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.99")) + set(CMAKE_REQUIRED_FLAGS "-std=c++17") +endif() +if((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "11")) + set(CMAKE_REQUIRED_FLAGS "-std=c++17") +endif() +if(MSVC AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "18")) + set(CMAKE_REQUIRED_FLAGS "/std:c++17") +endif() + +# Normalize and check the component list we were given +set(want_components ${FILESYSTEM_FIND_COMPONENTS}) +if(FILESYSTEM_FIND_COMPONENTS STREQUAL "") + set(want_components Final) +endif() + +# Warn on any unrecognized components +set(extra_components ${want_components}) +list(REMOVE_ITEM extra_components Final Experimental) +foreach(component IN LISTS extra_components) + message(WARNING "Extraneous find_package component for FILESYSTEM: ${component}") +endforeach() + +# Detect which of Experimental and Final we should look for +set(find_experimental TRUE) +set(find_final TRUE) +if(NOT "Final" IN_LIST want_components) + set(find_final FALSE) +endif() +if(NOT "Experimental" IN_LIST want_components) + set(find_experimental FALSE) +endif() + +if(find_final) + check_include_file_cxx("filesystem" _CXX_FILESYSTEM_HAVE_HEADER) + mark_as_advanced(_CXX_FILESYSTEM_HAVE_HEADER) + if(_CXX_FILESYSTEM_HAVE_HEADER) + # We found the non-experimental header. Don't bother looking for the + # experimental one. + set(find_experimental FALSE) + endif() +else() + set(_CXX_FILESYSTEM_HAVE_HEADER FALSE) +endif() + +if(find_experimental) + check_include_file_cxx("experimental/filesystem" _CXX_FILESYSTEM_HAVE_EXPERIMENTAL_HEADER) + mark_as_advanced(_CXX_FILESYSTEM_HAVE_EXPERIMENTAL_HEADER) +else() + set(_CXX_FILESYSTEM_HAVE_EXPERIMENTAL_HEADER FALSE) +endif() + +if(_CXX_FILESYSTEM_HAVE_HEADER) + set(_have_fs TRUE) + set(_fs_header filesystem) + set(_fs_namespace std::filesystem) +elseif(_CXX_FILESYSTEM_HAVE_EXPERIMENTAL_HEADER) + set(_have_fs TRUE) + set(_fs_header experimental/filesystem) + set(_fs_namespace std::experimental::filesystem) +else() + set(_have_fs FALSE) +endif() + +set(CXX_FILESYSTEM_HAVE_FS ${_have_fs} CACHE BOOL "TRUE if we have the C++ filesystem headers") +set(CXX_FILESYSTEM_HEADER ${_fs_header} CACHE STRING "The header that should be included to obtain the filesystem APIs") +set(CXX_FILESYSTEM_NAMESPACE ${_fs_namespace} CACHE STRING "The C++ namespace that contains the filesystem APIs") + +set(_found FALSE) + +if(CXX_FILESYSTEM_HAVE_FS) + # We have some filesystem library available. Do link checks + string(CONFIGURE [[ + #include <@CXX_FILESYSTEM_HEADER@> + + int main() { + auto cwd = @CXX_FILESYSTEM_NAMESPACE@::current_path(); + return static_cast(cwd.string().size()); + } + ]] code @ONLY) + + # Try to compile a simple filesystem program without any linker flags + if(NOT UNDEFINED_BEHAVIOR_WITHOUT_LINKING) + check_cxx_source_compiles("${code}" CXX_FILESYSTEM_NO_LINK_NEEDED) + set(can_link ${CXX_FILESYSTEM_NO_LINK_NEEDED}) + endif() + + if(NOT CXX_FILESYSTEM_NO_LINK_NEEDED) + set(prev_libraries ${CMAKE_REQUIRED_LIBRARIES}) + set(CMAKE_REQUIRED_FLAGS "-std=c++17") + # Add the libstdc++ flag + set(CMAKE_REQUIRED_LIBRARIES ${prev_libraries} -lstdc++fs) + check_cxx_source_compiles("${code}" CXX_FILESYSTEM_STDCPPFS_NEEDED) + set(can_link ${CXX_FILESYSTEM_STDCPPFS_NEEDED}) + if(NOT CXX_FILESYSTEM_STDCPPFS_NEEDED) + # Try the libc++ flag + set(CMAKE_REQUIRED_LIBRARIES ${prev_libraries} -lc++fs) + check_cxx_source_compiles("${code}" CXX_FILESYSTEM_CPPFS_NEEDED) + set(can_link ${CXX_FILESYSTEM_CPPFS_NEEDED}) + endif() + endif() + + if(can_link) + if(CMAKE_VERSION VERSION_LESS 3.12) + add_library(std::filesystem INTERFACE IMPORTED GLOBAL) + else() + add_library(std::filesystem INTERFACE IMPORTED) + target_compile_features(std::filesystem INTERFACE cxx_std_17) + endif() + set(_found TRUE) + + if(CXX_FILESYSTEM_NO_LINK_NEEDED) + # Nothing to add... + elseif(CXX_FILESYSTEM_STDCPPFS_NEEDED) + target_link_libraries(std::filesystem INTERFACE -lstdc++fs) + elseif(CXX_FILESYSTEM_CPPFS_NEEDED) + target_link_libraries(std::filesystem INTERFACE -lc++fs) + endif() + endif() +endif() + +if(NOT ${_found}) + set(CMAKE_CXX_STANDARD ${OLD_CMAKE_CXX_STANDARD}) +endif() + +cmake_pop_check_state() + +set(FILESYSTEM_FOUND ${_found}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(FILESYSTEM DEFAULT_MSG FILESYSTEM_FOUND) + +if(FILESYSTEM_FIND_REQUIRED AND NOT FILESYSTEM_FOUND) + message(FATAL_ERROR "Cannot compile a simple program using std::filesystem") +endif() diff --git a/cmake/Modules/FindGFLAGS.cmake b/cmake/Modules/FindGFLAGS.cmake new file mode 100644 index 000000000..cbfa07cd3 --- /dev/null +++ b/cmake/Modules/FindGFLAGS.cmake @@ -0,0 +1,151 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# - 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(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT GFLAGS_ROOT) + set(GFLAGS_ROOT_USER_PROVIDED /usr/local) +else() + set(GFLAGS_ROOT_USER_PROVIDED ${GFLAGS_ROOT}) +endif() +if(DEFINED ENV{GFLAGS_ROOT}) + set(GFLAGS_ROOT_USER_PROVIDED + ${GFLAGS_ROOT_USER_PROVIDED} + $ENV{GFLAGS_ROOT} + ) +endif() + +if(APPLE) + find_path(GFlags_ROOT_DIR + libgflags.dylib + PATHS + ${GFLAGS_ROOT_USER_PROVIDED}/lib + /usr/local/lib + /opt/local/lib + /opt/homebrew/opt/gflags/lib + ) +else() + find_path(GFlags_ROOT_DIR + libgflags.so + PATHS + ${GFLAGS_ROOT_USER_PROVIDED}/lib + ${GFLAGS_ROOT_USER_PROVIDED}/lib64 + ${GNSSSDR_LIB_PATHS} + ) +endif() + +if(GFlags_ROOT_DIR) + unset(GFlags_INCLUDE_DIRS CACHE) + # We are testing only a couple of files in the include directories + find_path(GFlags_INCLUDE_DIRS + gflags/gflags.h + PATHS + ${GFlags_ROOT_DIR}/src + ${GFLAGS_ROOT_USER_PROVIDED}/include + /usr/include + /usr/local/include + /opt/local/include + /opt/homebrew/opt/gflags/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() + +if(GFlags_LIBS AND GFlags_INCLUDE_DIRS) + if(NOT PACKAGE_VERSION) + set(PACKAGE_VERSION "") + endif() + set(OLD_PACKAGE_VERSION ${PACKAGE_VERSION}) + unset(PACKAGE_VERSION) + list(GET GFlags_LIBS 0 FIRST_DIR) + get_filename_component(GFlags_LIBS_DIR ${FIRST_DIR} DIRECTORY) + if(EXISTS ${GFlags_LIBS_DIR}/cmake/gflags/gflags-config-version.cmake) + include(${GFlags_LIBS_DIR}/cmake/gflags/gflags-config-version.cmake) + endif() + if(NOT PACKAGE_VERSION) + if(EXISTS ${GFlags_INCLUDE_DIRS}/google/gflags.h) + set(PACKAGE_VERSION "2.0") + endif() + endif() + if(PACKAGE_VERSION) + set(GFLAGS_VERSION ${PACKAGE_VERSION}) + set_package_properties(GFLAGS PROPERTIES + DESCRIPTION "C++ library that implements commandline flags processing (found: v${GFLAGS_VERSION})" + ) + else() + set_package_properties(GFLAGS PROPERTIES + DESCRIPTION "C++ library that implements commandline flags processing" + ) + endif() + set(PACKAGE_VERSION ${OLD_PACKAGE_VERSION}) +else() + set_package_properties(GFLAGS PROPERTIES + DESCRIPTION "C++ library that implements commandline flags processing" + ) +endif() + +set_package_properties(GFLAGS PROPERTIES + URL "https://github.com/gflags/gflags" +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GFLAGS DEFAULT_MSG GFlags_LIBS GFlags_INCLUDE_DIRS) + +if(GFLAGS_VERSION) + if(${GFLAGS_VERSION} VERSION_LESS "${GNSSSDR_GFLAGS_MIN_VERSION}") + set(GFLAGS_FOUND FALSE) + unset(GFlags_LIBS CACHE) + unset(GFlags_INCLUDE_DIRS CACHE) + endif() +endif() + +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() diff --git a/cmake/Modules/FindGFORTRAN.cmake b/cmake/Modules/FindGFORTRAN.cmake new file mode 100644 index 000000000..26764a688 --- /dev/null +++ b/cmake/Modules/FindGFORTRAN.cmake @@ -0,0 +1,88 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT GFORTRAN_ROOT) + set(GFORTRAN_ROOT_USER_DEFINED /usr/lib) +else() + set(GFORTRAN_ROOT_USER_DEFINED ${GFORTRAN_ROOT}) +endif() +if(DEFINED ENV{GFORTRAN_ROOT}) + set(GFORTRAN_ROOT_USER_DEFINED + $ENV{GFORTRAN_ROOT} + ${GFORTRAN_ROOT_USER_DEFINED} + ) +endif() + +set(GCC_MAJOR_SERIES 15 14 13 12 11 10 9 8 7 6 5) +set(GCC4_SERIES 4.9.1 4.9 4.8.3 4.8.1 4.7.2 4.7 4.8.2 4.8 4.7 4.6 4.5 4.4.4 4.4) +set(GCC_SERIES ${GCC_MAJOR_SERIES} ${GCC4_SERIES}) + +find_library(GFORTRAN NAMES gfortran + PATHS ${GFORTRAN_ROOT_USER_DEFINED} + /usr/lib/gcc/x86_64-linux-gnu # Debian + /usr/lib/gcc/i386-linux-gnu + /usr/lib/gcc/i486-linux-gnu + /usr/lib/gcc/i586-linux-gnu + /usr/lib/gcc/i686-linux-gnu + /usr/lib/gcc/arm-linux-gnueabihf + /usr/lib/gcc/aarch64-linux-gnu + /usr/lib/gcc/arm-linux-gnueabi + /usr/lib/gcc/alpha-linux-gnu + /usr/lib/gcc/riscv64-linux-gnu + /usr/lib/gcc/hppa-linux-gnu + /usr/lib/gcc/m68k-linux-gnu + /usr/lib/gcc/i686-gnu + /usr/lib/gcc/x86_64-kfreebsd-gnu + /usr/lib/gcc/i686-kfreebsd-gnu + /usr/lib/gcc/mips-linux-gnu + /usr/lib/gcc/mips64el-linux-gnuabi64 + /usr/lib/gcc/mipsel-linux-gnu + /usr/lib/gcc/powerpc-linux-gnu + /usr/lib/gcc/powerpc-linux-gnuspe + /usr/lib/gcc/powerpc64-linux-gnu + /usr/lib/gcc/powerpc64le-linux-gnu + /usr/lib/gcc/s390x-linux-gnu + /usr/lib/gcc/sparc64-linux-gnu + /usr/lib/gcc/x86_64-linux-gnux32 + /usr/lib/gcc/sh4-linux-gnu + /usr/lib/gcc/i686-redhat-linux # Fedora + /usr/lib64/gcc/x86_64-redhat-linux + /usr/lib/gcc/x86_64-redhat-linux + /usr/lib/gcc/armv7hl-redhat-linux-gnueabi + /usr/lib/gcc/aarch64-redhat-linux + /usr/lib/gcc/ppc64le-redhat-linux + /usr/lib/gcc/s390x-redhat-linux + /usr/lib64/gcc/x86_64-suse-linux # openSUSE + /usr/lib/gcc/i586-suse-linux + /usr/lib/gcc/x86_64-suse-linux + /usr/lib/gcc/armv6hl-suse-linux-gnueabi + /usr/lib/gcc/armv7hl-suse-linux-gnueabi + /usr/lib/gcc/loongarch64-linux-gnu + /usr/lib64/gcc/aarch64-suse-linux + /usr/lib64/gcc/powerpc64-suse-linux + /usr/lib64/gcc/powerpc64le-suse-linux + /usr/lib64/gcc/riscv64-suse-linux + /usr/lib64/gcc/s390x-suse-linux + ${GNSSSDR_LIB_PATHS} + PATH_SUFFIXES + ${GCC_SERIES} +) + +set_package_properties(GFORTRAN PROPERTIES + URL "https://gcc.gnu.org/fortran/" + DESCRIPTION "GNU Fortran library" +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GFORTRAN DEFAULT_MSG GFORTRAN) diff --git a/cmake/Modules/FindGFlags.cmake b/cmake/Modules/FindGFlags.cmake deleted file mode 100644 index f492058d4..000000000 --- a/cmake/Modules/FindGFlags.cmake +++ /dev/null @@ -1,71 +0,0 @@ -# - 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 - -# - Try to find GFlags -# -# -# 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/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}) - - # 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) - diff --git a/cmake/Modules/FindGLOG.cmake b/cmake/Modules/FindGLOG.cmake index fa6c80ae7..8f6c880a0 100644 --- a/cmake/Modules/FindGLOG.cmake +++ b/cmake/Modules/FindGLOG.cmake @@ -1,3 +1,9 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + # - Try to find the Google Glog library # # This module defines the following variables @@ -10,90 +16,146 @@ # # 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 COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +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() + +pkg_check_modules(PC_GLOG libglog) macro(_FIND_GLOG_LIBRARIES _var) - find_library(${_var} - NAMES ${ARGN} - PATHS ${LIB_PATHS} /opt/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 + find_library(${_var} + NAMES ${ARGN} + HINTS ${PC_GLOG_LIBDIR} + PATHS ${LIB_PATHS} + ${GNSSSDR_LIB_PATHS} + ${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 + HINTS + ${PC_GLOG_INCLUDEDIR} + PATHS + ${GLOG_ROOT}/src/windows + ${GLOG_ROOT}/src/windows/glog + ) +else() + # Linux/OS X builds + find_path(GLOG_INCLUDE_DIR NAMES raw_logging.h + HINTS + ${PC_GLOG_INCLUDEDIR} + PATHS + /usr/include/glog + /usr/local/include/glog + /opt/local/include/glog # default location in Macports + /opt/homebrew/opt/glog/include/glog + ${GLOG_ROOT}/include/glog + ) +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) - -if(GLOG_FOUND) - message(STATUS "glog library found at ${GLOG_LIBRARIES}") + _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 glog) + endif() 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) - -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) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GLOG DEFAULT_MSG GLOG_LIBRARIES) if(GLOG_FOUND) - # _GLOG_APPEND_LIBRARIES(GLOG GLOG_LIBRARIES) + message(STATUS "glog library found at ${GLOG_LIBRARIES}") + if(PC_GLOG_VERSION) + set(GLOG_VERSION ${PC_GLOG_VERSION}) + endif() endif() + +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() + # 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 GLOG_VERSION) + set_package_properties(GLOG PROPERTIES + DESCRIPTION "C++ implementation of the Google logging module (found: v${GLOG_VERSION})" + ) +else() + set_package_properties(GLOG PROPERTIES + DESCRIPTION "C++ implementation of the Google logging module" + ) +endif() + +set_package_properties(GLOG PROPERTIES + URL "https://github.com/google/glog" +) + +string(REGEX MATCH libglog.a GLOG_IS_STATIC ${GLOG_LIBRARIES}) +if(GLOG_FOUND AND NOT TARGET Glog::glog) + if(GLOG_IS_STATIC) + add_library(Glog::glog STATIC IMPORTED) + else() + add_library(Glog::glog SHARED IMPORTED) + endif() + 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() + +# Fix for glog 0.7.0 +if(EXISTS ${GLOG_INCLUDE_DIRS}/export.h) + set_target_properties(Glog::glog PROPERTIES INTERFACE_COMPILE_DEFINITIONS "GLOG_USE_GLOG_EXPORT") +endif() \ No newline at end of file diff --git a/cmake/Modules/FindGMP.cmake b/cmake/Modules/FindGMP.cmake new file mode 100644 index 000000000..3f4db49c6 --- /dev/null +++ b/cmake/Modules/FindGMP.cmake @@ -0,0 +1,79 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2024 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() +pkg_check_modules(PC_GMP "gmp") + +set(GMP_DEFINITIONS ${PC_GMP_CFLAGS_OTHER}) + +find_path(GMP_INCLUDE_DIR + NAMES gmpxx.h + HINTS ${PC_GMP_INCLUDEDIR} + PATHS ${CMAKE_INSTALL_PREFIX}/include + /usr/local/include + /usr/include + /opt/local/include +) + +set(GMP_INCLUDE_DIRS ${GMP_INCLUDE_DIR}) +set(GMP_PC_ADD_CFLAGS "-I${GMP_INCLUDE_DIR}") + +find_library(GMPXX_LIBRARY + NAMES gmpxx + HINTS ${PC_GMP_LIBDIR} + PATHS ${GNSSSDR_LIB_PATHS} + ${CMAKE_INSTALL_PREFIX}/lib + ${CMAKE_INSTALL_PREFIX}/lib64 +) + +find_library(GMP_LIBRARY + NAMES gmp + HINTS ${PC_GMP_LIBDIR} + PATHS ${GNSSSDR_LIB_PATHS} + ${CMAKE_INSTALL_PREFIX}/lib + ${CMAKE_INSTALL_PREFIX}/lib64 +) + +set(GMP_LIBRARIES ${GMPXX_LIBRARY} ${GMP_LIBRARY}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GMP DEFAULT_MSG GMPXX_LIBRARY GMP_LIBRARY GMP_INCLUDE_DIR) + +if(GMP_FOUND AND NOT TARGET Gmp::gmp) + add_library(Gmp::gmp SHARED IMPORTED) + set_target_properties(Gmp::gmp PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${GMPXX_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${GMP_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES "${GMP_LIBRARIES}" + ) +endif() + +set_package_properties(GMP PROPERTIES + URL "https://gmplib.org/" +) + +if(PC_GMP_VERSION) + set_package_properties(GMP PROPERTIES + DESCRIPTION "The GNU Multiple Precision Arithmetic Library (found: v.${PC_GMP_VERSION})" + ) +else() + set_package_properties(GMP PROPERTIES + DESCRIPTION "The GNU Multiple Precision Arithmetic Library" + ) +endif() + +mark_as_advanced(GMPXX_LIBRARY GMP_LIBRARY GMP_INCLUDE_DIR) diff --git a/cmake/Modules/FindGNSSSIMULATOR.cmake b/cmake/Modules/FindGNSSSIMULATOR.cmake new file mode 100644 index 000000000..6a193746d --- /dev/null +++ b/cmake/Modules/FindGNSSSIMULATOR.cmake @@ -0,0 +1,43 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2021 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +if(GNSSSIMULATOR_ROOT) + set(GNSSSIMULATOR_ROOT_USER_DEFINED ${GNSSSIMULATOR_ROOT}) +else() + set(GNSSSIMULATOR_ROOT_USER_DEFINED /usr/local/bin) +endif() +if(DEFINED ENV{GNSSSIMULATOR_ROOT}) + set(GNSSSIMULATOR_ROOT_USER_DEFINED + ${GNSSSIMULATOR_ROOT_USER_DEFINED} + $ENV{GNSSSIMULATOR} + ) +endif() +set(GNSSSIMULATOR_ROOT_USER_DEFINED + ${GNSSSIMULATOR_ROOT_USER_DEFINED} + ${CMAKE_INSTALL_PREFIX} +) + +find_program(SW_GENERATOR_BIN gnss_sim + PATHS + ${GNSSSIMULATOR_ROOT_USER_DEFINED} + /usr + /usr/local + /opt/local + PATH_SUFFIXES bin + ONLY_CMAKE_FIND_ROOT_PATH +) + +if(SW_GENERATOR_BIN AND CMAKE_CROSSCOMPILING) + if(CMAKE_SYSROOT) + string(REGEX REPLACE "${CMAKE_SYSROOT}" "" SW_GENERATOR_BIN "${SW_GENERATOR_BIN}") + elseif(DEFINED ENV{OECORE_TARGET_SYSROOT}) + string(REGEX REPLACE "$ENV{OECORE_TARGET_SYSROOT}" "" SW_GENERATOR_BIN "${SW_GENERATOR_BIN}") + endif() +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GNSSSIMULATOR DEFAULT_MSG SW_GENERATOR_BIN) +mark_as_advanced(SW_GENERATOR_BIN) diff --git a/cmake/Modules/FindGNSSTK.cmake b/cmake/Modules/FindGNSSTK.cmake new file mode 100644 index 000000000..e810ebee7 --- /dev/null +++ b/cmake/Modules/FindGNSSTK.cmake @@ -0,0 +1,149 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2022 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# - Find gnsstk library +# Find the native gnsstk includes and library +# This module defines +# GNSSTK_INCLUDE_DIR, where to find Rinex3ObsBase.hpp, etc. +# GNSSTK_FOUND, If false, do not try to use GNSSTK. +# GNSSTK_LIBRARY, where to find the GNSSTK library. +# +# Provides the following imported target: +# Gnsstk::gnsstk +# + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSTK_ROOT) + set(GNSSTK_ROOT_USER_DEFINED /usr/local) +else() + set(GNSSTK_ROOT_USER_DEFINED ${GNSSTK_ROOT}) +endif() +if(DEFINED ENV{GNSSTK_ROOT}) + set(GNSSTK_ROOT_USER_DEFINED + ${GNSSTK_ROOT_USER_DEFINED} + $ENV{GNSSTK_ROOT} + ) +endif() + +unset(GNSSTK_INCLUDE_DIR CACHE) +unset(GNSSTK_USES_GPSTK_NAMESPACE CACHE) +find_path(GNSSTK_INCLUDE_DIR gnsstk/Rinex3ObsBase.hpp + PATHS ${GNSSTK_ROOT_USER_DEFINED}/include + /usr/include + /usr/local/include + /opt/local/include +) +set(GNSSTK_NAMES ${CMAKE_FIND_LIBRARY_PREFIXES}gnsstk${CMAKE_SHARED_LIBRARY_SUFFIX}) +if(NOT GNSSTK_INCLUDE_DIR) + find_path(GNSSTK_INCLUDE_DIR gpstk/Rinex3ObsBase.hpp + PATHS ${GNSSTK_ROOT_USER_DEFINED}/include + /usr/include + /usr/local/include + /opt/local/include + ) + if(GNSSTK_INCLUDE_DIR) + set(GNSSTK_NAMES gpstk ${CMAKE_FIND_LIBRARY_PREFIXES}gpstk${CMAKE_SHARED_LIBRARY_SUFFIX}) + set(GNSSTK_USES_GPSTK_NAMESPACE TRUE) + endif() +endif() + +include(GNUInstallDirs) + +find_library(GNSSTK_LIBRARY NAMES ${GNSSTK_NAMES} + PATHS ${GNSSTK_ROOT_USER_DEFINED}/lib + ${GNSSTK_ROOT_USER_DEFINED}/${CMAKE_INSTALL_LIBDIR} + /usr/local/lib + /usr/${CMAKE_INSTALL_LIBDIR} + /usr/local/${CMAKE_INSTALL_LIBDIR} + /opt/local/lib +) + +if(GNSSTK_LIBRARY AND GNSSTK_INCLUDE_DIR) + set(OLD_PACKAGE_VERSION ${PACKAGE_VERSION}) + unset(PACKAGE_VERSION) + if(GNSSTK_USES_GPSTK_NAMESPACE) + if(EXISTS ${GNSSTK_INCLUDE_DIR}/../share/cmake/GPSTK/GPSTKConfigVersion.cmake) + include(${GNSSTK_INCLUDE_DIR}/../share/cmake/GPSTK/GPSTKConfigVersion.cmake) + endif() + else() + if(EXISTS ${GNSSTK_INCLUDE_DIR}/../share/cmake/GNSSTK/GNSSTKConfigVersion.cmake) + include(${GNSSTK_INCLUDE_DIR}/../share/cmake/GNSSTK/GNSSTKConfigVersion.cmake) + endif() + endif() + if(PACKAGE_VERSION) + set(GNSSTK_VERSION ${PACKAGE_VERSION}) + endif() + set(PACKAGE_VERSION ${OLD_PACKAGE_VERSION}) +endif() + +if(GNSSTK_VERSION) + if(GNSSTK_VERSION VERSION_LESS "9.0.0") + set(GNSSTK_OLDER_THAN_9 TRUE) + endif() + if(GNSSTK_VERSION VERSION_LESS "13.0.0") + set(GNSSTK_OLDER_THAN_13 TRUE) + endif() +endif() + +if(EXISTS ${GNSSTK_INCLUDE_DIR}/gnsstk/GPSEphemerisStore.hpp) + set(GNSSTK_OLDER_THAN_13 TRUE) +endif() + +# handle the QUIET and REQUIRED arguments and set GNSSTK_FOUND to TRUE if +# all listed variables are TRUE +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GNSSTK DEFAULT_MSG GNSSTK_LIBRARY GNSSTK_INCLUDE_DIR) + +if(GNSSTK_FOUND AND GNSSTK_VERSION) + set_package_properties(GNSSTK PROPERTIES + DESCRIPTION "The GNSSTk C++ Library (found: v${GNSSTK_VERSION})" + ) +else() + set_package_properties(GNSSTK PROPERTIES + DESCRIPTION "The GNSSTk C++ Library" + ) +endif() + +if(GNSSTK_FOUND AND GNSSTK_USES_GPSTK_NAMESPACE AND NOT EXISTS ${GNSSTK_INCLUDE_DIR}/gpstk/SatelliteSystem.hpp) + set(GNSSTK_OLDER_THAN_8 TRUE) +endif() + +set_package_properties(GNSSTK PROPERTIES + URL "https://github.com/SGL-UT/gnsstk/" + TYPE OPTIONAL +) + +if(GNSSTK_FOUND AND NOT ENABLE_OWN_GNSSTK AND NOT TARGET Gnsstk::gnsstk) + add_library(Gnsstk::gnsstk SHARED IMPORTED) + if(GNSSTK_USES_GPSTK_NAMESPACE) + set_target_properties(Gnsstk::gnsstk PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${GNSSTK_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${GNSSTK_INCLUDE_DIR};${GNSSTK_INCLUDE_DIR}/gpstk" + INTERFACE_LINK_LIBRARIES "${GNSSTK_LIBRARY}" + IMPORTED_IMPLIB "${GNSSTK_LIBRARY}" + ) + else() + set_target_properties(Gnsstk::gnsstk PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${GNSSTK_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${GNSSTK_INCLUDE_DIR};${GNSSTK_INCLUDE_DIR}/gnsstk" + INTERFACE_LINK_LIBRARIES "${GNSSTK_LIBRARY}" + IMPORTED_IMPLIB "${GNSSTK_LIBRARY}" + ) + endif() +endif() + +mark_as_advanced(GNSSTK_LIBRARY + GNSSTK_INCLUDE_DIR + GNSSTK_USES_GPSTK_NAMESPACE + GNSSTK_OLDER_THAN_8 + GNSSTK_OLDER_THAN_9 + GNSSTK_OLDER_THAN_13 +) diff --git a/cmake/Modules/FindGNUPLOT.cmake b/cmake/Modules/FindGNUPLOT.cmake new file mode 100644 index 000000000..c464bc6b6 --- /dev/null +++ b/cmake/Modules/FindGNUPLOT.cmake @@ -0,0 +1,45 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2021 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + + +find_program(GNUPLOT_EXECUTABLE + NAMES + gnuplot + pgnuplot + PATHS + /usr/bin + /usr/local/bin + /opt/local/bin + ONLY_CMAKE_FIND_ROOT_PATH +) + +if(NOT CMAKE_CROSSCOMPILING) + if(GNUPLOT_EXECUTABLE) + execute_process(COMMAND "${GNUPLOT_EXECUTABLE}" --version + OUTPUT_VARIABLE GNUPLOT_OUTPUT_VARIABLE + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + string(REGEX REPLACE "^gnuplot ([0-9\\.]+)( patchlevel )?" "\\1." GNUPLOT_VERSION_STRING "${GNUPLOT_OUTPUT_VARIABLE}") + string(REGEX REPLACE "\\.$" "" GNUPLOT_VERSION_STRING "${GNUPLOT_VERSION_STRING}") + unset(GNUPLOT_OUTPUT_VARIABLE) + endif() +else() + if(GNUPLOT_EXECUTABLE) + if(CMAKE_SYSROOT) + string(REGEX REPLACE "${CMAKE_SYSROOT}" "" GNUPLOT_EXECUTABLE "${GNUPLOT_EXECUTABLE}") + elseif(DEFINED ENV{OECORE_TARGET_SYSROOT}) + string(REGEX REPLACE "$ENV{OECORE_TARGET_SYSROOT}" "" GNUPLOT_EXECUTABLE "${GNUPLOT_EXECUTABLE}") + endif() + else() + message(STATUS "Warning: Gnuplot is not found, you can install it later.") + message(STATUS " Setting default path to /usr/bin/gnuplot") + set(GNUPLOT_EXECUTABLE "/usr/bin/gnuplot") + endif() +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GNUPLOT DEFAULT_MSG GNUPLOT_EXECUTABLE) diff --git a/cmake/Modules/FindGNURADIO.cmake b/cmake/Modules/FindGNURADIO.cmake new file mode 100644 index 000000000..d976d0e28 --- /dev/null +++ b/cmake/Modules/FindGNURADIO.cmake @@ -0,0 +1,397 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2022 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +######################################################################## +# Find GNU Radio +######################################################################## + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +include(FindPackageHandleStandardArgs) + +# if GR_REQUIRED_COMPONENTS is not defined, it will be set to the following list +if(NOT GR_REQUIRED_COMPONENTS) + set(GR_REQUIRED_COMPONENTS RUNTIME PMT BLOCKS FFT FILTER ANALOG) +endif() + +# Allows us to use all .cmake files in this directory +list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_LIST_DIR}) + +# Easily access all libraries and includes of GNU Radio +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() + endforeach() +endmacro() + +if(NOT GNURADIO_INSTALL_PREFIX) + set(GNURADIO_INSTALL_PREFIX_USER_PROVIDED /usr) +else() + set(GNURADIO_INSTALL_PREFIX_USER_PROVIDED ${GNURADIO_INSTALL_PREFIX}) +endif() +if(GNURADIO_ROOT) + set(GNURADIO_INSTALL_PREFIX_USER_PROVIDED + ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED} + ${GNURADIO_ROOT} + ) +endif() +if(DEFINED ENV{GNURADIO_ROOT}) + set(GNURADIO_INSTALL_PREFIX_USER_PROVIDED + ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED} + $ENV{GNURADIO_ROOT} + ) +endif() +if(DEFINED ENV{GNURADIO_RUNTIME_DIR}) + set(GNURADIO_INSTALL_PREFIX_USER_PROVIDED + ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED} + $ENV{GNURADIO_RUNTIME_DIR} + ) +endif() +set(GNURADIO_INSTALL_PREFIX_USER_PROVIDED + ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED} + ${CMAKE_INSTALL_PREFIX} +) + +function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE) + list_contains(REQUIRED_MODULE ${EXTVAR} ${GR_REQUIRED_COMPONENTS}) + if(NOT REQUIRED_MODULE) + #message("Ignoring GNU Radio Module ${EXTVAR}") + return() + endif() + + message(STATUS "Checking for GNU Radio Module: ${EXTVAR}") + + # check for .pc hints + pkg_check_modules(PC_GNURADIO_${EXTVAR} QUIET ${PCNAME}) + + if(NOT PC_GNURADIO_${EXTVAR}_FOUND) + set(PC_GNURADIO_${EXTVAR}_LIBRARIES ${LIBFILE}) + endif() + + set(INCVAR_NAME "GNURADIO_${EXTVAR}_INCLUDE_DIRS") + set(LIBVAR_NAME "GNURADIO_${EXTVAR}_LIBRARIES") + set(PC_INCDIR ${PC_GNURADIO_${EXTVAR}_INCLUDEDIR}) + set(PC_LIBDIR ${PC_GNURADIO_${EXTVAR}_LIBDIR}) + + # look for include files + find_path(${INCVAR_NAME} + NAMES ${INCFILE} + HINTS ${PC_INCDIR} + PATHS ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/include + /usr/include + /usr/local/include + /opt/local/include + ) + + # look for libs + foreach(libname ${PC_GNURADIO_${EXTVAR}_LIBRARIES}) + find_library(${LIBVAR_NAME}_${libname} + NAMES ${libname} ${libname}-${PC_GNURADIO_RUNTIME_VERSION} + HINTS ${PC_LIBDIR} + PATHS ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/lib + ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/lib64 + ${GNSSSDR_LIB_PATHS} + ) + list(APPEND ${LIBVAR_NAME} ${${LIBVAR_NAME}_${libname}}) + endforeach() + + set(${LIBVAR_NAME} ${${LIBVAR_NAME}} PARENT_SCOPE) + + # show results + message(STATUS " * INCLUDES=${GNURADIO_${EXTVAR}_INCLUDE_DIRS}") + message(STATUS " * LIBS=${GNURADIO_${EXTVAR}_LIBRARIES}") + + # append to all includes and libs list + 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) + + if(GNURADIO_${EXTVAR}_LIBRARIES AND GNURADIO_${EXTVAR}_INCLUDE_DIRS) + set(GNURADIO_${EXTVAR}_FOUND TRUE) + endif() + 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!") + set(GNURADIO_FOUND FALSE) # Trick for feature_summary + endif() + + # Create imported target + string(TOLOWER ${EXTVAR} gnuradio_component) + if(NOT TARGET Gnuradio::${gnuradio_component}) + add_library(Gnuradio::${gnuradio_component} SHARED IMPORTED) + set(GNURADIO_LIBRARY ${GNURADIO_${EXTVAR}_LIBRARIES}) + list(GET GNURADIO_LIBRARY 0 FIRST_DIR) + get_filename_component(GNURADIO_DIR ${FIRST_DIR} ABSOLUTE) + set_target_properties(Gnuradio::${gnuradio_component} PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${GNURADIO_DIR}" + INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_${EXTVAR}_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES "${GNURADIO_LIBRARY}" + ) + endif() + + mark_as_advanced(GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS) +endfunction() + +gr_module(RUNTIME gnuradio-runtime gnuradio/top_block.h gnuradio-runtime) +gr_module(PMT gnuradio-runtime pmt/pmt.h gnuradio-pmt) +gr_module(BLOCKS gnuradio-blocks gnuradio/blocks/api.h gnuradio-blocks) +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(ANALOG gnuradio-analog gnuradio/analog/api.h gnuradio-analog) +gr_module(DIGITAL gnuradio-digital gnuradio/digital/api.h gnuradio-digital) +gr_module(AUDIO gnuradio-audio gnuradio/audio/api.h gnuradio-audio) +gr_module(CHANNELS gnuradio-channels gnuradio/channels/api.h gnuradio-channels) +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(ZEROMQ gnuradio-zeromq gnuradio/zeromq/api.h gnuradio-zeromq) + + +list(REMOVE_DUPLICATES GNURADIO_ALL_INCLUDE_DIRS) +list(REMOVE_DUPLICATES GNURADIO_ALL_LIBRARIES) + +if(NOT PC_GNURADIO_RUNTIME_VERSION) + set(OLD_PACKAGE_VERSION ${PACKAGE_VERSION}) + unset(PACKAGE_VERSION) + list(GET GNURADIO_BLOCKS_LIBRARIES 0 FIRST_DIR) + get_filename_component(GNURADIO_BLOCKS_DIR ${FIRST_DIR} DIRECTORY) + if(EXISTS ${GNURADIO_BLOCKS_DIR}/cmake/gnuradio/GnuradioConfigVersion.cmake) + set(PACKAGE_FIND_VERSION_MAJOR 3) + set(PACKAGE_FIND_VERSION_MINOR 7) + set(PACKAGE_FIND_VERSION_PATCH 4) + include(${GNURADIO_BLOCKS_DIR}/cmake/gnuradio/GnuradioConfigVersion.cmake) + endif() + if(PACKAGE_VERSION) + set(PC_GNURADIO_RUNTIME_VERSION ${PACKAGE_VERSION}) + endif() + set(PACKAGE_VERSION ${OLD_PACKAGE_VERSION}) +endif() + +# 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 + PATHS ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/include + /usr/include + /usr/local/include + /opt/local/include + ) + 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 + PATHS ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/include + /usr/include + /usr/local/include + /opt/local/include + ) + if(GNURADIO_VERSION_GREATER_THAN_38) + set(PC_GNURADIO_RUNTIME_VERSION "3.8.0+") + endif() +endif() + +set(GNURADIO_VERSION ${PC_GNURADIO_RUNTIME_VERSION}) + +if(NOT GNSSSDR_GNURADIO_MIN_VERSION) + set(GNSSSDR_GNURADIO_MIN_VERSION "3.7.3") +endif() + +if(GNURADIO_VERSION) + if(GNURADIO_VERSION VERSION_LESS ${GNSSSDR_GNURADIO_MIN_VERSION}) + unset(GNURADIO_RUNTIME_FOUND) + message(STATUS "The GNU Radio version installed in your system (v${GNURADIO_VERSION}) is too old.") + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + message("Go to https://github.com/gnuradio/pybombs") + message("and follow the instructions to install GNU Radio in your system.") + endif() + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + message("You can install it easily via Macports:") + message(" sudo port install gnuradio ") + message("Alternatively, you can use homebrew:") + message(" brew install gnuradio") + endif() + message(FATAL_ERROR "GNU Radio v${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr.") + endif() + set_package_properties(GNURADIO PROPERTIES + DESCRIPTION "The free and open software radio ecosystem (found: v${GNURADIO_VERSION})" + ) +else() + set_package_properties(GNURADIO PROPERTIES + DESCRIPTION "The free and open software radio ecosystem" + ) +endif() + +find_package_handle_standard_args(GNURADIO DEFAULT_MSG GNURADIO_RUNTIME_FOUND) + +# Detect if using standard pointers +set(GNURADIO_USES_STD_POINTERS FALSE) +if(GNURADIO_VERSION VERSION_GREATER 3.8.99) + file(STRINGS ${GNURADIO_RUNTIME_INCLUDE_DIRS}/gnuradio/basic_block.h _basic_block) + foreach(_loop_var IN LISTS _basic_block) + string(STRIP "${_loop_var}" _file_line) + if("public std::enable_shared_from_this" STREQUAL "${_file_line}") + set(GNURADIO_USES_STD_POINTERS TRUE) + endif() + endforeach() +endif() + +# Detect if FFT are templates +if(EXISTS ${GNURADIO_FFT_INCLUDE_DIRS}/gnuradio/fft/fft_vfc.h) + set(GNURADIO_FFT_USES_TEMPLATES FALSE) +else() + set(GNURADIO_FFT_USES_TEMPLATES TRUE) +endif() + +# Search for IIO component +if(GNURADIO_VERSION VERSION_GREATER 3.8.99) + pkg_check_modules(PC_GNURADIO_IIO QUIET gnuradio-iio) + # look for include files + message(STATUS "Checking for GNU Radio Module: IIO") + find_path(GNURADIO_IIO_INCLUDE_DIRS + NAMES gnuradio/iio/api.h + HINTS ${PC_GNURADIO_IIO_INCLUDEDIR} + PATHS ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/include + /usr/include + /usr/local/include + /opt/local/include + ) + + # look for libs + find_library(GNURADIO_IIO_LIBRARIES + NAMES gnuradio-iio gnuradio-iio-${GNURADIO_VERSION} + HINTS ${PC_GNURADIO_IIO_LIBDIR} + PATHS ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/lib + ${GNURADIO_INSTALL_PREFIX_USER_PROVIDED}/lib64 + ${GNSSSDR_LIB_PATHS} + ) + + if(GNURADIO_IIO_LIBRARIES) + message(STATUS " * INCLUDES=${GNURADIO_IIO_INCLUDE_DIRS}") + message(STATUS " * LIBS=${GNURADIO_IIO_LIBRARIES}") + else() + message(STATUS " * IIO GNU Radio Module not found.") + endif() + if(GNURADIO_IIO_LIBRARIES AND GNURADIO_IIO_INCLUDE_DIRS) + set(GNURADIO_IIO_FOUND TRUE) + endif() + if(GNURADIO_IIO_FOUND) + message(STATUS "GNURADIO_IIO_FOUND = ${GNURADIO_IIO_FOUND}") + # append to all includes and libs list + set(GNURADIO_ALL_INCLUDE_DIRS ${GNURADIO_ALL_INCLUDE_DIRS} ${GNURADIO_IIO_INCLUDE_DIRS}) + set(GNURADIO_ALL_LIBRARIES ${GNURADIO_ALL_LIBRARIES} ${GNURADIO_IIO_LIBRARIES}) + + # Create imported target + if(NOT TARGET Gnuradio::iio) + add_library(Gnuradio::iio SHARED IMPORTED) + set(GNURADIO_LIBRARY ${GNURADIO_IIO_LIBRARIES}) + list(GET GNURADIO_LIBRARY 0 FIRST_DIR) + get_filename_component(GNURADIO_DIR ${FIRST_DIR} ABSOLUTE) + set_target_properties(Gnuradio::iio PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${GNURADIO_DIR}" + INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_IIO_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES "${GNURADIO_LIBRARY}" + ) + endif() + + # check templatized API + if(NOT EXISTS "${GNURADIO_IIO_INCLUDE_DIRS}/gnuradio/iio/pluto_source.h") + set(GR_IIO_TEMPLATIZED_API TRUE) + endif() + endif() +endif() + +# Check if PMT uses boost::any or std::any +if(GNURADIO_PMT_INCLUDE_DIRS) + file(STRINGS ${GNURADIO_PMT_INCLUDE_DIRS}/pmt/pmt.h _pmt_content) + set(_uses_boost TRUE) + foreach(_loop_var IN LISTS _pmt_content) + string(STRIP "${_loop_var}" _file_line) + if("#include " STREQUAL "${_file_line}") + set(_uses_boost FALSE) + endif() + endforeach() + if(${_uses_boost}) + set(PMT_USES_BOOST_ANY TRUE) + endif() +endif() + +# Check if GNU Radio uses log4cpp or spdlog +if(GNURADIO_RUNTIME_INCLUDE_DIRS) + if(EXISTS "${GNURADIO_RUNTIME_INCLUDE_DIRS}/gnuradio/logger.h") + file(STRINGS ${GNURADIO_RUNTIME_INCLUDE_DIRS}/gnuradio/logger.h _logger_content) + set(_uses_log4cpp FALSE) + set(_uses_spdlog FALSE) + foreach(_loop_var IN LISTS _logger_content) + string(STRIP "${_loop_var}" _file_line) + if("#include " STREQUAL "${_file_line}") + set(_uses_log4cpp TRUE) + endif() + if("#include " STREQUAL "${_file_line}") + set(_uses_spdlog TRUE) + endif() + endforeach() + if(${_uses_log4cpp}) + find_package(LOG4CPP) + set_package_properties(LOG4CPP PROPERTIES + PURPOSE "Required by GNU Radio." + TYPE REQUIRED + ) + if(CMAKE_VERSION VERSION_GREATER 3.13) + target_link_libraries(Gnuradio::filter INTERFACE Log4cpp::log4cpp) + target_link_libraries(Gnuradio::runtime INTERFACE Log4cpp::log4cpp) + else() + set_target_properties(Gnuradio::filter PROPERTIES INTERFACE_LINK_LIBRARIES Log4cpp::log4cpp) + set_target_properties(Gnuradio::runtime PROPERTIES INTERFACE_LINK_LIBRARIES Log4cpp::log4cpp) + endif() + endif() + if(${_uses_spdlog}) + find_package(spdlog REQUIRED CONFIG) + set_package_properties(spdlog PROPERTIES + URL "https://github.com/gabime/spdlog" + DESCRIPTION "Very fast, header-only/compiled, C++ logging library (found: v${spdlog_VERSION})" + PURPOSE "Required by GNU Radio." + TYPE REQUIRED + ) + set(GNURADIO_USES_SPDLOG TRUE) + if(CMAKE_VERSION VERSION_GREATER 3.13) + target_link_libraries(Gnuradio::runtime INTERFACE spdlog::spdlog) + target_link_libraries(Gnuradio::blocks INTERFACE spdlog::spdlog) + else() + set_target_properties(Gnuradio::runtime PROPERTIES INTERFACE_LINK_LIBRARIES spdlog::spdlog) + set_target_properties(Gnuradio::blocks PROPERTIES INTERFACE_LINK_LIBRARIES spdlog::spdlog) + endif() + endif() + endif() +endif() + +set_package_properties(GNURADIO PROPERTIES + URL "https://www.gnuradio.org/" +) diff --git a/cmake/Modules/FindGOOGLETEST.cmake b/cmake/Modules/FindGOOGLETEST.cmake new file mode 100644 index 000000000..cf47a7062 --- /dev/null +++ b/cmake/Modules/FindGOOGLETEST.cmake @@ -0,0 +1,82 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + + +# - Try to find Googletest source code +# +# The following environment variable is optionally searched for: +# GTEST_DIR: Base directory where Googletest source code is found. +# +# The following are set after configuration is done: +# GOOGLETEST_FOUND +# LIBGTEST_DEV_DIR +# GTEST_INCLUDE_DIRS + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(PC_GTEST gtest) + +if(NOT GTEST_DIR) + set(GTEST_DIR_USER_PROVIDED /usr/local) +else() + set(GTEST_DIR_USER_PROVIDED ${GTEST_DIR}) +endif() +if(DEFINED ENV{GTEST_DIR}) + set(GTEST_DIR_USER_PROVIDED + ${GTEST_DIR_USER_PROVIDED} + $ENV{GTEST_DIR} + ) +endif() + +find_path(LIBGTEST_DEV_DIR + NAMES src/gtest-all.cc + PATHS + ${GTEST_DIR_USER_PROVIDED} + ${GTEST_DIR_USER_PROVIDED}/googletest + /usr/src/googletest/googletest + /usr/src/gtest + /usr/include/gtest + /usr/local/src/googletest/googletest + /opt/local/src/gtest-1.7.0 + /opt/homebrew/opt/googletest/include/googletest/googletest +) + +find_path(GTEST_INCLUDE_DIRS + NAMES gtest/gtest.h + HINTS ${PC_GTEST_INCLUDEDIR} + PATHS + ${GTEST_DIR_USER_PROVIDED}/googletest/include + /usr/include + /usr/local/include + /opt/local/src/gtest-1.7.0/include + /opt/homebrew/opt/googletest/include +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GOOGLETEST DEFAULT_MSG LIBGTEST_DEV_DIR GTEST_INCLUDE_DIRS) + +if(GOOGLETEST_FOUND AND PC_GTEST_VERSION) + set(GOOGLETEST_VERSION ${PC_GTEST_VERSION}) + set_package_properties(GOOGLETEST PROPERTIES + DESCRIPTION "Source code of Google's Testing Framework (found: v${GOOGLETEST_VERSION})" + ) +else() + set_package_properties(GOOGLETEST PROPERTIES + DESCRIPTION "Source code of Google's Testing Framework" + ) +endif() + +set_package_properties(GOOGLETEST PROPERTIES + URL "https://github.com/google/googletest" +) + +mark_as_advanced(LIBGTEST_DEV_DIR GTEST_INCLUDE_DIRS) diff --git a/cmake/Modules/FindGPERFTOOLS.cmake b/cmake/Modules/FindGPERFTOOLS.cmake new file mode 100644 index 000000000..4d6dd135b --- /dev/null +++ b/cmake/Modules/FindGPERFTOOLS.cmake @@ -0,0 +1,149 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# 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 +# + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GPERFTOOLS_ROOT) + set(GPERFTOOLS_ROOT_USER_DEFINED /usr/local) +else() + set(GPERFTOOLS_ROOT_USER_DEFINED ${GPERFTOOLS_ROOT}) +endif() +if(DEFINED ENV{GPERFTOOLS_ROOT}) + set(GPERFTOOLS_ROOT_USER_DEFINED + ${GPERFTOOLS_ROOT_USER_DEFINED} + $ENV{GPERFTOOLS_ROOT} + ) +endif() +if(Gperftools_ROOT_DIR) + set(GPERFTOOLS_ROOT_USER_DEFINED + ${GPERFTOOLS_ROOT_USER_DEFINED} + ${Gperftools_ROOT_DIR} + ) +endif() + + +find_library(GPERFTOOLS_TCMALLOC + NAMES tcmalloc + PATHS ${GPERFTOOLS_ROOT_USER_DEFINED}/lib + ${GPERFTOOLS_ROOT_USER_DEFINED}/lib64 + /usr/lib + /usr/lib64 + /usr/local/lib + /usr/local/lib64 + /opt/local/lib +) + +find_library(GPERFTOOLS_PROFILER + NAMES profiler + PATHS ${GPERFTOOLS_ROOT_USER_DEFINED}/lib + ${GPERFTOOLS_ROOT_USER_DEFINED}/lib64 + /usr/lib + /usr/lib64 + /usr/local/lib + /usr/local/lib64 + /opt/local/lib +) + +find_library(GPERFTOOLS_TCMALLOC_AND_PROFILER + NAMES tcmalloc_and_profiler + PATHS ${GPERFTOOLS_ROOT_USER_DEFINED}/lib + ${GPERFTOOLS_ROOT_USER_DEFINED}/lib64 + /usr/lib + /usr/lib64 + /usr/local/lib + /usr/local/lib64 + /opt/local/lib +) + +find_path(GPERFTOOLS_INCLUDE_DIR + NAMES gperftools/heap-profiler.h + PATHS /usr/include + /usr/local/include + /opt/local/include + ${GPERFTOOLS_ROOT_USER_DEFINED}/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() + +set_package_properties(GPERFTOOLS PROPERTIES + URL "https://github.com/gperftools/gperftools" + DESCRIPTION "Collection of performance analysis tools" +) + +mark_as_advanced( + GPERFTOOLS_TCMALLOC + GPERFTOOLS_PROFILER + GPERFTOOLS_TCMALLOC_AND_PROFILER + GPERFTOOLS_LIBRARIES + GPERFTOOLS_INCLUDE_DIR +) diff --git a/cmake/Modules/FindGPSTK.cmake b/cmake/Modules/FindGPSTK.cmake deleted file mode 100644 index 9529154f9..000000000 --- a/cmake/Modules/FindGPSTK.cmake +++ /dev/null @@ -1,87 +0,0 @@ -# - Find gpstk library -# Find the native gpstk includes and library -# This module defines -# GPSTK_INCLUDE_DIR, where to find tiff.h, 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 gpstk/Matrix.hpp) -FIND_PATH(GEOMATICS_INCLUDE_DIR gpstk/random.hpp) -FIND_PATH(PROCFRAME_INCLUDE_DIR gpstk/SolverWMS.hpp) -FIND_PATH(VDRAW_INCLUDE_DIR gpstk/Layout.hpp) -FIND_PATH(VPLOT_INCLUDE_DIR gpstk/ScatterPlot.hpp) -FIND_PATH(RXIO_INCLUDE_DIR gpstk/EphReader.hpp) - -SET(GPSTK_NAMES ${GPSTK_NAMES} gpstk libgpstk) -FIND_LIBRARY(GPSTK_LIBRARY NAMES ${GPSTK_NAMES} ) - -SET(GEOMATICS_NAMES ${GEOMATICS_NAMES} geomatics libgeomatics) -FIND_LIBRARY(GEOMATICS_LIBRARY NAMES ${GEOMATICS_NAMES} ) - -SET(PROCFRAME_NAMES ${PROCFRAME_NAMES} procframe libprocframe) -FIND_LIBRARY(PROCFRAME_LIBRARY NAMES ${PROCFRAME_NAMES} ) - -SET(VDRAW_NAMES ${VDRAW_NAMES} vdraw libvdraw) -FIND_LIBRARY(VDRAW_LIBRARY NAMES ${VDRAW_NAMES} ) - -SET(VPLOT_NAMES ${VPLOT_NAMES} vplot libvplot) -FIND_LIBRARY(VPLOT_LIBRARY NAMES ${VPLOT_NAMES} ) - -SET(RXIO_NAMES ${RXIO_NAMES} rxio librxio) -FIND_LIBRARY(RXIO_LIBRARY NAMES ${RXIO_NAMES} ) - -# 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) - -FIND_PACKAGE_HANDLE_STANDARD_ARGS(GEOMATICS DEFAULT_MSG GEOMATICS_LIBRARY GEOMATICS_INCLUDE_DIR) - -FIND_PACKAGE_HANDLE_STANDARD_ARGS(PROCFRAME DEFAULT_MSG PROCFRAME_LIBRARY PROCFRAME_INCLUDE_DIR) - -FIND_PACKAGE_HANDLE_STANDARD_ARGS(VDRAW DEFAULT_MSG VDRAW_LIBRARY VDRAW_INCLUDE_DIR) - -FIND_PACKAGE_HANDLE_STANDARD_ARGS(VPLOT DEFAULT_MSG VPLOT_LIBRARY VPLOT_INCLUDE_DIR) - -FIND_PACKAGE_HANDLE_STANDARD_ARGS(RXIO DEFAULT_MSG RXIO_LIBRARY RXIO_INCLUDE_DIR) - -IF(GPSTK_FOUND) - SET( GPSTK_LIBRARIES ${GPSTK_LIBRARY} ) -ENDIF(GPSTK_FOUND) - -IF(GEOMATICS_FOUND) - SET( GEOMATICS_LIBRARIES ${GEOMATICS_LIBRARY} ) -ENDIF(GEOMATICS_FOUND) - -IF(PROCFRAME_FOUND) - SET( PROCFRAME_LIBRARIES ${PROCFRAME_LIBRARY} ) -ENDIF(PROCFRAME_FOUND) - -IF(VDRAW_FOUND) - SET( VDRAW_LIBRARIES ${VDRAW_LIBRARY} ) -ENDIF(VDRAW_FOUND) - -IF(VPLOT_FOUND) - SET( VPLOT_LIBRARIES ${VPLOT_LIBRARY} ) -ENDIF(VPLOT_FOUND) - -IF(RXIO_FOUND) - SET( RXIO_LIBRARIES ${RXIO_LIBRARY} ) -ENDIF(RXIO_FOUND) - -MARK_AS_ADVANCED(GPSTK_INCLUDE_DIR GPSTK_LIBRARY) - -MARK_AS_ADVANCED(GEOMATICS_INCLUDE_DIR GEOMATICS_LIBRARY) - -MARK_AS_ADVANCED(PROCFRAME_INCLUDE_DIR PROCFRAME_LIBRARY) - -MARK_AS_ADVANCED(VDRAW_INCLUDE_DIR VDRAW_LIBRARY) - -MARK_AS_ADVANCED(VPLOT_INCLUDE_DIR VPLOT_LIBRARY) - -MARK_AS_ADVANCED(RXIO_INCLUDE_DIR RXIO_LIBRARY) - - diff --git a/cmake/Modules/FindGRDBFCTTC.cmake b/cmake/Modules/FindGRDBFCTTC.cmake new file mode 100644 index 000000000..72bbe8d90 --- /dev/null +++ b/cmake/Modules/FindGRDBFCTTC.cmake @@ -0,0 +1,80 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +######################################################################## +# Find GR-DBFCTTC Module +######################################################################## + +# +# Provides the following imported target: +# Gnuradio::dbfcttc +# + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(PC_GR_DBFCTTC gr-dbfcttc) + +if(NOT GRDBFCTTC_ROOT) + set(GRDBFCTTC_ROOT_USER_DEFINED /usr/local) +else() + set(GRDBFCTTC_ROOT_USER_DEFINED ${GRDBFCTTC_ROOT}) +endif() +if(DEFINED ENV{GRDBFCTTC_ROOT}) + set(GRDBFCTTC_ROOT_USER_DEFINED + ${GRDBFCTTC_ROOT_USER_DEFINED} + $ENV{GRDBFCTTC_ROOT} + ) +endif() +if(DEFINED ENV{GR_DBFCTTC_DIR}) + set(GRDBFCTTC_ROOT_USER_DEFINED + ${GRDBFCTTC_ROOT_USER_DEFINED} + $ENV{GR_DBFCTTC_DIR} + ) +endif() +set(GRDBFCTTC_ROOT_USER_DEFINED + ${GRDBFCTTC_ROOT_USER_DEFINED} + ${CMAKE_INSTALL_PREFIX} +) + +find_path( + GR_DBFCTTC_INCLUDE_DIRS + NAMES dbfcttc/api.h + HINTS ${PC_GR_DBFCTTC_INCLUDEDIR} + PATHS ${GRDBFCTTC_ROOT_USER_DEFINED}/include + /usr/include + /usr/local/include + /opt/local/include +) + +find_library( + GR_DBFCTTC_LIBRARIES + NAMES gnuradio-dbfcttc + HINTS ${PC_GR_DBFCTTC_LIBDIR} + PATHS ${GRDBFCTTC_ROOT_USER_DEFINED}/lib + ${GRDBFCTTC_ROOT_USER_DEFINED}/lib64 + /usr/lib + /usr/lib64 + /usr/local/lib + /usr/local/lib64 + /opt/local/lib +) + +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) diff --git a/cmake/Modules/FindGRIIO.cmake b/cmake/Modules/FindGRIIO.cmake new file mode 100644 index 000000000..6a4352fc0 --- /dev/null +++ b/cmake/Modules/FindGRIIO.cmake @@ -0,0 +1,110 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# +# Provides the following imported target: +# Gnuradio::iio +# + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(PC_IIO gnuradio-iio) + +if(NOT GRIIO_ROOT) + set(GRIIO_ROOT_USER_DEFINED /usr) +else() + set(GRIIO_ROOT_USER_DEFINED ${GRIIO_ROOT}) +endif() +if(DEFINED ENV{GRIIO_ROOT}) + set(GRIIO_ROOT_USER_DEFINED + ${GRIIO_ROOT_USER_DEFINED} + $ENV{GRIIO_ROOT} + ) +endif() +if(DEFINED ENV{IIO_DIR}) + set(GRIIO_ROOT_USER_DEFINED + ${GRIIO_ROOT_USER_DEFINED} + $ENV{IIO_DIR} + ) +endif() +set(GRIIO_ROOT_USER_DEFINED + ${GRIIO_ROOT_USER_DEFINED} + ${CMAKE_INSTALL_PREFIX} +) + + +find_path(IIO_INCLUDE_DIRS + NAMES gnuradio/iio/api.h + HINTS ${PC_IIO_INCLUDEDIR} + PATHS ${GRIIO_ROOT_USER_DEFINED}/include + /usr/include + /usr/local/include + /opt/local/include +) + +if(IIO_INCLUDE_DIRS) + set(GR_IIO_INCLUDE_HAS_GNURADIO TRUE) +else() + find_path(IIO_INCLUDE_DIRS + NAMES iio/api.h + HINTS ${PC_IIO_INCLUDEDIR} + PATHS ${GRIIO_ROOT_USER_DEFINED}/include + /usr/include + /usr/local/include + /opt/local/include + ) + set(GR_IIO_INCLUDE_HAS_GNURADIO FALSE) +endif() + +find_library(IIO_LIBRARIES + NAMES gnuradio-iio + HINTS ${PC_IIO_LIBDIR} + PATHS ${GRIIO_ROOT_USER_DEFINED}/lib + ${GRIIO_ROOT_USER_DEFINED}/lib64 + ${GNSSSDR_LIB_PATHS} +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GRIIO DEFAULT_MSG IIO_LIBRARIES IIO_INCLUDE_DIRS) + +if(PC_IIO_VERSION) + set(GRIIO_VERSION ${PC_IIO_VERSION}) +endif() + +set_package_properties(GRIIO PROPERTIES + URL "https://github.com/analogdevicesinc/gr-iio" +) +if(GRIIO_FOUND AND GRIIO_VERSION) + set_package_properties(GRIIO PROPERTIES + DESCRIPTION "IIO blocks for GNU Radio (found: v${GRIIO_VERSION})" + ) +else() + set_package_properties(GRIIO PROPERTIES + DESCRIPTION "IIO blocks for GNU Radio" + ) +endif() + +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 GR_IIO_INCLUDE_HAS_GNURADIO) diff --git a/cmake/Modules/FindGRLIMESDR.cmake b/cmake/Modules/FindGRLIMESDR.cmake new file mode 100644 index 000000000..a0ca9a565 --- /dev/null +++ b/cmake/Modules/FindGRLIMESDR.cmake @@ -0,0 +1,140 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# Tries to find gr-limesdr. +# +# Usage of this module as follows: +# +# find_package(GRLIMESDR) +# +# Variables used by this module, they can change the default behaviour and need +# to be set before calling find_package: +# +# GrLimeSDR_ROOT_DIR Set this variable to the root installation of +# gr-limesdr if the module has problems finding +# the proper installation path. +# +# Variables defined by this module: +# +# GRLIMESDR_FOUND System has gr-limesdr libs/headers +# GRLIMESDR_LIBRARIES The gr-limesdr libraries (gnuradio-limesdr) +# GRLIMESDR_INCLUDE_DIR The location of gr-limesdr headers +# +# Provides the following imported target: +# Gnuradio::limesdr +# + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(GRLIMESDR_PKG QUIET gnuradio-limesdr) + +if(NOT GRLIMESDR_ROOT) + set(GRLIMESDR_ROOT_USER_DEFINED /usr) +else() + set(GRLIMESDR_ROOT_USER_DEFINED ${GRLIMESDR_ROOT}) +endif() +if(DEFINED ENV{GRLIMESDR_ROOT}) + set(GRLIMESDR_ROOT_USER_DEFINED + ${GRLIMESDR_ROOT_USER_DEFINED} + $ENV{GRLIMESDR_ROOT} + ) +endif() + +find_path(GRLIMESDR_INCLUDE_DIR + NAMES + limesdr/source.h + limesdr/api.h + HINTS + ${GRLIMESDR_PKG_INCLUDEDIR} + PATHS + ${GRLIMESDR_ROOT_USER_DEFINED}/include + /usr/include + /usr/local/include + /opt/local/include +) + +find_library(GRLIMESDR_LIBRARIES + NAMES + gnuradio-limesdr + HINTS + ${GRLIMESDR_PKG_LIBDIR} + PATHS + ${GRLIMESDR_ROOT_USER_DEFINED}/lib + ${GRLIMESDR_ROOT_USER_DEFINED}/lib64 + ${GNSSSDR_LIB_PATHS} +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GRLIMESDR DEFAULT_MSG GRLIMESDR_LIBRARIES GRLIMESDR_INCLUDE_DIR) + +if(GRLIMESDR_PKG_VERSION) + set(GRLIMESDR_VERSION_AUX ${GRLIMESDR_PKG_VERSION}) + string(REGEX REPLACE "^v" "" GRLIMESDR_VERSION ${GRLIMESDR_VERSION_AUX}) +endif() + +set_package_properties(GRLIMESDR PROPERTIES + URL "https://github.com/myriadrf/gr-limesdr" +) + +if(GRLIMESDR_FOUND AND GRLIMESDR_VERSION) + set_package_properties(GRLIMESDR PROPERTIES + DESCRIPTION "LimeSDR GNU Radio blocks (found: v${GRLIMESDR_VERSION})" + ) +else() + set_package_properties(GRLIMESDR PROPERTIES + DESCRIPTION "LimeSDR GNU Radio blocks" + ) +endif() + +if(GRLIMESDR_FOUND AND NOT TARGET Gnuradio::limesdr) + add_library(Gnuradio::limesdr SHARED IMPORTED) + set_target_properties(Gnuradio::limesdr PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${GRLIMESDR_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${GRLIMESDR_INCLUDE_DIR};${GRLIMESDR_INCLUDE_DIR}/limesdr" + INTERFACE_LINK_LIBRARIES "${GRLIMESDR_LIBRARIES}" + ) + + message(STATUS "The (optional) gr-limesdr module has been found.") + + # check for PPS custom version + file(READ ${GRLIMESDR_INCLUDE_DIR}/limesdr/source.h TMPTXT) + string(FIND "${TMPTXT}" "enable_PPS_mode" matchres) + if(${matchres} EQUAL -1) + message(STATUS " Using standard gr-limesdr library.") + else() + set(GRLIMESDR_PPS TRUE) + message(STATUS " Using custom gr-limesdr library with PPS support.") + endif() + + # check gr-limesdr branch + set(_g38_branch TRUE) + file(STRINGS ${GRLIMESDR_INCLUDE_DIR}/limesdr/source.h _limesdr_header_content) + foreach(_loop_var IN LISTS _limesdr_header_content) + string(STRIP "${_loop_var}" _file_line) + if("static sptr make(std::string serial, int channel_mode, const std::string& filename);" STREQUAL "${_file_line}") + set(_g38_branch FALSE) + endif() + if("make(std::string serial, int channel_mode, const std::string& filename, bool enable_PPS_mode);" STREQUAL "${_file_line}") + set(_g38_branch FALSE) + endif() + endforeach() + if(${_g38_branch}) + set(GR_LIMESDR_IS_G38_BRANCH TRUE) + endif() +endif() + +mark_as_advanced(GRLIMESDR_LIBRARIES GRLIMESDR_INCLUDE_DIR) diff --git a/cmake/Modules/FindGROSMOSDR.cmake b/cmake/Modules/FindGROSMOSDR.cmake new file mode 100644 index 000000000..15a36c32b --- /dev/null +++ b/cmake/Modules/FindGROSMOSDR.cmake @@ -0,0 +1,112 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# Tries to find gr-osmosdr. +# +# Usage of this module as follows: +# +# find_package(GROSMOSDR) +# +# Variables used by this module, they can change the default behaviour and need +# to be set before calling find_package: +# +# GrOsmoSDR_ROOT_DIR Set this variable to the root installation of +# gr-osmosdr if the module has problems finding +# the proper installation path. +# +# Variables defined by this module: +# +# 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 COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(GROSMOSDR_PKG gnuradio-osmosdr) + +if(NOT GROSMOSDR_ROOT) + set(GROSMOSDR_ROOT_USER_DEFINED /usr) +else() + set(GROSMOSDR_ROOT_USER_DEFINED ${GROSMOSDR_ROOT}) +endif() +if(DEFINED ENV{GROSMOSDR_ROOT}) + set(GROSMOSDR_ROOT_USER_DEFINED + ${GROSMOSDR_ROOT_USER_DEFINED} + $ENV{GROSMOSDR_ROOT} + ) +endif() + +find_path(GROSMOSDR_INCLUDE_DIR + NAMES + osmosdr/source.h + osmosdr/api.h + HINTS + ${GROSMOSDR_PKG_INCLUDEDIR} + PATHS + ${GROSMOSDR_ROOT_USER_DEFINED}/include + /usr/include + /usr/local/include + /opt/local/include +) + +find_library(GROSMOSDR_LIBRARIES + NAMES + gnuradio-osmosdr + HINTS + ${GROSMOSDR_PKG_LIBDIR} + PATHS + ${GROSMOSDR_ROOT_USER_DEFINED}/lib + ${GROSMOSDR_ROOT_USER_DEFINED}/lib64 + ${GNSSSDR_LIB_PATHS} +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GROSMOSDR DEFAULT_MSG GROSMOSDR_LIBRARIES GROSMOSDR_INCLUDE_DIR) + +if(GROSMOSDR_PKG_VERSION) + set(GROSMOSDR_VERSION_AUX ${GROSMOSDR_PKG_VERSION}) + string(REGEX REPLACE "^v" "" GROSMOSDR_VERSION ${GROSMOSDR_VERSION_AUX}) +endif() + +set_package_properties(GROSMOSDR PROPERTIES + URL "https://osmocom.org/projects/gr-osmosdr/wiki" +) + +if(GROSMOSDR_FOUND AND GROSMOSDR_VERSION) + set_package_properties(GROSMOSDR PROPERTIES + DESCRIPTION "osmocom GNU Radio blocks (found: v${GROSMOSDR_VERSION})" + ) +else() + set_package_properties(GROSMOSDR PROPERTIES + DESCRIPTION "osmocom GNU Radio blocks" + ) +endif() + +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() + +mark_as_advanced(GROSMOSDR_LIBRARIES GROSMOSDR_INCLUDE_DIR) diff --git a/cmake/Modules/FindGnuradio.cmake b/cmake/Modules/FindGnuradio.cmake deleted file mode 100644 index 46f6c2fc3..000000000 --- a/cmake/Modules/FindGnuradio.cmake +++ /dev/null @@ -1,130 +0,0 @@ -######################################################################## -# Find GNU Radio -######################################################################## - -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}) - -# Easily access all libraries and includes of GNU Radio -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) - -function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE) - - LIST_CONTAINS(REQUIRED_MODULE ${EXTVAR} ${GR_REQUIRED_COMPONENTS}) - if(NOT REQUIRED_MODULE) - #message("Ignoring GNU Radio Module ${EXTVAR}") - return() - endif() - - message(STATUS "Checking for GNU Radio Module: ${EXTVAR}") - - # check for .pc hints - PKG_CHECK_MODULES(PC_GNURADIO_${EXTVAR} ${PCNAME}) - - if(NOT PC_GNURADIO_${EXTVAR}_FOUND) - set(PC_GNURADIO_${EXTVAR}_LIBRARIES ${LIBFILE}) - endif() - - set(INCVAR_NAME "GNURADIO_${EXTVAR}_INCLUDE_DIRS") - set(LIBVAR_NAME "GNURADIO_${EXTVAR}_LIBRARIES") - set(PC_INCDIR ${PC_GNURADIO_${EXTVAR}_INCLUDEDIR}) - set(PC_LIBDIR ${PC_GNURADIO_${EXTVAR}_LIBDIR}) - - # look for include files - FIND_PATH( - ${INCVAR_NAME} - NAMES ${INCFILE} - HINTS $ENV{GNURADIO_RUNTIME_DIR}/include - ${PC_INCDIR} - ${CMAKE_INSTALL_PREFIX}/include - ${GNURADIO_INSTALL_PREFIX}/include - PATHS /usr/local/include - /usr/include - ${GNURADIO_INSTALL_PREFIX}/include - ) - - # look for libs - foreach(libname ${PC_GNURADIO_${EXTVAR}_LIBRARIES}) - FIND_LIBRARY( - ${LIBVAR_NAME}_${libname} - NAMES ${libname} - HINTS $ENV{GNURADIO_RUNTIME_DIR}/lib - ${PC_LIBDIR} - ${CMAKE_INSTALL_PREFIX}/lib/ - ${CMAKE_INSTALL_PREFIX}/lib64/ - ${GNURADIO_INSTALL_PREFIX}/lib/ - ${GNURADIO_INSTALL_PREFIX}/lib64 - PATHS /usr/local/lib - /usr/local/lib64 - /usr/lib - /usr/lib64 - ${GNURADIO_INSTALL_PREFIX}/lib - ) - list(APPEND ${LIBVAR_NAME} ${${LIBVAR_NAME}_${libname}}) - endforeach(libname) - - set(${LIBVAR_NAME} ${${LIBVAR_NAME}} PARENT_SCOPE) - - # show results - message(STATUS " * INCLUDES=${GNURADIO_${EXTVAR}_INCLUDE_DIRS}") - message(STATUS " * LIBS=${GNURADIO_${EXTVAR}_LIBRARIES}") - - # append to all includes and libs list - 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) - 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!") - endif() - - 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(ATSC gnuradio-atsc gnuradio/atsc/api.h gnuradio-atsc) -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) diff --git a/cmake/Modules/FindGperftools.cmake b/cmake/Modules/FindGperftools.cmake deleted file mode 100644 index 5a97a29c5..000000000 --- a/cmake/Modules/FindGperftools.cmake +++ /dev/null @@ -1,52 +0,0 @@ -# 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) \ No newline at end of file diff --git a/cmake/Modules/FindGrOsmoSDR.cmake b/cmake/Modules/FindGrOsmoSDR.cmake deleted file mode 100644 index e39bd6b80..000000000 --- a/cmake/Modules/FindGrOsmoSDR.cmake +++ /dev/null @@ -1,51 +0,0 @@ -# Tries to find gr-osmosdr. -# -# Usage of this module as follows: -# -# find_package(GrOsmoSDR) -# -# Variables used by this module, they can change the default behaviour and need -# to be set before calling find_package: -# -# GrOsmoSDR_ROOT_DIR Set this variable to the root installation of -# gr-osmosdr if the module has problems finding -# the proper installation path. -# -# Variables defined by this module: -# -# 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 - - - -FIND_PATH(GROSMOSDR_INCLUDE_DIR - NAMES osmosdr/source.h - osmosdr/api.h - HINTS ${GrOsmoSDR_ROOT_DIR}/include - PATHS /usr/local/include - /usr/include -) - - -find_library(GROSMOSDR_LIBRARIES - NAMES gnuradio-osmosdr - HINTS ${GrOsmoSDR_ROOT_DIR}/lib - PATHS /usr/local/lib - /usr/lib - ) - - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args( - GrOsmoSDR - DEFAULT_MSG - GROSMOSDR_LIBRARIES - GROSMOSDR_INCLUDE_DIR -) - -mark_as_advanced( - GrOsmoSDR_ROOT_DIR - GROSMOSDR_LIBRARIES - GROSMOSDR_INCLUDE_DIR -) diff --git a/cmake/Modules/FindLIBAD9361.cmake b/cmake/Modules/FindLIBAD9361.cmake new file mode 100644 index 000000000..175a81af2 --- /dev/null +++ b/cmake/Modules/FindLIBAD9361.cmake @@ -0,0 +1,97 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# +# Provides the following imported target: +# Iio::ad9361 +# + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(PC_LIBAD9361 libad9361) + +if(NOT LIBAD9361_ROOT) + set(LIBAD9361_ROOT_USER_DEFINED /usr/local) +else() + set(LIBAD9361_ROOT_USER_DEFINED ${LIBAD9361_ROOT}) +endif() +if(DEFINED ENV{LIBAD9361_ROOT}) + set(LIBAD9361_ROOT_USER_DEFINED + ${LIBAD9361_ROOT_USER_DEFINED} + $ENV{LIBAD9361_ROOT} + ) +endif() +set(LIBAD9361_ROOT_USER_DEFINED + ${LIBAD9361_ROOT_USER_DEFINED} + ${CMAKE_INSTALL_PREFIX} +) + +find_path(LIBAD9361_INCLUDE_DIRS + NAMES ad9361.h + HINTS ${PC_LIBAD9361_INCLUDEDIR} + PATHS ${LIBAD9361_ROOT_USER_DEFINED}/include + /usr/include + /usr/local/include + /opt/local/include +) + +find_library(LIBAD9361_LIBRARIES + NAMES ad9361 + HINTS ${PC_LIBAD9361_LIBDIR} + PATHS ${LIBAD9361_ROOT_USER_DEFINED}/lib + ${LIBAD9361_ROOT_USER_DEFINED}/lib64 + ${GNSSSDR_LIB_PATHS} + /Library/Frameworks/ad9361.framework +) + +if(LIBAD9361_LIBRARIES AND APPLE) + if(LIBAD9361_LIBRARIES MATCHES "framework") + set(LIBAD9361_LIBRARIES ${LIBAD9361_LIBRARIES}/ad9361) + endif() +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LIBAD9361 DEFAULT_MSG LIBAD9361_LIBRARIES LIBAD9361_INCLUDE_DIRS) + +if(PC_LIBAD9361_VERSION) + set(LIBAD9361_VERSION ${PC_LIBAD9361_VERSION}) +endif() + +if(LIBAD9361_FOUND AND LIBAD9361_VERSION) + set_package_properties(LIBAD9361 PROPERTIES + DESCRIPTION "A library for interfacing with AD936X RF transceivers (found: v${LIBAD9361_VERSION})" + ) +else() + set_package_properties(LIBAD9361 PROPERTIES + DESCRIPTION "A library for interfacing with AD936X RF transceivers" + ) +endif() + +set_package_properties(LIBAD9361 PROPERTIES + URL "https://github.com/analogdevicesinc/libad9361-iio" +) + +if(LIBAD9361_FOUND AND NOT TARGET Iio::ad9361) + add_library(Iio::ad9361 SHARED IMPORTED) + set_target_properties(Iio::ad9361 PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${LIBAD9361_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${LIBAD9361_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES "${LIBAD9361_LIBRARIES}" + ) +endif() + +mark_as_advanced(LIBAD9361_LIBRARIES LIBAD9361_INCLUDE_DIRS) diff --git a/cmake/Modules/FindLIBIIO.cmake b/cmake/Modules/FindLIBIIO.cmake new file mode 100644 index 000000000..add9215de --- /dev/null +++ b/cmake/Modules/FindLIBIIO.cmake @@ -0,0 +1,99 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# +# Provides the following imported target: +# Iio::iio +# + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(PC_LIBIIO libiio) + +if(NOT LIBIIO_ROOT) + set(LIBIIO_ROOT_USER_DEFINED /usr) +else() + set(LIBIIO_ROOT_USER_DEFINED ${LIBIIO_ROOT}) +endif() +if(DEFINED ENV{LIBIIO_ROOT}) + set(LIBIIO_ROOT_USER_DEFINED + ${LIBIIO_ROOT_USER_DEFINED} + $ENV{LIBIIO_ROOT} + ) +endif() +set(LIBIIO_ROOT_USER_DEFINED + ${LIBIIO_ROOT_USER_DEFINED} + ${CMAKE_INSTALL_PREFIX} +) + +find_path( + LIBIIO_INCLUDE_DIRS + NAMES iio.h + HINTS ${PC_LIBIIO_INCLUDEDIR} + PATHS ${LIBIIO_ROOT_USER_DEFINED}/include + /usr/include + /usr/local/include + /opt/local/include +) + +find_library( + LIBIIO_LIBRARIES + NAMES iio libiio.so.0 + HINTS ${PC_LIBIIO_LIBDIR} + PATHS ${LIBIIO_ROOT_USER_DEFINED}/lib + ${LIBIIO_ROOT_USER_DEFINED}/lib64 + ${GNSSSDR_LIB_PATHS} + /Library/Frameworks/iio.framework/ +) + +if(LIBIIO_LIBRARIES AND APPLE) + if(LIBIIO_LIBRARIES MATCHES "framework") + set(LIBIIO_LIBRARIES ${LIBIIO_LIBRARIES}/iio) + endif() +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LIBIIO DEFAULT_MSG LIBIIO_LIBRARIES LIBIIO_INCLUDE_DIRS) + +if(PC_LIBIIO_VERSION) + set(LIBIIO_VERSION ${PC_LIBIIO_VERSION}) +endif() + +if(LIBIIO_FOUND AND LIBIIO_VERSION) + set_package_properties(LIBIIO PROPERTIES + DESCRIPTION "A library for interfacing with Linux IIO devices (found: v${LIBIIO_VERSION})" + ) +else() + set_package_properties(LIBIIO PROPERTIES + DESCRIPTION "A library for interfacing with Linux IIO devices" + ) +endif() + +set_package_properties(LIBIIO PROPERTIES + URL "https://github.com/analogdevicesinc/libiio" +) + +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) diff --git a/cmake/Modules/FindLIBUNWIND.cmake b/cmake/Modules/FindLIBUNWIND.cmake new file mode 100644 index 000000000..b5c6a68a8 --- /dev/null +++ b/cmake/Modules/FindLIBUNWIND.cmake @@ -0,0 +1,150 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2022 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# Find the libunwind library +# +# LIBUNWIND_FOUND - True if libunwind was found. +# LIBUNWIND_LIBRARIES - The libraries needed to use libunwind +# LIBUNWIND_INCLUDE_DIR - Location of libunwind.h + +# INPUT (Optional): +# LIBUNWIND_ROOT - path where include + lib of libunwind install is located + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +find_path(LIBUNWIND_INCLUDE_DIR + NAMES + libunwind.h + unwind.h + HINTS + /usr + /usr/local + /opt/local + PATH_SUFFIXES include + PATHS "${LIBUNWIND_ROOT}/include" +) + +find_library(LIBUNWIND_GENERIC_LIBRARY + NAMES + libunwind + unwind + HINTS + /usr + /usr/local + /opt/local + PATH_SUFFIXES lib lib64 + PATHS + "${LIBUNWIND_ROOT}/lib" + "${LIBUNWIND_ROOT}/lib64" + ${GNSSSDR_LIB_PATHS} +) + +if(LIBUNWIND_INCLUDE_DIR) + if(LIBUNWIND_GENERIC_LIBRARY) + set(LIBUNWIND_LIBRARIES ${LIBUNWIND_GENERIC_LIBRARY}) + if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)") + set(LIBUNWIND_ARCH "aarch64") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") + set(LIBUNWIND_ARCH "arm") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64)|(AMD64|amd64)|(corei7-64)") + set(LIBUNWIND_ARCH "x86_64") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$") + set(LIBUNWIND_ARCH "x86") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64") + set(LIBUNWIND_ARCH "ppc64") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc") + set(LIBUNWIND_ARCH "ppc32") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips") + set(LIBUNWIND_ARCH "mips") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^hppa") + set(LIBUNWIND_ARCH "hppa") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^ia64") + set(LIBUNWIND_ARCH "ia64") + endif() + if(LIBUNWIND_ARCH) + find_library(LIBUNWIND_SPECIFIC_LIBRARY + NAMES + libunwind-${LIBUNWIND_ARCH} + "unwind-${LIBUNWIND_ARCH}" + HINTS + /usr + /usr/local + /opt/local + PATH_SUFFIXES lib lib64 + PATHS "${LIBUNWIND_ROOT}" + ) + if(NOT LIBUNWIND_SPECIFIC_LIBRARY) + message(STATUS " -- Failed to find unwind-${LIBUNWIND_ARCH}") + else() + set(LIBUNWIND_LIBRARIES ${LIBUNWIND_LIBRARIES} ${LIBUNWIND_SPECIFIC_LIBRARY}) + endif() + endif() + endif() +else() + message(STATUS " -- Could NOT find libunwind.h") +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LIBUNWIND DEFAULT_MSG LIBUNWIND_INCLUDE_DIR) + +if(LIBUNWIND_FOUND) + set(_Unwind_VERSION_HEADER ${LIBUNWIND_INCLUDE_DIR}/libunwind-common.h) + if(EXISTS ${_Unwind_VERSION_HEADER}) + file(READ ${_Unwind_VERSION_HEADER} _Unwind_VERSION_CONTENTS) + string(REGEX REPLACE ".*#define UNW_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" + LIBUNWIND_VERSION_MAJOR "${_Unwind_VERSION_CONTENTS}") + string(REGEX REPLACE ".*#define UNW_VERSION_MINOR[ \t]+([0-9]+).*" "\\1" + LIBUNWIND_VERSION_MINOR "${_Unwind_VERSION_CONTENTS}") + string(REGEX REPLACE ".*#define UNW_VERSION_EXTRA[ \t]+([0-9]+).*" "\\1" + LIBUNWIND_VERSION_PATCH "${_Unwind_VERSION_CONTENTS}") + set(LIBUNWIND_VERSION ${LIBUNWIND_VERSION_MAJOR}.${LIBUNWIND_VERSION_MINOR}) + if(CMAKE_MATCH_0) + # Third version component may be empty + set(LIBUNWIND_VERSION ${LIBUNWIND_VERSION}.${LIBUNWIND_VERSION_PATCH}) + set(LIBUNWIND_VERSION_COMPONENTS 3) + else() + set(LIBUNWIND_VERSION_COMPONENTS 2) + endif() + endif() +endif() + +if(LIBUNWIND_FOUND AND NOT TARGET Libunwind::libunwind) + if(LIBUNWIND_GENERIC_LIBRARY) + add_library(Libunwind::libunwind SHARED IMPORTED) + set_target_properties(Libunwind::libunwind PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${LIBUNWIND_GENERIC_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${LIBUNWIND_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES "${LIBUNWIND_LIBRARIES}" + ) + else() + add_library(Libunwind::libunwind INTERFACE IMPORTED) + set_target_properties(Libunwind::libunwind PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${LIBUNWIND_INCLUDE_DIR}" + ) + endif() +endif() + +set_package_properties(LIBUNWIND PROPERTIES + URL "https://www.nongnu.org/libunwind/" +) +if(LIBUNWIND_VERSION) + set_package_properties(LIBUNWIND PROPERTIES + DESCRIPTION "Portable and efficient C programming interface to determine the call-chain of a program (found: v${LIBUNWIND_VERSION})" + ) +else() + set_package_properties(LIBUNWIND PROPERTIES + DESCRIPTION "Portable and efficient C programming interface to determine the call-chain of a program" + ) +endif() + +mark_as_advanced(LIBUNWIND_LIBRARIES LIBUNWIND_INCLUDE_DIR) diff --git a/cmake/Modules/FindLOG4CPP.cmake b/cmake/Modules/FindLOG4CPP.cmake new file mode 100644 index 000000000..f351ebf3a --- /dev/null +++ b/cmake/Modules/FindLOG4CPP.cmake @@ -0,0 +1,133 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# - Find Log4cpp +# Find the native LOG4CPP includes and library +# +# 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(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(PC_LOG4CPP log4cpp QUIET) + +if(LOG4CPP_INCLUDE_DIR) + # Already in cache, be silent + set(LOG4CPP_FIND_QUIETLY TRUE) +endif() + +if(LOG4CPP_ROOT) + set(LOG4CPP_ROOT_USER_PROVIDED ${LOG4CPP_ROOT}) +else() + set(LOG4CPP_ROOT_USER_PROVIDED /usr) +endif() +if(DEFINED ENV{LOG4CPP_ROOT}) + set(LOG4CPP_ROOT_USER_PROVIDED + ${LOG4CPP_ROOT_USER_PROVIDED} + $ENV{LOG4CPP_ROOT} + ) +endif() +set(LOG4CPP_ROOT_USER_PROVIDED + ${LOG4CPP_ROOT_USER_PROVIDED} + ${CMAKE_INSTALL_PREFIX} +) + +find_path(LOG4CPP_INCLUDE_DIR log4cpp/Category.hh + ${LOG4CPP_ROOT_USER_PROVIDED}/include + /usr/include + /usr/local/include + /opt/local/include + ${PC_LOG4CPP_INCLUDEDIR} +) + +if(LOG4CPP_INCLUDE_DIR) + file(STRINGS ${LOG4CPP_INCLUDE_DIR}/log4cpp/Priority.hh _log4cpp_Priority) + set(_log4cpp_cxx17 TRUE) + foreach(_loop_var IN LISTS _log4cpp_Priority) + string(STRIP "${_loop_var}" _file_line) + if("throw(std::invalid_argument);" STREQUAL "${_file_line}") + set(_log4cpp_cxx17 FALSE) + endif() + endforeach() + if(${_log4cpp_cxx17}) + set(LOG4CPP_READY_FOR_CXX17 TRUE) + endif() +endif() + +set(LOG4CPP_NAMES log4cpp) +find_library(LOG4CPP_LIBRARY + NAMES ${LOG4CPP_NAMES} + HINTS ${PC_LOG4CPP_LIBDIR} + PATHS ${LOG4CPP_ROOT_USER_PROVIDED}/lib + ${LOG4CPP_ROOT_USER_PROVIDED}/lib64 + ${GNSSSDR_LIB_PATHS} +) + +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() + 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() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LOG4CPP DEFAULT_MSG LOG4CPP_INCLUDE_DIRS LOG4CPP_LIBRARIES) + +set_package_properties(LOG4CPP PROPERTIES + URL "https://log4cpp.sourceforge.net/" +) + +if(LOG4CPP_FOUND AND PC_LOG4CPP_VERSION) + set(LOG4CPP_VERSION ${PC_LOG4CPP_VERSION}) +endif() + +if(LOG4CPP_FOUND AND LOG4CPP_VERSION) + if(LOG4CPP_READY_FOR_CXX17) + set_package_properties(LOG4CPP PROPERTIES + DESCRIPTION "Library of C++ classes for flexible logging (found: v${LOG4CPP_VERSION}, C++17-ready)" + ) + else() + set_package_properties(LOG4CPP PROPERTIES + DESCRIPTION "Library of C++ classes for flexible logging (found: v${LOG4CPP_VERSION})" + ) + endif() +else() + set_package_properties(LOG4CPP PROPERTIES + DESCRIPTION "Library of C++ classes for flexible logging" + ) +endif() + +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) diff --git a/cmake/Modules/FindLibOsmoSDR.cmake b/cmake/Modules/FindLibOsmoSDR.cmake deleted file mode 100644 index 3733b7321..000000000 --- a/cmake/Modules/FindLibOsmoSDR.cmake +++ /dev/null @@ -1,41 +0,0 @@ -# Tries to find libosmosdr. -# -# Usage of this module as follows: -# -# find_package(LibOsmoSDR) -# -# -# Variables defined by this module: -# -# LIBOSMOSDR_FOUND System has libosmosdr libs/headers -# LIBOSMOSDR_LIBRARIES The libosmosdr libraries -# LIBOSMOSDR_INCLUDE_DIR The location of libosmosdr headers - - -if(NOT LIBOSMOSDR_FOUND) - pkg_check_modules (LIBOSMOSDR_PKG libosmosdr) - find_path(LIBOSMOSDR_INCLUDE_DIR NAMES osmosdr.h - PATHS - ${LIBOSMOSDR_PKG_INCLUDE_DIRS} - /usr/include - /usr/local/include - ) - - find_library(LIBOSMOSDR_LIBRARIES NAMES osmosdr - PATHS - ${LIBOSMOSDR_PKG_LIBRARY_DIRS} - /usr/lib - /usr/local/lib - ) - - 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) - -mark_as_advanced(LIBOSMOSDR_INCLUDE_DIR LIBOSMOSDR_LIBRARIES) - -endif(NOT LIBOSMOSDR_FOUND) diff --git a/cmake/Modules/FindMATHJAX2.cmake b/cmake/Modules/FindMATHJAX2.cmake new file mode 100644 index 000000000..cbd5d0835 --- /dev/null +++ b/cmake/Modules/FindMATHJAX2.cmake @@ -0,0 +1,49 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause +# +# +# Find MathJax package (version 2). +# +# A hint can be provided by defining MATHJAX2_ROOT +# (will succeed if ${MATHJAX2_ROOT}/MathJax.js is found). +# +# Alternatively, a path can be provided in MATHJAX2_USE_ROOT +# so that ${MATHJAX2_USE_ROOT}/MathJax.js is used without +# checking its existence. +# This path could be a URL, an absolute local path or +# a path relative to the generated HTML folder. +# +# Note that version 2 and 3 are incompatible +# and doxygen requires version 2. +# See: https://github.com/doxygen/doxygen/issues/7346 +# +# Defined variables: +# - MATHJAX2_FOUND - True if MathJax found +# - MATHJAX2_JS_PATH - Path to MathJax.js file +# - MATHJAX2_PATH - Path to the MathJax root directory + + +if(DEFINED MATHJAX2_USE_ROOT) + set(MATHJAX2_FOUND TRUE) + set(MATHJAX2_PATH "${MATHJAX2_USE_ROOT}/") + set(MATHJAX2_JS_PATH "${MATHJAX2_USE_ROOT}/MathJax.js") +else() + find_file(MATHJAX2_JS_PATH + NAMES + MathJax.js + PATHS + "${MATHJAX2_ROOT}" + /usr/share/mathjax2/ + /usr/share/javascript/mathjax/ + /usr/local/share/javascript/mathjax/ + ) + + get_filename_component(MATHJAX2_PATH ${MATHJAX2_JS_PATH} DIRECTORY) +endif() +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(MATHJAX2 DEFAULT_MSG MATHJAX2_JS_PATH) + +mark_as_advanced(MATHJAX2_JS_PATH) diff --git a/cmake/Modules/FindMATIO.cmake b/cmake/Modules/FindMATIO.cmake new file mode 100644 index 000000000..73f8d053d --- /dev/null +++ b/cmake/Modules/FindMATIO.cmake @@ -0,0 +1,168 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# FindMATIO +# +# Try to find MATIO library +# +# Once done this will define: +# +# 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 +# +# 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 +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER 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. +#============================================================================= +# + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT MATIO_ROOT) + set(MATIO_ROOT_USER_DEFINED /usr) +else() + set(MATIO_ROOT_USER_DEFINED ${MATIO_ROOT}) +endif() +if(DEFINED ENV{MATIO_ROOT}) + set(MATIO_ROOT_USER_DEFINED + ${MATIO_ROOT_USER_DEFINED} + $ENV{MATIO_ROOT} + ) +endif() + +# Look for the header file. +find_path(MATIO_INCLUDE_DIR + NAMES matio.h + PATHS + ${MATIO_ROOT_USER_DEFINED}/include + /usr/include + /usr/local/include + /opt/local/include + ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include + DOC "The MATIO include directory" +) + +# Look for the library. +find_library(MATIO_LIBRARY + NAMES matio libmatio + PATHS + ${MATIO_ROOT_USER_DEFINED}/lib + ${MATIO_ROOT_USER_DEFINED}/lib64 + ${GNSSSDR_LIB_PATHS} + ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib + DOC "The MATIO library" +) + +if(MATIO_INCLUDE_DIR) + # --------------------------------------------------- + # 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) + + # 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) + # 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() + + unset(_matio_HEADER_CONTENTS) + 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 +# 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) + +if(MATIO_FOUND) + set(MATIO_LIBRARIES ${MATIO_LIBRARY}) + set(MATIO_INCLUDE_DIRS ${MATIO_INCLUDE_DIR}) +else() + set(MATIO_LIBRARIES) + set(MATIO_INCLUDE_DIRS) +endif() + +if(MATIO_FOUND AND MATIO_VERSION_STRING) + set_package_properties(MATIO PROPERTIES + DESCRIPTION "MATLAB MAT File I/O Library (found: v${MATIO_VERSION_STRING})" + ) +else() + set_package_properties(MATIO PROPERTIES + DESCRIPTION "MATLAB MAT File I/O Library" + ) +endif() + +set_package_properties(MATIO PROPERTIES + URL "https://github.com/tbeu/matio" +) + +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}" + IMPORTED_IMPLIB "${MATIO_LIBRARY}" + ) +endif() diff --git a/cmake/Modules/FindOPENCL.cmake b/cmake/Modules/FindOPENCL.cmake new file mode 100644 index 000000000..044251c2e --- /dev/null +++ b/cmake/Modules/FindOPENCL.cmake @@ -0,0 +1,210 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# +# - Try to find OpenCL +# This module tries to find an OpenCL implementation on your system. It supports +# AMD / ATI, Apple and NVIDIA implementations. +# +# 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 + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +include(FindPackageHandleStandardArgs) + +function(_FIND_OPENCL_VERSION) + include(CheckSymbolExists) + include(CMakePushCheckState) + set(CMAKE_REQUIRED_QUIET ${OPENCL_FIND_QUIETLY}) + + cmake_push_check_state() + foreach(VERSION "2_2" "2_1" "2_0" "1_2" "1_1" "1_0") + set(CMAKE_REQUIRED_INCLUDES "${OPENCL_INCLUDE_DIR}") + + if(APPLE) + check_symbol_exists( + CL_VERSION_${VERSION} + "${OPENCL_INCLUDE_DIR}/Headers/cl.h" + OPENCL_VERSION_${VERSION} + ) + else() + check_symbol_exists( + CL_VERSION_${VERSION} + "${OPENCL_INCLUDE_DIR}/CL/cl.h" + OPENCL_VERSION_${VERSION} + ) + endif() + + if(OPENCL_VERSION_${VERSION}) + string(REPLACE "_" "." VERSION "${VERSION}") + set(OPENCL_VERSION_STRING ${VERSION} PARENT_SCOPE) + string(REGEX MATCHALL "[0-9]+" version_components "${VERSION}") + list(GET version_components 0 major_version) + list(GET version_components 1 minor_version) + set(OPENCL_VERSION_MAJOR ${major_version} PARENT_SCOPE) + set(OPENCL_VERSION_MINOR ${minor_version} PARENT_SCOPE) + break() + endif() + endforeach() + cmake_pop_check_state() +endfunction() + +find_path(OPENCL_INCLUDE_DIR + NAMES + CL/cl.h OpenCL/cl.h + PATHS + ENV "PROGRAMFILES(X86)" + ENV AMDAPPSDKROOT + ENV INTELOCLSDKROOT + ENV NVSDKCOMPUTE_ROOT + ENV CUDA_PATH + ENV ATISTREAMSDKROOT + ENV OCL_ROOT + /usr/local/cuda/include + PATH_SUFFIXES + include + OpenCL/common/inc + "AMD APP/include" +) + +find_path(_OPENCL_CPP_INCLUDE_DIRS + NAMES + CL/cl.hpp OpenCL/cl.hpp + PATHS + ENV "PROGRAMFILES(X86)" + ENV AMDAPPSDKROOT + ENV INTELOCLSDKROOT + ENV NVSDKCOMPUTE_ROOT + ENV CUDA_PATH + ENV ATISTREAMSDKROOT + ENV OCL_ROOT + /usr/local/cuda/include + PATH_SUFFIXES + include + OpenCL/common/inc + "AMD APP/include" +) + +set(OPENCL_INCLUDE_DIRS ${OPENCL_INCLUDE_DIR}) +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() + +_find_opencl_version() + +if(WIN32) + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + find_library(OPENCL_LIBRARY + NAMES OpenCL + PATHS + ENV "PROGRAMFILES(X86)" + ENV AMDAPPSDKROOT + ENV INTELOCLSDKROOT + ENV CUDA_PATH + ENV NVSDKCOMPUTE_ROOT + ENV ATISTREAMSDKROOT + ENV OCL_ROOT + PATH_SUFFIXES + "AMD APP/lib/x86" + lib/x86 + lib/Win32 + OpenCL/common/lib/Win32 + ) + elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) + find_library(OPENCL_LIBRARY + NAMES OpenCL + PATHS + ENV "PROGRAMFILES(X86)" + ENV AMDAPPSDKROOT + ENV INTELOCLSDKROOT + ENV CUDA_PATH + ENV NVSDKCOMPUTE_ROOT + ENV ATISTREAMSDKROOT + ENV OCL_ROOT + PATH_SUFFIXES + "AMD APP/lib/x86_64" + lib/x86_64 + lib/x64 + OpenCL/common/lib/x64 + ) + endif() +else() + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + find_library(OPENCL_LIBRARY + NAMES OpenCL + PATHS + ENV AMDAPPSDKROOT + ENV CUDA_PATH + ENV LD_LIBRARY_PATH + PATH_SUFFIXES + lib/x86 + lib + ) + elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) + find_library(OPENCL_LIBRARY + NAMES OpenCL + PATHS + ENV AMDAPPSDKROOT + ENV CUDA_PATH + ENV LD_LIBRARY_PATH + PATH_SUFFIXES + lib/x86_64 + lib/x64 + lib + lib64 + ) + endif() +endif() + +set(OPENCL_LIBRARIES ${OPENCL_LIBRARY}) + +find_package_handle_standard_args(OPENCL DEFAULT_MSG OPENCL_LIBRARIES OPENCL_INCLUDE_DIRS) + +mark_as_advanced( + OPENCL_INCLUDE_DIRS + OPENCL_LIBRARIES +) + +set_package_properties(OPENCL PROPERTIES + URL "https://www.khronos.org/opencl/" +) + +if(OPENCL_FOUND AND OPENCL_VERSION_STRING) + set_package_properties(OPENCL PROPERTIES + DESCRIPTION "Library for parallel programming (found: v${OPENCL_VERSION_STRING})" + ) +else() + set_package_properties(OPENCL PROPERTIES + DESCRIPTION "Library for parallel programming" + ) +endif() + +if(OPENCL_FOUND AND NOT TARGET OpenCL::OpenCL) + if(OPENCL_LIBRARY MATCHES "/([^/]+)\\.framework$") + add_library(OpenCL::OpenCL INTERFACE IMPORTED) + set_target_properties(OpenCL::OpenCL PROPERTIES + INTERFACE_LINK_LIBRARIES "${OPENCL_LIBRARY}" + ) + else() + add_library(OpenCL::OpenCL UNKNOWN IMPORTED) + set_target_properties(OpenCL::OpenCL PROPERTIES + IMPORTED_LOCATION "${OPENCL_LIBRARY}" + ) + endif() + set_target_properties(OpenCL::OpenCL PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${OPENCL_INCLUDE_DIRS}" + ) +endif() diff --git a/cmake/Modules/FindORC.cmake b/cmake/Modules/FindORC.cmake index 195e8ffe5..600d0ac35 100644 --- a/cmake/Modules/FindORC.cmake +++ b/cmake/Modules/FindORC.cmake @@ -1,33 +1,142 @@ -FIND_PACKAGE(PkgConfig) -PKG_CHECK_MODULES(PC_ORC "orc-0.4 > 0.4.11") +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause -FIND_PROGRAM(ORCC_EXECUTABLE orcc - HINTS ${PC_ORC_TOOLSDIR} - PATHS ${ORC_ROOT}/bin ${CMAKE_INSTALL_PREFIX}/bin) +if(DEFINED __INCLUDED_GNSSSDR_CMAKE_FIND_ORC) + return() +endif() +set(__INCLUDED_GNSSSDR_CMAKE_FIND_ORC TRUE) -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) +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() -FIND_PATH(ORC_LIBRARY_DIR NAMES ${CMAKE_SHARED_LIBRARY_PREFIX}orc-0.4${CMAKE_SHARED_LIBRARY_SUFFIX} - HINTS ${PC_ORC_LIBDIR} - PATHS ${ORC_ROOT}/lib${LIB_SUFFIX} ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}) +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() -FIND_LIBRARY(ORC_LIB orc-0.4 - HINTS ${PC_ORC_LIBRARY_DIRS} - PATHS ${ORC_ROOT}/lib${LIB_SUFFIX} ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}) +pkg_check_modules(PC_ORC "orc-0.4 > 0.4.22") -LIST(APPEND ORC_LIBRARY - ${ORC_LIB} +if(NOT ORC_ROOT) + set(ORC_ROOT_USER_PROVIDED /usr/local) +else() + set(ORC_ROOT_USER_PROVIDED ${ORC_ROOT}) +endif() +if(DEFINED ENV{ORC_ROOT}) + set(ORC_ROOT_USER_PROVIDED + ${ORC_ROOT_USER_PROVIDED} + $ENV{ORC_ROOT} + ) +endif() +set(ORC_ROOT_USER_PROVIDED + ${ORC_ROOT_USER_PROVIDED} + ${CMAKE_INSTALL_PREFIX} +) +if(PC_ORC_TOOLSDIR) + set(ORC_ROOT_USER_PROVIDED + ${ORC_ROOT_USER_PROVIDED} + ${PC_ORC_TOOLSDIR} + ) +endif() + +find_program(ORCC_EXECUTABLE orcc + HINTS ${ORC_ROOT_USER_PROVIDED}/bin + PATHS /usr/bin + /usr/local/bin + /opt/local/bin ) +find_path(ORC_INCLUDE_DIR + NAMES orc/orc.h + HINTS ${PC_ORC_INCLUDEDIR} + PATHS ${ORC_ROOT_USER_PROVIDED}/include + /usr/include + /usr/local/include + /opt/local/include + PATH_SUFFIXES 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} + PATHS ${ORC_ROOT_USER_PROVIDED}/lib + ${ORC_ROOT_USER_PROVIDED}/lib64 + ${CMAKE_INSTALL_PREFIX}/lib + ${CMAKE_INSTALL_PREFIX}/lib64 + ${GNSSSDR_LIB_PATHS} +) -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_USER_PROVIDED}/lib + ${ORC_ROOT_USER_PROVIDED}/lib64 + ${CMAKE_INSTALL_PREFIX}/lib + ${CMAKE_INSTALL_PREFIX}/lib64 + ${GNSSSDR_LIB_PATHS} +) -mark_as_advanced(ORC_INCLUDE_DIR ORC_LIBRARY ORCC_EXECUTABLE) \ No newline at end of file +find_library(ORC_LIBRARY_STATIC ${CMAKE_STATIC_LIBRARY_PREFIX}orc-0.4${CMAKE_STATIC_LIBRARY_SUFFIX} + HINTS ${PC_ORC_LIBRARY_DIRS} + PATHS ${ORC_ROOT}/lib + ${ORC_ROOT}/lib64 + ${CMAKE_INSTALL_PREFIX}/lib + ${CMAKE_INSTALL_PREFIX}/lib64 + ${ORC_ROOT_USER_PROVIDED}/lib + ${ORC_ROOT_USER_PROVIDED}/lib64 + /usr/lib + /usr/lib64 + /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/lib/riscv64-linux-gnu + /usr/lib/loongarch64-linux-gnu + /usr/local/lib + /usr/local/lib64 + /opt/local/lib +) + +if(PC_ORC_VERSION) + set(ORC_VERSION ${PC_ORC_VERSION}) +endif() + +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}) +set(ORC_LIBRARIES_STATIC ${ORC_LIBRARY_STATIC}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ORC "orc files" ORC_LIBRARY ORC_INCLUDE_DIR ORCC_EXECUTABLE) + +set_package_properties(ORC PROPERTIES + URL "https://gstreamer.freedesktop.org/modules/orc.html" +) + +if(ORC_FOUND AND ORC_VERSION) + set_package_properties(ORC PROPERTIES + DESCRIPTION "The Optimized Inner Loops Runtime Compiler (found: v${ORC_VERSION})" + ) +else() + set_package_properties(ORC PROPERTIES + DESCRIPTION "The Optimized Inner Loops Runtime Compiler" + ) +endif() + +mark_as_advanced(ORC_INCLUDE_DIR ORC_LIBRARY ORCC_EXECUTABLE) diff --git a/cmake/Modules/FindOpenBLAS.cmake b/cmake/Modules/FindOpenBLAS.cmake deleted file mode 100644 index d8751b216..000000000 --- a/cmake/Modules/FindOpenBLAS.cmake +++ /dev/null @@ -1,25 +0,0 @@ -# - Try to find OpenBLAS library (not headers!) -# -# 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}) - -IF (OPENBLAS) - SET(OPENBLAS_FOUND ON) - MESSAGE(STATUS "Found OpenBLAS") -ENDIF (OPENBLAS) - -MARK_AS_ADVANCED(OPENBLAS) diff --git a/cmake/Modules/FindOpenCL.cmake b/cmake/Modules/FindOpenCL.cmake deleted file mode 100644 index 1229090a9..000000000 --- a/cmake/Modules/FindOpenCL.cmake +++ /dev/null @@ -1,99 +0,0 @@ -# -# 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 ) diff --git a/cmake/Modules/FindPCAP.cmake b/cmake/Modules/FindPCAP.cmake new file mode 100644 index 000000000..2a3db3aff --- /dev/null +++ b/cmake/Modules/FindPCAP.cmake @@ -0,0 +1,161 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2006 Frederic Heem, +# SPDX-License-Identifier: BSD-3-Clause + +# - Find pcap +# Find the PCAP includes and library +# https://www.tcpdump.org/ +# +# The environment variable PCAPDIR allows to specify 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(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(PC_PCAP libpcap QUIET) + +if(NOT PCAP_ROOT) + set(PCAP_ROOT_USER_PROVIDED /usr) +else() + set(PCAP_ROOT_USER_PROVIDED ${PCAP_ROOT}) +endif() +if(DEFINED ENV{PCAP_ROOT}) + set(PCAP_ROOT_USER_PROVIDED + ${PCAP_ROOT_USER_PROVIDED} + $ENV{PCAP_ROOT} + ) +endif() +if(DEFINED ENV{PCAPDIR}) + set(PCAP_ROOT_USER_PROVIDED + ${PCAP_ROOT_USER_PROVIDED} + $ENV{PCAPDIR}) +endif() + +if(DEFINED ENV{PCAPDIR}) + find_path(PCAP_INCLUDE_DIR + NAMES + pcap/pcap.h + pcap.h + HINTS + ${PC_PCAP_INCLUDEDIR} + PATHS + ${PCAP_ROOT_USER_PROVIDED} + ${PCAP_ROOT_USER_PROVIDED}/include + NO_DEFAULT_PATH + ) + find_library(PCAP_LIBRARY + NAMES + pcap + HINTS + ${PC_PCAP_LIBDIR} + PATHS + ${PCAP_ROOT_USER_PROVIDED} + ${PCAP_ROOT_USER_PROVIDED}/lib + NO_DEFAULT_PATH + ) +else() + find_path(PCAP_INCLUDE_DIR + NAMES + pcap/pcap.h + pcap.h + HINTS + ${PC_PCAP_INCLUDEDIR} + PATHS + ${PCAP_ROOT_USER_PROVIDED}/include + /usr/include + /usr/local/include + /opt/local/include + ) + find_library(PCAP_LIBRARY + NAMES + pcap + HINTS + ${PC_PCAP_LIBDIR} + PATHS + ${PCAP_ROOT_USER_PROVIDED}/lib + ${GNSSSDR_LIB_PATHS} + ) +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(STATUS "Pcap include dirs cannot be found.") +endif() + +if(PCAP_LIBRARIES) + message(STATUS "Pcap library set to ${PCAP_LIBRARIES}") +else() + message(STATUS "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 PC_PCAP_VERSION) + set(PCAP_VERSION ${PC_PCAP_VERSION}) +endif() + +set_package_properties(PCAP PROPERTIES + URL "https://www.tcpdump.org" +) + +if(PCAP_FOUND AND PCAP_VERSION) + set_package_properties(PCAP PROPERTIES + DESCRIPTION "A portable C/C++ library for network traffic capture (found: v${PCAP_VERSION})" + ) +else() + set_package_properties(PCAP PROPERTIES + DESCRIPTION "A portable C/C++ library for network traffic capture" + ) +endif() + +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) diff --git a/cmake/Modules/FindPUGIXML.cmake b/cmake/Modules/FindPUGIXML.cmake new file mode 100644 index 000000000..4ff6419cc --- /dev/null +++ b/cmake/Modules/FindPUGIXML.cmake @@ -0,0 +1,120 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# 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 +# + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(PC_PUGIXML pugixml QUIET) + +if(NOT PUGIXML_ROOT) + set(PUGIXML_ROOT_USER_DEFINED /usr) +else() + set(PUGIXML_ROOT_USER_DEFINED ${PUGIXML_ROOT}) +endif() +if(DEFINED ENV{PUGIXML_ROOT}) + set(PUGIXML_ROOT_USER_DEFINED + ${PUGIXML_ROOT_USER_DEFINED} + $ENV{PUGIXML_ROOT} + ) +endif() +if(PUGIXML_HOME) + set(PUGIXML_ROOT_USER_DEFINED + ${PUGIXML_ROOT_USER_DEFINED} + ${PUGIXML_HOME} + ) +endif() + +find_path(PUGIXML_INCLUDE_DIR + NAMES pugixml.hpp + HINTS ${PC_PUGIXML_INCLUDEDIR} + PATHS ${PUGIXML_ROOT_USER_DEFINED}/include + ${PUGIXML_ROOT_USER_DEFINED}/include/pugixml-${PC_PUGIXML_VERSION} + ${PUGIXML_ROOT_USER_DEFINED}/include/pugixml-1.9 + /usr/include + /usr/local/include + /usr/local/include/pugixml-${PC_PUGIXML_VERSION} + /usr/local/include/pugixml-1.9 + /opt/local/include +) + +find_library(PUGIXML_LIBRARY + NAMES pugixml + HINTS ${PC_PUGIXML_LIBDIR} + PATHS ${PUGIXML_ROOT_USER_DEFINED}/lib + ${PUGIXML_ROOT_USER_DEFINED}/lib64 + ${PUGIXML_ROOT_USER_DEFINED}/lib/pugixml-${PC_PUGIXML_VERSION} + ${PUGIXML_ROOT_USER_DEFINED}/lib64/pugixml-${PC_PUGIXML_VERSION} + ${PUGIXML_ROOT_USER_DEFINED}}/lib/pugixml-1.9 + ${PUGIXML_ROOT_USER_DEFINED}/lib64/pugixml-1.9 + ${GNSSSDR_LIB_PATHS} + /usr/local/lib/pugixml-${PC_PUGIXML_VERSION} + /usr/local/lib/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() + if(PC_PUGIXML_VERSION) + set(PUGIXML_VERSION ${PC_PUGIXML_VERSION}) + endif() +else() + message(STATUS "PugiXML not found.") +endif() + +set_package_properties(PUGIXML PROPERTIES + URL "https://pugixml.org/" +) + +if(PUGIXML_FOUND AND PUGIXML_VERSION) + set_package_properties(PUGIXML PROPERTIES + DESCRIPTION "Light-weight, simple and fast XML parser for C++ (found: v${PUGIXML_VERSION})" + ) +else() + set_package_properties(PUGIXML PROPERTIES + DESCRIPTION "Light-weight, simple and fast XML parser for C++" + ) +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() diff --git a/cmake/Modules/FindTELEORBIT.cmake b/cmake/Modules/FindTELEORBIT.cmake new file mode 100644 index 000000000..db888984a --- /dev/null +++ b/cmake/Modules/FindTELEORBIT.cmake @@ -0,0 +1,101 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# +# Provides the following imported target: +# Gnuradio::teleorbit +# + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(PC_TELEORBIT teleorbit QUIET) + +if(NOT TELEORBIT_ROOT) + set(TELEORBIT_ROOT_USER_DEFINED /usr/local) +else() + set(TELEORBIT_ROOT_USER_DEFINED ${TELEORBIT_ROOT}) +endif() +if(DEFINED ENV{TELEORBIT_ROOT}) + set(TELEORBIT_ROOT_USER_DEFINED + ${TELEORBIT_ROOT_USER_DEFINED} + $ENV{TELEORBIT_ROOT} + ) +endif() +set(TELEORBIT_ROOT_USER_DEFINED + ${TELEORBIT_ROOT_USER_DEFINED} + ${CMAKE_INSTALL_PREFIX} +) + +find_path(TELEORBIT_INCLUDE_DIRS + NAMES teleorbit/api.h + HINTS ${PC_TELEORBIT_INCLUDEDIR} + PATH_SUFFIXES gnuradio + PATHS ${TELEORBIT_ROOT_USER_DEFINED}/include + /usr/include + /usr/local/include + /opt/local/include +) + +find_library(TELEORBIT_LIBRARIES + NAMES gnuradio-teleorbit + HINTS ${PC_TELEORBIT_LIBDIR} + PATHS ${TELEORBIT_ROOT_USER_DEFINED}/lib + ${TELEORBIT_ROOT_USER_DEFINED}/lib64 + /usr/lib + /usr/lib64 + /usr/local/lib + /usr/local/lib64 + /opt/local/lib +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(TELEORBIT DEFAULT_MSG TELEORBIT_LIBRARIES TELEORBIT_INCLUDE_DIRS) + +if(PC_TELEORBIT_VERSION) + set(TELEORBIT_VERSION ${PC_TELEORBIT_VERSION}) +endif() + +if(NOT TELEORBIT_VERSION) + set(OLD_PACKAGE_VERSION ${PACKAGE_VERSION}) + unset(PACKAGE_VERSION) + list(GET TELEORBIT_LIBRARIES 0 FIRST_DIR) + get_filename_component(TELEORBIT_LIBRARIES_DIR ${FIRST_DIR} DIRECTORY) + if(EXISTS ${TELEORBIT_LIBRARIES_DIR}/cmake/teleorbit/TeleorbitConfigVersion.cmake) + include(${TELEORBIT_LIBRARIES_DIR}/cmake/teleorbit/TeleorbitConfigVersion.cmake) + endif() + if(PACKAGE_VERSION) + set(TELEORBIT_VERSION ${PACKAGE_VERSION}) + endif() + set(PACKAGE_VERSION ${OLD_PACKAGE_VERSION}) +endif() + +if(TELEORBIT_FOUND AND TELEORBIT_VERSION) + set_package_properties(TELEORBIT PROPERTIES + DESCRIPTION "The Teleorbit's Flexiband GNU Radio block (found: v${TELEORBIT_VERSION})" + ) +else() + set_package_properties(TELEORBIT PROPERTIES + DESCRIPTION "The Teleorbit's Flexiband GNU Radio block." + ) +endif() + +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) diff --git a/cmake/Modules/FindTeleorbit.cmake b/cmake/Modules/FindTeleorbit.cmake deleted file mode 100644 index 0d2d3c505..000000000 --- a/cmake/Modules/FindTeleorbit.cmake +++ /dev/null @@ -1,29 +0,0 @@ -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(PC_TELEORBIT teleorbit) - -FIND_PATH( - TELEORBIT_INCLUDE_DIRS - NAMES teleorbit/api.h - HINTS $ENV{TELEORBIT_DIR}/include - ${PC_TELEORBIT_INCLUDEDIR} - PATHS ${CMAKE_INSTALL_PREFIX}/include - /usr/local/include - /usr/include -) - -FIND_LIBRARY( - TELEORBIT_LIBRARIES - NAMES gnuradio-teleorbit - HINTS $ENV{TELEORBIT_DIR}/lib - ${PC_TELEORBIT_LIBDIR} - PATHS ${CMAKE_INSTALL_PREFIX}/lib - ${CMAKE_INSTALL_PREFIX}/lib64 - /usr/local/lib - /usr/local/lib64 - /usr/lib - /usr/lib64 -) - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(TELEORBIT DEFAULT_MSG TELEORBIT_LIBRARIES TELEORBIT_INCLUDE_DIRS) -MARK_AS_ADVANCED(TELEORBIT_LIBRARIES TELEORBIT_INCLUDE_DIRS) diff --git a/cmake/Modules/FindUHD.cmake b/cmake/Modules/FindUHD.cmake index d5a12713a..d30313535 100644 --- a/cmake/Modules/FindUHD.cmake +++ b/cmake/Modules/FindUHD.cmake @@ -1,30 +1,114 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# +# Provides the following imported target: +# Uhd::uhd +# + ######################################################################## # Find the library for the USRP Hardware Driver ######################################################################## +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(PC_UHD uhd) +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() -FIND_PATH( - UHD_INCLUDE_DIRS +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(PC_UHD uhd) + +if(NOT UHD_ROOT) + set(UHD_ROOT_USER_PROVIDED /usr/local) +else() + set(UHD_ROOT_USER_PROVIDED ${UHD_ROOT}) +endif() +if(GNURADIO_INSTALL_PREFIX) + set(UHD_ROOT_USER_PROVIDED + ${UHD_ROOT_USER_PROVIDED} + ${GNURADIO_INSTALL_PREFIX} + ) +endif() +if(DEFINED ENV{UHD_ROOT}) + set(UHD_ROOT_USER_PROVIDED + ${UHD_ROOT_USER_PROVIDED} + $ENV{UHD_ROOT} + ) +endif() +if(DEFINED ENV{UHD_DIR}) + set(UHD_ROOT_USER_PROVIDED + ${UHD_ROOT_USER_PROVIDED} + $ENV{UHD_DIR} + ) +endif() + +find_path(UHD_INCLUDE_DIRS NAMES uhd/config.hpp - HINTS $ENV{UHD_DIR}/include - ${PC_UHD_INCLUDEDIR} - PATHS /usr/local/include + HINTS ${PC_UHD_INCLUDEDIR} + PATHS ${UHD_ROOT_USER_PROVIDED}/include /usr/include - ${GNURADIO_INSTALL_PREFIX}/include + /usr/local/include + /opt/local/include ) -FIND_LIBRARY( - UHD_LIBRARIES +find_library(UHD_LIBRARIES NAMES uhd - HINTS $ENV{UHD_DIR}/lib - ${PC_UHD_LIBDIR} - PATHS /usr/local/lib - /usr/lib - ${GNURADIO_INSTALL_PREFIX}/lib + HINTS ${PC_UHD_LIBDIR} + PATHS ${UHD_ROOT_USER_PROVIDED}/lib + ${UHD_ROOT_USER_PROVIDED}/lib64 + ${GNSSSDR_LIB_PATHS} ) -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(PC_UHD_VERSION) + set(UHD_VERSION ${PC_UHD_VERSION}) +endif() +if(NOT PC_UHD_VERSION) + set(OLD_PACKAGE_VERSION ${PACKAGE_VERSION}) + unset(PACKAGE_VERSION) + list(GET UHD_LIBRARIES 0 FIRST_DIR) + get_filename_component(UHD_LIBRARIES_DIR ${FIRST_DIR} DIRECTORY) + if(EXISTS ${UHD_LIBRARIES_DIR}/cmake/uhd/UHDConfigVersion.cmake) + include(${UHD_LIBRARIES_DIR}/cmake/uhd/UHDConfigVersion.cmake) + endif() + if(PACKAGE_VERSION) + set(UHD_VERSION ${PACKAGE_VERSION}) + endif() + set(PACKAGE_VERSION ${OLD_PACKAGE_VERSION}) +endif() + +set_package_properties(UHD PROPERTIES + URL "https://www.ettus.com/sdr-software/uhd-usrp-hardware-driver/" +) + +if(UHD_FOUND AND UHD_VERSION) + set_package_properties(UHD PROPERTIES + DESCRIPTION "USRP Hardware Driver (found: v${UHD_VERSION})" + ) +else() + set_package_properties(UHD PROPERTIES + DESCRIPTION "USRP Hardware Driver" + ) +endif() + +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) diff --git a/cmake/Modules/FindVOLK.cmake b/cmake/Modules/FindVOLK.cmake new file mode 100644 index 000000000..2247f8247 --- /dev/null +++ b/cmake/Modules/FindVOLK.cmake @@ -0,0 +1,124 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# +# Provides the following imported target: +# Volk::volk +# + +######################################################################## +# Find VOLK (Vector-Optimized Library of Kernels) +######################################################################## +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(PC_VOLK volk QUIET) + +if(NOT VOLK_ROOT) + set(VOLK_ROOT_USER_PROVIDED /usr) +else() + set(VOLK_ROOT_USER_PROVIDED ${VOLK_ROOT}) +endif() +if(DEFINED ENV{VOLK_ROOT}) + set(VOLK_ROOT_USER_PROVIDED + ${VOLK_ROOT_USER_PROVIDED} + $ENV{VOLK_ROOT} + ) +endif() +if(DEFINED ENV{VOLK_DIR}) + set(VOLK_ROOT_USER_PROVIDED + ${VOLK_ROOT_USER_PROVIDED} + $ENV{VOLK_DIR} + ) +endif() +set(VOLK_ROOT_USER_PROVIDED + ${VOLK_ROOT_USER_PROVIDED} + ${CMAKE_INSTALL_PREFIX} +) + +find_path(VOLK_INCLUDE_DIRS + NAMES volk/volk.h + HINTS ${PC_VOLK_INCLUDEDIR} + PATHS ${VOLK_ROOT_USER_PROVIDED}/include + /usr/include + /usr/local/include + /opt/local/include +) + +find_library(VOLK_LIBRARIES + NAMES volk + HINTS ${PC_VOLK_LIBDIR} + PATHS ${VOLK_ROOT_USER_PROVIDED}/lib + ${VOLK_ROOT_USER_PROVIDED}/lib64 + ${GNSSSDR_LIB_PATHS} +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(VOLK DEFAULT_MSG VOLK_LIBRARIES VOLK_INCLUDE_DIRS) + +if(PC_VOLK_VERSION) + set(VOLK_VERSION ${PC_VOLK_VERSION}) +endif() + +if(NOT VOLK_VERSION) + set(OLD_PACKAGE_VERSION ${PACKAGE_VERSION}) + unset(PACKAGE_VERSION) + list(GET VOLK_LIBRARIES 0 FIRST_DIR) + get_filename_component(VOLK_LIB_DIR ${FIRST_DIR} DIRECTORY) + if(EXISTS ${VOLK_LIB_DIR}/cmake/volk/VolkConfigVersion.cmake) + set(PACKAGE_FIND_VERSION_MAJOR 0) + include(${VOLK_LIB_DIR}/cmake/volk/VolkConfigVersion.cmake) + endif() + if(PACKAGE_VERSION) + set(VOLK_VERSION ${PACKAGE_VERSION}) + endif() + set(PACKAGE_VERSION ${OLD_PACKAGE_VERSION}) +endif() + +set_package_properties(VOLK PROPERTIES + URL "https://www.libvolk.org" +) + +if(VOLK_FOUND AND VOLK_VERSION) + set_package_properties(VOLK PROPERTIES + DESCRIPTION "Vector-Optimized Library of Kernels (found: v${VOLK_VERSION})" + ) +else() + set_package_properties(VOLK PROPERTIES + DESCRIPTION "Vector-Optimized Library of Kernels" + ) +endif() + +mark_as_advanced(VOLK_LIBRARIES VOLK_INCLUDE_DIRS VOLK_VERSION) + +if(NOT ORC_FOUND) + find_package(ORC QUIET) +endif() +if(ORC_LIBRARIES_STATIC) + set(VOLK_LINK_LIBRARIES ${VOLK_LIBRARIES} ${ORC_LIBRARIES_STATIC}) + set(VOLK_INCLUDE_DIRS ${VOLK_INCLUDE_DIRS} ${ORC_INCLUDE_DIRS}) +else() + set(VOLK_LINK_LIBRARIES ${VOLK_LIBRARIES}) +endif() + +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_LINK_LIBRARIES}" + ) +endif() diff --git a/cmake/Modules/FindVOLKGNSSSDR.cmake b/cmake/Modules/FindVOLKGNSSSDR.cmake new file mode 100644 index 000000000..64ab621d3 --- /dev/null +++ b/cmake/Modules/FindVOLKGNSSSDR.cmake @@ -0,0 +1,107 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# +# Provides the following imported target: +# Volkgnsssdr::volkgnsssdr +# + + +######################################################################## +# Find VOLK (Vector-Optimized Library of Kernels) GNSS-SDR library +######################################################################## +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +pkg_check_modules(PC_VOLK_GNSSSDR QUIET volk_gnsssdr) + +if(NOT VOLKGNSSSDR_ROOT) + set(VOLKGNSSSDR_ROOT_USER_PROVIDED /usr/local) +else() + set(VOLKGNSSSDR_ROOT_USER_PROVIDED ${VOLKGNSSSDR_ROOT}) +endif() +if(DEFINED ENV{VOLKGNSSSDR_ROOT}) + set(VOLKGNSSSDR_ROOT_USER_PROVIDED + ${VOLKGNSSSDR_ROOT_USER_PROVIDED} + $ENV{VOLKGNSSSDR_ROOT} + ) +endif() +if(DEFINED ENV{VOLK_GNSSSDR_DIR}) + set(VOLKGNSSSDR_ROOT_USER_PROVIDED + ${VOLKGNSSSDR_ROOT_USER_PROVIDED} + $ENV{VOLK_GNSSSDR_DIR} + ) +endif() +if(GNURADIO_INSTALL_PREFIX) + set(VOLKGNSSSDR_ROOT_USER_PROVIDED + ${VOLKGNSSSDR_ROOT_USER_PROVIDED} + ${GNURADIO_INSTALL_PREFIX} + ) +endif() + +find_path(VOLK_GNSSSDR_INCLUDE_DIRS + NAMES volk_gnsssdr/volk_gnsssdr.h + HINTS ${PC_VOLK_GNSSSDR_INCLUDEDIR} + PATHS ${VOLKGNSSSDR_ROOT_USER_PROVIDED}/include + /usr/include + /usr/local/include + /opt/local/include +) + +find_library(VOLK_GNSSSDR_LIBRARIES + NAMES volk_gnsssdr + HINTS ${PC_VOLK_GNSSSDR_LIBDIR} + PATHS ${VOLKGNSSSDR_ROOT_USER_PROVIDED}/lib + ${VOLKGNSSSDR_ROOT_USER_PROVIDED}/lib64 + /usr/lib + /usr/lib64 + /usr/local/lib + /usr/local/lib64 + /opt/local/lib +) + +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(PC_VOLK_GNSSSDR_VERSION) + set(VOLKGNSSSDR_VERSION ${PC_VOLK_GNSSSDR_VERSION}) +endif() + +if(VOLKGNSSSDR_FOUND AND VOLKGNSSSDR_VERSION) + set_package_properties(VOLKGNSSSDR PROPERTIES + DESCRIPTION "Vector-Optimized Library of Kernels for GNSS-SDR (found: v${VOLKGNSSSDR_VERSION})." + ) +else() + set_package_properties(VOLKGNSSSDR PROPERTIES + DESCRIPTION "Vector-Optimized Library of Kernels for GNSS-SDR." + ) +endif() + +if(NOT ORC_FOUND) + find_package(ORC QUIET) +endif() +if(ORC_FOUND) + set(VOLK_GNSSSDR_LINK_LIBRARIES ${VOLK_GNSSSDR_LIBRARIES} ${ORC_LIBRARIES}) + set(VOLK_GNSSSDR_INCLUDE_DIRS ${VOLK_GNSSSDR_INCLUDE_DIRS} ${ORC_INCLUDE_DIRS}) +else() + set(VOLK_GNSSSDR_LINK_LIBRARIES ${VOLK_GNSSSDR_LIBRARIES}) +endif() + +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_LINK_LIBRARIES}" + ) +endif() diff --git a/cmake/Modules/FindVolk.cmake b/cmake/Modules/FindVolk.cmake deleted file mode 100644 index a8e82a467..000000000 --- a/cmake/Modules/FindVolk.cmake +++ /dev/null @@ -1,34 +0,0 @@ -######################################################################## -# Find VOLK (Vector-Optimized Library of Kernels) -######################################################################## - -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(PC_VOLK volk) - -FIND_PATH( - VOLK_INCLUDE_DIRS - NAMES volk/volk.h - HINTS $ENV{VOLK_DIR}/include - ${PC_VOLK_INCLUDEDIR} - PATHS /usr/local/include - /usr/include - ${GNURADIO_INSTALL_PREFIX}/include -) - -FIND_LIBRARY( - VOLK_LIBRARIES - NAMES volk - HINTS $ENV{VOLK_DIR}/lib - ${PC_VOLK_LIBDIR} - PATHS /usr/local/lib - /usr/local/lib64 - /usr/lib - /usr/lib64 - ${GNURADIO_INSTALL_PREFIX}/lib -) - -set(VOLK_VERSION ${PC_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) diff --git a/cmake/Modules/FindVolkGnssSdr.cmake b/cmake/Modules/FindVolkGnssSdr.cmake deleted file mode 100644 index b5890966b..000000000 --- a/cmake/Modules/FindVolkGnssSdr.cmake +++ /dev/null @@ -1,32 +0,0 @@ -######################################################################## -# Find VOLK (Vector-Optimized Library of Kernels) GNSS-SDR library -######################################################################## - -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(PC_VOLK_GNSSSDR volk_gnsssdr) - -FIND_PATH( - VOLK_GNSSSDR_INCLUDE_DIRS - NAMES volk_gnsssdr/volk_gnsssdr.h - HINTS $ENV{VOLK_GNSSSDR_DIR}/include - ${PC_VOLK_GNSSSDR_INCLUDEDIR} - PATHS /usr/local/include - /usr/include - ${GNURADIO_INSTALL_PREFIX}/include -) - -FIND_LIBRARY( - VOLK_GNSSSDR_LIBRARIES - NAMES volk_gnsssdr - HINTS $ENV{VOLK_GNSSSDR_DIR}/lib - ${PC_VOLK_GNSSSDR_LIBDIR} - PATHS /usr/local/lib - /usr/local/lib64 - /usr/lib - /usr/lib64 - ${GNURADIO_INSTALL_PREFIX}/lib -) - -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) \ No newline at end of file diff --git a/cmake/Modules/FindZEROMQ.cmake b/cmake/Modules/FindZEROMQ.cmake new file mode 100644 index 000000000..d42a68d2d --- /dev/null +++ b/cmake/Modules/FindZEROMQ.cmake @@ -0,0 +1,61 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2023 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +# +# Provides the following imported target: +# ZeroMQ::ZeroMQ +# + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +if(NOT PKG_CONFIG_FOUND) + include(FindPkgConfig) +endif() + +find_package(PkgConfig) +pkg_check_modules(PC_ZEROMQ "libzmq") + +find_path(ZEROMQ_INCLUDE_DIRS + NAMES zmq.hpp + HINTS ${PC_ZEROMQ_INCLUDE_DIR} ${CMAKE_INSTALL_PREFIX}/include + PATHS /usr/local/include /usr/include /opt/local/include +) + +find_library(ZEROMQ_LIBRARIES + NAMES zmq libzmq.so.5 ${ZEROMQ_LIBRARY_NAME} + HINTS ${PC_ZEROMQ_LIBDIR} ${CMAKE_INSTALL_PREFIX}/lib ${CMAKE_INSTALL_PREFIX}/lib64 + PATHS ${GNSSSDR_LIB_PATHS} +) + +include(FindPackageHandleStandardArgs) +# This is just to detect presence, include files not required +find_package_handle_standard_args(ZEROMQ DEFAULT_MSG ZEROMQ_LIBRARIES) +mark_as_advanced(ZEROMQ_LIBRARIES ZEROMQ_INCLUDE_DIRS) + +set_package_properties(ZEROMQ PROPERTIES URL "https://zeromq.org/") +if(PC_ZEROMQ_VERSION) + set_package_properties(ZEROMQ PROPERTIES + DESCRIPTION "An open-source universal messaging library (found: v${PC_ZEROMQ_VERSION})" + ) +else() + set_package_properties(ZEROMQ PROPERTIES + DESCRIPTION "An open-source universal messaging library" + ) +endif() + +if(ZEROMQ_FOUND AND ZEROMQ_INCLUDE_DIRS AND NOT TARGET ZeroMQ::ZeroMQ) + add_library(ZeroMQ::ZeroMQ INTERFACE IMPORTED) + set_target_properties(ZeroMQ::ZeroMQ PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${ZEROMQ_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES "${ZEROMQ_LIBRARIES}" + ) +endif() \ No newline at end of file diff --git a/cmake/Modules/GnssSdrPackaging.cmake b/cmake/Modules/GnssSdrPackaging.cmake deleted file mode 100644 index bfbb1f4a8..000000000 --- a/cmake/Modules/GnssSdrPackaging.cmake +++ /dev/null @@ -1,323 +0,0 @@ -# Copyright (C) 2012-2014 (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 . -# - - -#if(DEFINED __INCLUDED_GNSS_SDR_PACKAGE_CMAKE) -# return() -#endif() -#set( __INCLUDED_GNSS_SDR_PACKAGE_CMAKE TRUE) - - -#set the cpack generator based on the platform type -if(CPACK_GENERATOR) - #already set by user -elseif(APPLE) - set(PACKAGE_GENERATOR "DragNDrop") - set(PACKAGE_SOURCE_GENERATOR "TGZ;ZIP") -elseif(UNIX) - if(${LINUX_DISTRIBUTION} MATCHES "Debian" OR ${LINUX_DISTRIBUTION} MATCHES "Ubuntu") - set (PACKAGE_GENERATOR "DEB") - endif(${LINUX_DISTRIBUTION} MATCHES "Debian" OR ${LINUX_DISTRIBUTION} MATCHES "Ubuntu") - if(${LINUX_DISTRIBUTION} MATCHES "Red Hat" OR ${LINUX_DISTRIBUTION} MATCHES "Fedora") - set (PACKAGE_GENERATOR "RPM") - endif(${LINUX_DISTRIBUTION} MATCHES "Red Hat" OR ${LINUX_DISTRIBUTION} MATCHES "Fedora") - set (PACKAGE_SOURCE_GENERATOR "TGZ;ZIP") -else() - set(PACKAGE_GENERATOR "TGZ") - set(PACKAGE_SOURCE_GENERATOR "TGZ") -endif() - -# used package generators -set (CPACK_GENERATOR "${PACKAGE_GENERATOR}" CACHE STRING "List of binary package generators (CPack).") -set (CPACK_SOURCE_GENERATOR "${PACKAGE_SOURCE_GENERATOR}" CACHE STRING "List of source package generators (CPack).") - - - - -CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/cmake/Packaging/postinst.in" "${CMAKE_CURRENT_BINARY_DIR}/scripts/postinst" @ONLY IMMEDIATE) -FILE(COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/postinst DESTINATION ${CMAKE_CURRENT_BINARY_DIR} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - -CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/cmake/Packaging/prerm.in" "${CMAKE_CURRENT_BINARY_DIR}/scripts/prerm" @ONLY IMMEDIATE) -FILE(COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/prerm DESTINATION ${CMAKE_CURRENT_BINARY_DIR} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - - - - -######################################################################## -# Setup CPack -######################################################################## -set(CPACK_PACKAGE_DESCRIPTION "GNSS Software Defined Receiver") -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Global Navigation Satellite Systems Software Defined Receiver written in C++." ) -set(CPACK_PACKAGE_VENDOR "Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)") -set(CPACK_PACKAGE_NAME "gnss-sdr") -set(CPACK_PACKAGE_VERSION "${VERSION}") -set(CPACK_PACKAGE_CONTACT "Carles Fernandez-Prades ") -set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/docs/doxygen/images/gnss-sdr_logo_round.png") -set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_INFO_MAJOR_VERSION}") -set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_INFO_API_COMPAT}") -set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_INFO_MINOR_VERSION}") -set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING") -set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md") -set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_SOURCE_DIR}/README.md") -set(CPACK_SET_DESTDIR "OFF") -set(CPACK_STRIP_FILES "ON") - -# Debian-specific settings -set(CPACK_DEBIAN_PACKAGE_SECTION "science") -set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") -set(CPACK_DEBIAN_PACKAGE_DEPENDS "cmake (>= 2.8), libstdc++6 (>= 4.7), libc6 (>= 2.13), libboost-dev (>= 1.45), libboost-date-time-dev (>= 1.45), libboost-system-dev (>= 1.45), libboost-filesystem-dev (>= 1.45), libboost-thread-dev (>= 1.45), libboost-serialization-dev (>= 1.45), libboost-program-options-dev (>= 1.45), libboost-test-dev (>= 1.45), libuhd-dev (>= 3.7), gnuradio-dev (>= 3.7.3), gr-osmosdr (>= 0.1.1), liblog4cpp5-dev (>= 1.0), libarmadillo-dev (>= 1:4.200.0), liblapack-dev (>= 3.4), libblas-dev (>= 1.2), gfortran (>= 1:4.7), libssl-dev (>= 1.0), libgflags-dev (>= 2.0), libgoogle-glog-dev (>= 0.3.3), libgtest-dev (>= 1.7)") -set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "GNSS Software Defined Receiver written in C++. - 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, including - code and phase observables. It is able to work with raw data files or, - if there is computational power enough, in real time with suitable - radio frequency front-ends. This software is mainly developed at CTTC - (Centre Tecnologic de Telecomunicacions de Catalunya, http://www.cttc.es) - with contributions from around the world. - More info at http://gnss-sdr.org") -set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/postinst;${CMAKE_CURRENT_BINARY_DIR}/prerm") - - - -# system/architecture -if (APPLE) - set (CPACK_PACKAGE_ARCHITECTURE darwin) -else(APPLE) - string (TOLOWER "${CMAKE_SYSTEM_NAME}" CPACK_SYSTEM_NAME) - if(CMAKE_CXX_FLAGS MATCHES "-m32") - set (CPACK_PACKAGE_ARCHITECTURE i386) - else(CMAKE_CXX_FLAGS MATCHES "-m32") - execute_process ( - COMMAND dpkg --print-architecture - RESULT_VARIABLE RV - OUTPUT_VARIABLE CPACK_PACKAGE_ARCHITECTURE - ) - if(RV EQUAL 0) - string (STRIP "${CPACK_PACKAGE_ARCHITECTURE}" CPACK_PACKAGE_ARCHITECTURE) - else(RV EQUAL 0) - execute_process (COMMAND uname -m OUTPUT_VARIABLE CPACK_PACKAGE_ARCHITECTURE) - if(CPACK_PACKAGE_ARCHITECTURE MATCHES "x86_64") - set (CPACK_PACKAGE_ARCHITECTURE amd64) - endif(CPACK_PACKAGE_ARCHITECTURE MATCHES "x86_64") - if(CPACK_PACKAGE_ARCHITECTURE MATCHES "i386") - set (CPACK_PACKAGE_ARCHITECTURE i386) - endif(CPACK_PACKAGE_ARCHITECTURE MATCHES "i386") - endif(RV EQUAL 0) - endif(CMAKE_CXX_FLAGS MATCHES "-m32") -endif(APPLE) - - -if(NOT CPACK_PACKAGE_ARCHITECTURE) -# Code from https://qt.gitorious.org/qt/qtbase/source/src/corelib/global/qprocessordetection.h -set(archdetect_c_code " -#if defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_M_ARM) || defined(__arm64__) - #if defined(__arm64__) - #error cmake_ARCH arm64 - #endif - - #if defined(__arm__) || defined(__TARGET_ARCH_ARM) - #if defined(__ARM_ARCH_8__) \\ - || defined(__ARM_ARCH_8A__) \\ - || defined(__ARM_ARCH_8R__) \\ - || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 8) - #error cmake_ARCH armv8 - #elif defined(__ARM_ARCH_7__) \\ - || defined(__ARM_ARCH_7A__) \\ - || defined(__ARM_ARCH_7R__) \\ - || defined(__ARM_ARCH_7M__) \\ - || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 7) - #error cmake_ARCH armv7 - #elif defined(__ARM_ARCH_6__) \\ - || defined(__ARM_ARCH_6J__) \\ - || defined(__ARM_ARCH_6T2__) \\ - || defined(__ARM_ARCH_6Z__) \\ - || defined(__ARM_ARCH_6K__) \\ - || defined(__ARM_ARCH_6ZK__) \\ - || defined(__ARM_ARCH_6M__) \\ - || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 6) - #error cmake_ARCH armv6 - #elif defined(__ARM_ARCH_5TEJ__) \\ - || (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 5) - #error cmake_ARCH armv5 - #else - #error cmake_ARCH arm - #endif -#elif defined(__i386) || defined(__i386__) || defined(_M_IX86) - #error cmake_ARCH i386 -#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64) - #error cmake_ARCH x86_64 -#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64) - #error cmake_ARCH ia64 -#elif defined(__ppc__) || defined(__ppc) || defined(__powerpc__) \\ - || defined(_ARCH_COM) || defined(_ARCH_PWR) || defined(_ARCH_PPC) \\ - || defined(_M_MPPC) || defined(_M_PPC) - #if defined(__ppc64__) || defined(__powerpc64__) || defined(__64BIT__) - #error cmake_ARCH ppc64 - #else - #error cmake_ARCH ppc - #endif -#endif -#error cmake_ARCH unknown -") - - - -function(target_architecture output_var) - if(APPLE AND CMAKE_OSX_ARCHITECTURES) - # On OS X we use CMAKE_OSX_ARCHITECTURES *if* it was set - # On OS X 10.6+ the default is x86_64 if the CPU supports it, i386 otherwise. - foreach(osx_arch ${CMAKE_OSX_ARCHITECTURES}) - if("${osx_arch}" STREQUAL "i386") - set(osx_arch_i386 TRUE) - elseif("${osx_arch}" STREQUAL "x86_64") - set(osx_arch_x86_64 TRUE) - else() - message(FATAL_ERROR "Invalid OS X arch name: ${osx_arch}") - endif() - endforeach() - # Now add all the architectures in our normalized order - if(osx_arch_i386) - list(APPEND ARCH i386) - endif() - if(osx_arch_x86_64) - list(APPEND ARCH x86_64) - endif() - else() - file(WRITE "${CMAKE_BINARY_DIR}/arch.c" "${archdetect_c_code}") - enable_language(C) - # Detect the architecture in a rather creative way... - # This compiles a small C program which is a series of ifdefs that selects a - # particular #error preprocessor directive whose message string contains the - # target architecture. The program will always fail to compile (both because - # file is not a valid C program, and obviously because of the presence of the - # #error preprocessor directives... but by exploiting the preprocessor in this - # way, we can detect the correct target architecture even when cross-compiling, - # since the program itself never needs to be run (only the compiler/preprocessor) - try_run( - run_result_unused - compile_result_unused - "${CMAKE_BINARY_DIR}" - "${CMAKE_BINARY_DIR}/arch.c" - COMPILE_OUTPUT_VARIABLE ARCH - CMAKE_FLAGS CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES} - ) - # Parse the architecture name from the compiler output - string(REGEX MATCH "cmake_ARCH ([a-zA-Z0-9_]+)" ARCH "${ARCH}") - # Get rid of the value marker leaving just the architecture name - string(REPLACE "cmake_ARCH " "" ARCH "${ARCH}") - # If we are compiling with an unknown architecture this variable should - # already be set to "unknown" but in the case that it's empty (i.e. due - # to a typo in the code), then set it to unknown - if (NOT ARCH) - set(ARCH unknown) - endif() - endif() -set(${output_var} "${ARCH}" PARENT_SCOPE) -endfunction() - -# Set target architectures -target_architecture(CMAKE_TARGET_ARCHITECTURES) -endif(NOT CPACK_PACKAGE_ARCHITECTURE) - -if(APPLE) -list(LENGTH CMAKE_TARGET_ARCHITECTURES cmake_target_arch_len) - if(NOT "${cmake_target_arch_len}" STREQUAL "1") - set(CMAKE_TARGET_ARCHITECTURE_UNIVERSAL TRUE) - set(CMAKE_TARGET_ARCHITECTURE_CODE "universal") - else(NOT "${cmake_target_arch_len}" STREQUAL "1") - set(CMAKE_TARGET_ARCHITECTURE_UNIVERSAL FALSE) - set(CMAKE_TARGET_ARCHITECTURE_CODE "${CMAKE_TARGET_ARCHITECTURES}") - endif(NOT "${cmake_target_arch_len}" STREQUAL "1") -endif(APPLE) - -# source package settings -#set (CPACK_SOURCE_TOPLEVEL_TAG "source") -set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") -set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;\\\\.gitignore;/\\\\data/*;/\\\\install/*;/\\\\thirdparty/;/\\\\docs/html/;/\\\\docs/latex;\\\\.pdf;\\\\.project$;\\\\.DS_Store;\\\\.swp$;\\\\.#;/#;\\\\.*~;cscope\\\\.*;/[Bb]uild[.+-_a-zA-Z0-9]*/") - -# default binary package settings -set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY TRUE) -set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}") -if(CPACK_PACKAGE_ARCHITECTURE) - set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}_${CPACK_PACKAGE_ARCHITECTURE}") -endif(CPACK_PACKAGE_ARCHITECTURE) - -if(CPACK_GENERATOR STREQUAL "DEB") - configure_file("${CMAKE_SOURCE_DIR}/cmake/Packaging/fixup_deb_permissions.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/fixup_deb_permissions.sh" @ONLY IMMEDIATE) - - configure_file("${CMAKE_SOURCE_DIR}/cmake/Packaging/fixup_deb_permissions.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/scripts/fixup_deb_permissions.sh" @ONLY IMMEDIATE) - - file(COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/fixup_deb_permissions.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR} - FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - - # Write license - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/copyright" -"Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: gnss-sdr -Source: git://github.com/gnss-sdr/gnss-sdr - -Files: * -Copyright: Copyright 2014 ${CPACK_PACKAGE_CONTACT} -License: GPL-3+ - This program 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. - . - This program 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 this package; if not, write to the Free - Software Foundation, Inc., 51 Franklin St, Fifth Floor, - Boston, MA 02110-1301 USA - . - On Debian systems, the full text of the GNU General Public - License version 3 can be found in the file - `/usr/share/common-licenses/GPL-3'. - -Files: src/core/libs/supl/* -Copyright: 2007 Tatu Mannisto -License: BSD - -Files: src/core/libs/INIReader.* -Copyright: 2009 Brush Technologies -License: BSD-3-clause - -Files: src/core/libs/ini.* -Copyright: 2009 Brush Technologies -License: BSD-3-clause") - - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/copyright" - DESTINATION "share/doc/${CPACK_PACKAGE_NAME}") - - execute_process(COMMAND gzip -9 -c ${CMAKE_SOURCE_DIR}/docs/changelog - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} OUTPUT_FILE "${CMAKE_BINARY_DIR}/changelog.gz") - - execute_process(COMMAND gzip -9 -c ${CMAKE_SOURCE_DIR}/docs/changelog.Debian - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} OUTPUT_FILE "${CMAKE_BINARY_DIR}/changelog.Debian.gz") - - install(FILES "${CMAKE_BINARY_DIR}/changelog.gz" "${CMAKE_BINARY_DIR}/changelog.Debian.gz" DESTINATION "share/doc/${CPACK_PACKAGE_NAME}") -endif(CPACK_GENERATOR STREQUAL "DEB") - -include(CPack) diff --git a/cmake/Modules/GnsssdrBuildTypes.cmake b/cmake/Modules/GnsssdrBuildTypes.cmake new file mode 100644 index 000000000..0e3507a1b --- /dev/null +++ b/cmake/Modules/GnsssdrBuildTypes.cmake @@ -0,0 +1,210 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +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 a soft warning, listing +# the available build types, and setting the build type to None. +######################################################################## +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; warn out at set it to None + message(STATUS "Warning: Build type '${settype}' not valid, must be one of: ${AVAIL_BUILDTYPES}.") + message(STATUS "Setting the build type to 'None'") + set(CMAKE_BUILD_TYPE "None" PARENT_SCOPE) +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 -fsanitize=undefined -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 -fsanitize=undefined -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() diff --git a/cmake/Modules/GnsssdrCrypto.cmake b/cmake/Modules/GnsssdrCrypto.cmake new file mode 100644 index 000000000..a9d89e6be --- /dev/null +++ b/cmake/Modules/GnsssdrCrypto.cmake @@ -0,0 +1,191 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2024 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +if(NOT COMMAND feature_summary) + include(FeatureSummary) +endif() + +if(NOT GNSSSDR_LIB_PATHS) + include(GnsssdrLibPaths) +endif() + +################################################################################ +# OpenSSL https://www.openssl.org/ +################################################################################ +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(OPENSSL_ROOT_DIR /usr/local/opt/openssl) # Trick for Homebrew +endif() +unset(OPENSSL_FOUND CACHE) +unset(GnuTLS_FOUND CACHE) +unset(GMP_FOUND CACHE) +if(NOT ENABLE_GNUTLS) + find_package(OpenSSL) +endif() +set_package_properties(OpenSSL + PROPERTIES + URL "https://www.openssl.org" + PURPOSE "Used for the OSNMA and SUPL protocol implementations." + TYPE REQUIRED +) +if(OPENSSL_FOUND) + set_package_properties(OpenSSL + PROPERTIES + DESCRIPTION "Cryptography and SSL/TLS Toolkit (found: v${OPENSSL_VERSION})" + ) +else() + set_package_properties(OpenSSL + PROPERTIES + DESCRIPTION "OpenSSL has not been found, but GnuTLS with openssl compatibility can replace it" + ) + ################################################################################ + # GnuTLS - https://www.gnutls.org/ + ################################################################################ + find_package(GnuTLS) + set_package_properties(GnuTLS PROPERTIES + URL "https://www.gnutls.org/" + PURPOSE "Used for the OSNMA and SUPL protocol implementations." + TYPE REQUIRED + ) + if(GnuTLS_FOUND AND GNUTLS_VERSION_STRING) + set_package_properties(GnuTLS PROPERTIES + DESCRIPTION "Transport Layer Security Library (found: v${GNUTLS_VERSION_STRING})" + ) + else() + set_package_properties(GnuTLS PROPERTIES + DESCRIPTION "Transport Layer Security Library" + ) + endif() + find_library(GNUTLS_OPENSSL_LIBRARY + NAMES gnutls-openssl libgnutls-openssl.so.27 + PATHS ${GNSSSDR_LIB_PATHS} + ) + + find_path(GNUTLS_INCLUDE_DIR NAMES gnutls/gnutls.h + PATHS + /usr/include + /usr/local/include + /opt/local/include # default location in Macports + /opt/homebrew/opt/gnutls/include/ + ${GNUTLS_ROOT_DIR}/include/ + ) + + if(NOT GNUTLS_OPENSSL_LIBRARY) + message(" The GnuTLS library with openssl compatibility enabled has not been found.") + message(" You can try to install the required libraries by typing:") + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux|kFreeBSD|GNU") + if(${LINUX_DISTRIBUTION} MATCHES "Fedora" OR ${LINUX_DISTRIBUTION} MATCHES "Red Hat") + message(" sudo yum install openssl-devel") + else() + message(" sudo apt-get install libgnutls28-dev") + endif() + endif() + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + message(" 'sudo port install openssl3', if you are using Macports, or") + message(" 'brew install openssl', if you are using Homebrew.") + endif() + message(FATAL_ERROR "OpenSSL or the GnuTLS libraries with openssl compatibility are required to build gnss-sdr") + endif() + + # Test GnuTLS capabilities + file(READ "${GNUTLS_INCLUDE_DIR}/gnutls/gnutls.h" gnutls_gnutls_file_contents) + if("${gnutls_gnutls_file_contents}" MATCHES "GNUTLS_SIGN_ECDSA_SHA256") + set(GNUTLS_SIGN_ECDSA_SHA256 TRUE) + endif() + if("${gnutls_gnutls_file_contents}" MATCHES "GNUTLS_SIGN_ECDSA_SHA512") + set(GNUTLS_SIGN_ECDSA_SHA512 TRUE) + endif() + if("${gnutls_gnutls_file_contents}" MATCHES "GNUTLS_DIG_SHA3_256") + set(GNUTLS_DIG_SHA3_256 TRUE) + endif() + if("${gnutls_gnutls_file_contents}" MATCHES "#define GNUTLS_VERSION_MAJOR 2") + set(GNUTLS_HMAC_INIT_WITH_DIGEST TRUE) + endif() + if("${gnutls_gnutls_file_contents}" MATCHES "GNUTLS_MAC_AES_CMAC_128") + set(GNUTLS_MAC_AES_CMAC_128 TRUE) + endif() + file(READ "${GNUTLS_INCLUDE_DIR}/gnutls/abstract.h" gnutls_abstract_file_contents) + if("${gnutls_abstract_file_contents}" MATCHES "gnutls_pubkey_export2") + set(GNUTLS_PUBKEY_EXPORT2 TRUE) + endif() + + find_package(GMP) + set_package_properties(GMP PROPERTIES + PURPOSE "Required to decompress cryptographic keys." + TYPE REQUIRED + ) + if(NOT GMP_FOUND) + message(FATAL_ERROR "GMP is required by gnss-sdr if linking against GnuTLS") + endif() +endif() + +################################################################################ + +function(link_to_crypto_dependencies target) + if(OPENSSL_FOUND) + if(TARGET OpenSSL::SSL) + target_link_libraries(${target} + PUBLIC + OpenSSL::SSL + ) + if(TARGET OpenSSL::Crypto) + target_link_libraries(${target} + PUBLIC + OpenSSL::Crypto + ) + endif() + else() + target_link_libraries(${target} + PUBLIC + ${OPENSSL_LIBRARIES} + "${OPENSSL_CRYPTO_LIBRARIES}" + ) + target_include_directories(${target} + PUBLIC + ${OPENSSL_INCLUDE_DIR} + ) + endif() + if(OPENSSL_VERSION) + if(OPENSSL_VERSION VERSION_GREATER "3.0.0") + target_compile_definitions(${target} PUBLIC -DUSE_OPENSSL_3=1) + else() + if(NOT OPENSSL_VERSION VERSION_LESS "1.1.1") + target_compile_definitions(${target} PUBLIC -DUSE_OPENSSL_111=1) + endif() + endif() + endif() + else() # GnuTLS + target_link_libraries(${target} + PUBLIC + ${GNUTLS_LIBRARIES} + ${GNUTLS_OPENSSL_LIBRARY} + PRIVATE + Gmp::gmp + ) + target_include_directories(${target} + PUBLIC + ${GNUTLS_INCLUDE_DIR} + ) + target_compile_definitions(${target} PUBLIC -DUSE_GNUTLS_FALLBACK=1) + if(GNUTLS_SIGN_ECDSA_SHA256) + target_compile_definitions(${target} PRIVATE -DHAVE_GNUTLS_SIGN_ECDSA_SHA256=1) + endif() + if(GNUTLS_SIGN_ECDSA_SHA512) + target_compile_definitions(${target} PRIVATE -DHAVE_GNUTLS_SIGN_ECDSA_SHA512=1) + endif() + if(GNUTLS_DIG_SHA3_256) + target_compile_definitions(${target} PRIVATE -DHAVE_GNUTLS_DIG_SHA3_256=1) + endif() + if(GNUTLS_PUBKEY_EXPORT2) + target_compile_definitions(${target} PRIVATE -DHAVE_GNUTLS_PUBKEY_EXPORT2=1) + endif() + if(GNUTLS_HMAC_INIT_WITH_DIGEST) + target_compile_definitions(${target} PRIVATE -DHAVE_GNUTLS_HMAC_INIT_WITH_DIGEST=1) + endif() + if(GNUTLS_MAC_AES_CMAC_128) + target_compile_definitions(${target} PRIVATE -DHAVE_GNUTLS_MAC_AES_CMAC_128=1) + endif() + endif() +endfunction() diff --git a/cmake/Modules/GnsssdrLibPaths.cmake b/cmake/Modules/GnsssdrLibPaths.cmake new file mode 100644 index 000000000..9f76e362f --- /dev/null +++ b/cmake/Modules/GnsssdrLibPaths.cmake @@ -0,0 +1,43 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2024 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +if(GNSSSDR_LIB_PATHS) + return() +endif() + +set(GNSSSDR_LIB_PATHS + /usr/lib + /usr/lib/aarch64-linux-gnu + /usr/lib/alpha-linux-gnu + /usr/lib/arm-linux-gnueabi + /usr/lib/arm-linux-gnueabihf + /usr/lib/hppa-linux-gnu + /usr/lib/hppa-linux-gnu + /usr/lib/i386-gnu + /usr/lib/i386-kfreebsd-gnu + /usr/lib/i386-linux-gnu + /usr/lib/loongarch64-linux-gnu + /usr/lib/m68k-linux-gnu + /usr/lib/mips-linux-gnu + /usr/lib/mips64el-linux-gnuabi64 + /usr/lib/mipsel-linux-gnu + /usr/lib/powerpc-linux-gnu + /usr/lib/powerpc-linux-gnuspe + /usr/lib/powerpc64-linux-gnu + /usr/lib/powerpc64le-linux-gnu + /usr/lib/riscv64-linux-gnu + /usr/lib/s390x-linux-gnu + /usr/lib/sh4-linux-gnu + /usr/lib/sparc64-linux-gnu + /usr/lib/x86_64-kfreebsd-gnu + /usr/lib/x86_64-linux-gnu + /usr/lib/x86_64-linux-gnux32 + /usr/lib64 + /usr/local/lib + /usr/local/lib/i386 + /usr/local/lib64 + /opt/local/lib +) diff --git a/cmake/Modules/SetupPython.cmake b/cmake/Modules/SetupPython.cmake new file mode 100644 index 000000000..234a3d33e --- /dev/null +++ b/cmake/Modules/SetupPython.cmake @@ -0,0 +1,196 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + + +######################################################################## +# Check for the existence of a python module: +# - desc a string description of the check +# - mod the name of the module to import +# - 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}") + execute_process( + COMMAND ${PYTHON_EXECUTABLE} -c " +######################################### +try: import ${mod} +except: + try: ${mod} + except: exit(-1) +try: assert ${cmd} +except: exit(-1) +#########################################" + OUTPUT_QUIET ERROR_QUIET + RESULT_VARIABLE ${have} + ) + if(${have} EQUAL 0) + message(STATUS "Python checking for ${desc} - found") + set(${have} TRUE) + else() + message(STATUS "Python checking for ${desc} - not found") + set(${have} FALSE) + endif() +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 OR CMAKE_CROSSCOMPILING) + if(PYTHON_EXECUTABLE) + message(STATUS "User set python executable ${PYTHON_EXECUTABLE}") + string(FIND "${PYTHON_EXECUTABLE}" "python3" IS_PYTHON3) + if(IS_PYTHON3 EQUAL -1) + if(CMAKE_VERSION VERSION_LESS "3.24") + find_package(PythonInterp ${GNSSSDR_PYTHON_MIN_VERSION} REQUIRED) + else() + set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) + find_package(Python2 COMPONENTS Interpreter) + set(PYTHONINTERP_FOUND Python2_Interpreter_FOUND) + set(PYTHON_VERSION_MAJOR "${Python2_VERSION_MAJOR}") + set(PYTHON_VERSION_STRING "${Python2_VERSION_MAJOR}.${Python2_VERSION_MINOR}") + endif() + else() + if(CMAKE_VERSION VERSION_LESS "3.24") + find_package(PythonInterp ${GNSSSDR_PYTHON3_MIN_VERSION} REQUIRED) + else() + set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) + find_package(Python3 COMPONENTS Interpreter) + set(PYTHONINTERP_FOUND Python3_Interpreter_FOUND) + set(PYTHON_VERSION_MAJOR "${Python3_VERSION_MAJOR}") + set(PYTHON_VERSION_STRING "${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}") + endif() + 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) + if(IS_PYTHON3 EQUAL -1) + gnsssdr_python_check_module("six - python 2 and 3 compatibility library" six "True" SIX_FOUND) + endif() + else() + message(STATUS "PYTHON_EXECUTABLE not set - trying by default python3") + if(CMAKE_VERSION VERSION_LESS "3.24") + set(Python_ADDITIONAL_VERSIONS 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11) + find_package(PythonInterp ${VOLK_PYTHON_MIN_VERSION}) + else() + find_package(Python COMPONENTS Interpreter) + set(PYTHONINTERP_FOUND Python_Interpreter_FOUND) + set(PYTHON_EXECUTABLE "${Python_EXECUTABLE}") + set(PYTHON_VERSION_MAJOR "${Python_VERSION_MAJOR}") + set(PYTHON_VERSION_STRING "${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}") + endif() + if(NOT PYTHONINTERP_FOUND) + message(STATUS "python3 not found - trying with python2.7") + if(CMAKE_VERSION VERSION_LESS "3.24") + set(Python_ADDITIONAL_VERSIONS 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11) + find_package(PythonInterp ${VOLK_PYTHON_MIN_VERSION}) + else() + find_package(Python2 COMPONENTS Interpreter) + set(PYTHONINTERP_FOUND Python2_Interpreter_FOUND) + set(PYTHON_EXECUTABLE "${Python2_EXECUTABLE}") + set(PYTHON_VERSION_MAJOR "${Python2_VERSION_MAJOR}") + set(PYTHON_VERSION_STRING "${Python2_VERSION_MAJOR}.${Python2_VERSION_MINOR}") + endif() + 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) + if(PYTHON_VERSION_STRING VERSION_LESS "3.0") + gnsssdr_python_check_module("six - python 2 and 3 compatibility library" six "True" SIX_FOUND) + endif() + endif() +else() + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(_previous ${CMAKE_FIND_FRAMEWORK}) + set(CMAKE_FIND_FRAMEWORK LAST) + endif() + if(PYTHON_EXECUTABLE) + set(Python_EXECUTABLE ${PYTHON_EXECUTABLE}) + endif() + find_package(Python3 COMPONENTS Interpreter) + if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(CMAKE_FIND_FRAMEWORK ${_previous}) + endif() + if(Python3_FOUND) + set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE}) + set(PYTHON_VERSION_MAJOR "${Python3_VERSION_MAJOR}") + set(PYTHON_VERSION_STRING "${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}") + 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) + endif() + if(NOT Python3_FOUND OR NOT MAKO_FOUND) + find_package(Python2 COMPONENTS Interpreter) + if(Python2_FOUND) + set(PYTHON_EXECUTABLE ${Python2_EXECUTABLE}) + set(PYTHON_VERSION_MAJOR ${Python2_VERSION_MAJOR}) + set(PYTHON_VERSION_STRING "${Python2_VERSION_MAJOR}.${Python2_VERSION_MINOR}") + 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 MAKO_FOUND OR NOT SIX_FOUND) + unset(PYTHON_EXECUTABLE) + if(CMAKE_VERSION VERSION_LESS "3.24") + find_package(PythonInterp ${VOLK_PYTHON_MIN_VERSION}) + else() + find_package(Python COMPONENTS Interpreter) + set(PYTHONINTERP_FOUND Python_Interpreter_FOUND) + set(PYTHON_EXECUTABLE "${Python_EXECUTABLE}") + set(PYTHON_VERSION_STRING "${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}") + set(PYTHON_VERSION_MAJOR "${Python_VERSION_MAJOR}") + 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) + if(NOT MAKO_FOUND) + unset(PYTHON_EXECUTABLE) + unset(PYTHON_VERSION_STRING) + unset(PYTHON_VERSION_MAJOR) + find_program(PYTHON_EXECUTABLE NAMES python3 python) + if(PYTHON_EXECUTABLE) + set(PYTHONINTERP_FOUND TRUE) + execute_process(COMMAND ${PYTHON_EXECUTABLE} --version OUTPUT_VARIABLE PYTHON_VERSION_STRING_AUX) + string(FIND "${PYTHON_VERSION_STRING_AUX}" " " blank_char_index) + if(blank_char_index GREATER -1) + math(EXPR start_index "${blank_char_index} + 1") + string(SUBSTRING "${PYTHON_VERSION_STRING_AUX}" ${start_index} -1 PYTHON_VERSION_STRING) + string(STRIP ${PYTHON_VERSION_STRING} PYTHON_VERSION_STRING) + string(SUBSTRING "${PYTHON_VERSION_STRING_AUX}" ${start_index} 1 PYTHON_VERSION_MAJOR) + message(STATUS "Found Python: ${PYTHON_EXECUTABLE} (found version: ${PYTHON_VERSION_STRING})") + else() + string(FIND ${PYTHON_EXECUTABLE} "python3" is_python3) + if(is_python3 GREATER -1) + set(PYTHON_VERSION_MAJOR "3") + set(PYTHON_VERSION_STRING "3.10") # ? + else() + set(PYTHON_VERSION_MAJOR "2") + set(PYTHON_VERSION_STRING "2.7") + endif() + endif() + endif() + gnsssdr_python_check_module("mako >= 0.4.2" mako "mako.__version__ >= '0.4.2'" MAKO_FOUND) + endif() + if(MAKO_FOUND AND PYTHON_VERSION_STRING VERSION_LESS "3.0") + gnsssdr_python_check_module("six - python 2 and 3 compatibility library" six "True" SIX_FOUND) + endif() + 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") diff --git a/cmake/Modules/TestForARM.cmake b/cmake/Modules/TestForARM.cmake deleted file mode 100644 index 1217fb402..000000000 --- a/cmake/Modules/TestForARM.cmake +++ /dev/null @@ -1,83 +0,0 @@ -############################################################################## -# check if the compiler defines the architecture as ARM and set the -# version, if found. -# -# - Anthony Arnold -############################################################################## - -if (__TEST_FOR_ARM_INCLUDED) - return () -endif() -set(__TEST_FOR_ARM_INCLUDED TRUE) - -# Function checks if the input string defines ARM version and sets the -# 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 "") - set(${output_var} "${version}" PARENT_SCOPE) - endif(NOT _VERSION_MATCH STREQUAL "") -endfunction() - -message(STATUS "Checking for ARM") - -set (IS_ARM NO) -set (ARM_VERSION "") - -if (CMAKE_COMPILER_IS_GNUCXX) - 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 (NOT ARM_FOUND STREQUAL "") - set(IS_ARM YES) - message(STATUS "ARM system detected") - - # detect the version - check_arm_version("__ARM_ARCH_2__" ${TEST_FOR_ARM_RESULTS} "armv2" ARM_VERSION) - check_arm_version("__ARM_ARCH_2A__" ${TEST_FOR_ARM_RESULTS} "armv2a" ARM_VERSION) - check_arm_version("__ARM_ARCH_3__" ${TEST_FOR_ARM_RESULTS} "armv3" ARM_VERSION) - check_arm_version("__ARM_ARCH_3M__" ${TEST_FOR_ARM_RESULTS} "armv3m" ARM_VERSION) - check_arm_version("__ARM_ARCH_4__" ${TEST_FOR_ARM_RESULTS} "armv4" ARM_VERSION) - check_arm_version("__ARM_ARCH_4T__" ${TEST_FOR_ARM_RESULTS} "armv4t" ARM_VERSION) - check_arm_version("__ARM_ARCH_5__" ${TEST_FOR_ARM_RESULTS} "armv5" ARM_VERSION) - check_arm_version("__ARM_ARCH_5T__" ${TEST_FOR_ARM_RESULTS} "armv5t" ARM_VERSION) - check_arm_version("__ARM_ARCH_5E__" ${TEST_FOR_ARM_RESULTS} "armv5e" ARM_VERSION) - check_arm_version("__ARM_ARCH_5TE__" ${TEST_FOR_ARM_RESULTS} "armv5te" ARM_VERSION) - check_arm_version("__ARM_ARCH_6__" ${TEST_FOR_ARM_RESULTS} "armv6" ARM_VERSION) - check_arm_version("__ARM_ARCH_6J__" ${TEST_FOR_ARM_RESULTS} "armv6j" ARM_VERSION) - check_arm_version("__ARM_ARCH_6K__" ${TEST_FOR_ARM_RESULTS} "armv6k" ARM_VERSION) - check_arm_version("__ARM_ARCH_6T2__" ${TEST_FOR_ARM_RESULTS} "armv6t2" ARM_VERSION) - check_arm_version("__ARM_ARCH_6Z__" ${TEST_FOR_ARM_RESULTS} "armv6z" ARM_VERSION) - check_arm_version("__ARM_ARCH_6ZK__" ${TEST_FOR_ARM_RESULTS} "armv6zk" ARM_VERSION) - check_arm_version("__ARM_ARCH_6M__" ${TEST_FOR_ARM_RESULTS} "armv6-m" ARM_VERSION) - check_arm_version("__ARM_ARCH_7__" ${TEST_FOR_ARM_RESULTS} "armv7" ARM_VERSION) - check_arm_version("__ARM_ARCH_7A__" ${TEST_FOR_ARM_RESULTS} "armv7-a" ARM_VERSION) - check_arm_version("__ARM_ARCH_7M__" ${TEST_FOR_ARM_RESULTS} "armv7-m" ARM_VERSION) - check_arm_version("__ARM_ARCH_7R__" ${TEST_FOR_ARM_RESULTS} "armv7-r" ARM_VERSION) - check_arm_version("__ARM_ARCH_7EM_" ${TEST_FOR_ARM_RESULTS} "armv7e-m" ARM_VERSION) - check_arm_version("__ARM_ARCH_7VE__" ${TEST_FOR_ARM_RESULTS} "armv7ve" ARM_VERSION) - check_arm_version("__ARM_ARCH_8A__" ${TEST_FOR_ARM_RESULTS} "armv8-a" ARM_VERSION) - - # anything else just define as arm - if (ARM_VERSION STREQUAL "") - message(STATUS "Couldn't detect ARM version. Setting to 'arm'") - set(ARM_VERSION "arm") - else (ARM_VERSION STREQUAL "") - 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 "") - -else (CMAKE_COMPILE_IS_GNUCXX) - # 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) - -set(IS_ARM ${IS_ARM} CACHE BOOL "Compiling for ARM") -set(ARM_VERSION ${ARM_VERSION} CACHE STRING "ARM version") diff --git a/cmake/Modules/TestForSSE.cmake b/cmake/Modules/TestForSSE.cmake deleted file mode 100644 index 1280f83b3..000000000 --- a/cmake/Modules/TestForSSE.cmake +++ /dev/null @@ -1,38 +0,0 @@ -############################################################################### -# Test for availability of SSE -# -# - Anthony Arnold -############################################################################### - - -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) - set(detected 0) - if (COMPILE_RESULT EQUAL 0) - message(STATUS "Detected ${name}") - set(detected 1) - endif(COMPILE_RESULT EQUAL 0) - set(${result_var} ${detected} CACHE INTERNAL "${name} Available") - endif (NOT DEFINED ${result_var}) -endfunction(test_for_sse) - -message(STATUS "Testing for SIMD extensions") - -enable_language(C) - -test_for_sse("ammintrin.h" SSE4A_AVAILABLE "SSE4A") -test_for_sse("nmmintrin.h" SSE4_2_AVAILABLE "SSE4.2") -test_for_sse("smmintrin.h" SSE4_1_AVAILABLE "SSE4.1") -test_for_sse("tmmintrin.h" SSSE3_AVAILABLE "SSSE3") -test_for_sse("pmmintrin.h" SSE3_AVAILABLE "SSE3") -test_for_sse("emmintrin.h" SSE2_AVAILABLE "SSE2") -test_for_sse("xmmintrin.h" SSE_AVAILABLE "SSE1") -test_for_sse("mmintrin.h" MMX_AVAILABLE "MMX") -test_for_sse("wmmintrin.h" AES_AVAILABLE "AES") -test_for_sse("immintrin.h" AVX_AVAILABLE "AVX") - -file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/-.o") diff --git a/cmake/Modules/XcodeRemoveWarningDuplicates.cmake b/cmake/Modules/XcodeRemoveWarningDuplicates.cmake new file mode 100644 index 000000000..f4e150fcc --- /dev/null +++ b/cmake/Modules/XcodeRemoveWarningDuplicates.cmake @@ -0,0 +1,23 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2024 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +if(DEFINED __INCLUDED_XCODE_REMOVE_WARNING_DUPLICATES_CMAKE) + return() +endif() +set(__INCLUDED_XCODE_REMOVE_WARNING_DUPLICATES_CMAKE TRUE) + +function(xcode_remove_warning_duplicates target) + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15.0.0") + # A bug in Xcode 15 adds duplicate flags to the linker. In addition, the + # `-warn_duplicate_libraries` is now enabled by default which may result + # in several 'duplicate libraries warning'. + # - https://gitlab.kitware.com/cmake/cmake/-/issues/25297 and + # - https://indiestack.com/2023/10/xcode-15-duplicate-library-linker-warnings/ + target_link_options(${target} PUBLIC "LINKER:-no_warn_duplicate_libraries") + endif() + endif() +endfunction() \ No newline at end of file diff --git a/cmake/Packaging/fixup_deb_permissions.sh.in b/cmake/Packaging/fixup_deb_permissions.sh.in deleted file mode 100644 index b2eb3aeb2..000000000 --- a/cmake/Packaging/fixup_deb_permissions.sh.in +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -set -e -mkdir fix_up_deb -dpkg-deb -x @CPACK_PACKAGE_FILE_NAME@.deb fix_up_deb_permissions -dpkg-deb --control @CPACK_PACKAGE_FILE_NAME@.deb fix_up_deb_permissions/DEBIAN -rm @CPACK_PACKAGE_FILE_NAME@.deb -chmod 0644 fix_up_deb_permissions/DEBIAN/md5sums -find -type d -print0 |xargs -0 chmod 755 -fakeroot dpkg -b fix_up_deb_permissions @CPACK_PACKAGE_FILE_NAME@.deb -rm -rf fix_up_deb_permissions diff --git a/cmake/Packaging/postinst.in b/cmake/Packaging/postinst.in deleted file mode 100644 index 8e4e8d1fd..000000000 --- a/cmake/Packaging/postinst.in +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -set -e -chmod +x @CMAKE_INSTALL_PREFIX@/bin/@PROJECT_NAME@ -chmod +x @CMAKE_INSTALL_PREFIX@/bin/volk_gnsssdr_profile diff --git a/cmake/Packaging/prerm.in b/cmake/Packaging/prerm.in deleted file mode 100644 index 4719e4598..000000000 --- a/cmake/Packaging/prerm.in +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -set -e -if test -e @CMAKE_INSTALL_PREFIX@/@PROJECT_NAME@ ; then -rm @CMAKE_INSTALL_PREFIX@/bin/@PROJECT_NAME@ -rm @CMAKE_INSTALL_PREFIX@/bin/volk_gnsssdr_profile -fi -if test -e @CMAKE_INSTALL_PREFIX@/share/@PROJECT_NAME@ ; then -rm -rf @CMAKE_INSTALL_PREFIX@/share/@PROJECT_NAME@ -fi -if test -e @CMAKE_INSTALL_PREFIX@/share/man/man1/@PROJECT_NAME@.1.gz ; then -rm @CMAKE_INSTALL_PREFIX@/share/man/man1/@PROJECT_NAME@.1.gz -rm @CMAKE_INSTALL_PREFIX@/share/man/man1/volk_gnsssdr_profile.1.gz -fi - diff --git a/cmake/Toolchains/aarch64-linux-gnu.cmake b/cmake/Toolchains/aarch64-linux-gnu.cmake new file mode 100644 index 000000000..28cf3073d --- /dev/null +++ b/cmake/Toolchains/aarch64-linux-gnu.cmake @@ -0,0 +1,39 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR aarch64) + +if(MINGW OR CYGWIN OR WIN32) + set(UTIL_SEARCH_CMD where) +elseif(UNIX OR APPLE) + set(UTIL_SEARCH_CMD which) +endif() + +set(TOOLCHAIN_PREFIX aarch64-linux-gnu-) + +execute_process( + COMMAND ${UTIL_SEARCH_CMD} ${TOOLCHAIN_PREFIX}gcc + OUTPUT_VARIABLE BINUTILS_PATH + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +get_filename_component(ARM_TOOLCHAIN_DIR ${BINUTILS_PATH} DIRECTORY) + +# The following is not needed on debian +# Without that flag CMake is not able to pass test compilation check +#set(CMAKE_EXE_LINKER_FLAGS_INIT "--specs=nosys.specs") + +set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc) +set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) +set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++) + +set(CMAKE_OBJCOPY ${ARM_TOOLCHAIN_DIR}/${TOOLCHAIN_PREFIX}objcopy CACHE INTERNAL "objcopy tool") +set(CMAKE_SIZE_UTIL ${ARM_TOOLCHAIN_DIR}/${TOOLCHAIN_PREFIX}size CACHE INTERNAL "size tool") + +set(CMAKE_FIND_ROOT_PATH ${BINUTILS_PATH}) + +set(CMAKE_CROSSCOMPILING_EMULATOR "qemu-aarch64 -L /usr/aarch64-linux-gnu/") diff --git a/cmake/Toolchains/arm-linux-gnueabihf.cmake b/cmake/Toolchains/arm-linux-gnueabihf.cmake new file mode 100644 index 000000000..c91a16b61 --- /dev/null +++ b/cmake/Toolchains/arm-linux-gnueabihf.cmake @@ -0,0 +1,42 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR arm) + +if(MINGW OR CYGWIN OR WIN32) + set(UTIL_SEARCH_CMD where) +elseif(UNIX OR APPLE) + set(UTIL_SEARCH_CMD which) +endif() + +set(TOOLCHAIN_PREFIX arm-linux-gnueabihf-) + +execute_process( + COMMAND ${UTIL_SEARCH_CMD} ${TOOLCHAIN_PREFIX}gcc + OUTPUT_VARIABLE BINUTILS_PATH + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +get_filename_component(ARM_TOOLCHAIN_DIR ${BINUTILS_PATH} DIRECTORY) + +# The following is not needed on debian +# Without that flag CMake is not able to pass test compilation check +#set(CMAKE_EXE_LINKER_FLAGS_INIT "--specs=nosys.specs") + +set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc) +set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) +set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++) +## the following is needed for CheckCSourceCompiles used in lib/CMakeLists.txt +set(CMAKE_C_FLAGS "-mfpu=neon" CACHE STRING "" FORCE) +set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "" FORCE) + +set(CMAKE_OBJCOPY ${ARM_TOOLCHAIN_DIR}/${TOOLCHAIN_PREFIX}objcopy CACHE INTERNAL "objcopy tool") +set(CMAKE_SIZE_UTIL ${ARM_TOOLCHAIN_DIR}/${TOOLCHAIN_PREFIX}size CACHE INTERNAL "size tool") + +set(CMAKE_FIND_ROOT_PATH ${BINUTILS_PATH}) + +set(CMAKE_CROSSCOMPILING_EMULATOR "qemu-arm -L /usr/arm-linux-gnueabihf/") diff --git a/cmake/Toolchains/arm_cortex_a15_hardfp_native.cmake b/cmake/Toolchains/arm_cortex_a15_hardfp_native.cmake new file mode 100644 index 000000000..cf0a16a0a --- /dev/null +++ b/cmake/Toolchains/arm_cortex_a15_hardfp_native.cmake @@ -0,0 +1,15 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +######################################################################## +# Toolchain file for building native on a ARM Cortex A8 w/ NEON +# Usage: cmake -DCMAKE_TOOLCHAIN_FILE= +######################################################################## +set(CMAKE_CXX_COMPILER g++) +set(CMAKE_C_COMPILER gcc) +set(CMAKE_CXX_FLAGS "-march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE) # same flags for C sources +set(CMAKE_ASM_FLAGS "${CMAKE_CXX_FLAGS} -g" CACHE STRING "" FORCE) # same flags for asm sources diff --git a/cmake/Toolchains/arm_cortex_a53_hardfp_native.cmake b/cmake/Toolchains/arm_cortex_a53_hardfp_native.cmake new file mode 100644 index 000000000..d1e1e5417 --- /dev/null +++ b/cmake/Toolchains/arm_cortex_a53_hardfp_native.cmake @@ -0,0 +1,15 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +######################################################################## +# Toolchain file for building native on a ARM Cortex A53 w/ NEON +# Usage: cmake -DCMAKE_TOOLCHAIN_FILE= +######################################################################## +set(CMAKE_CXX_COMPILER g++) +set(CMAKE_C_COMPILER gcc) +set(CMAKE_CXX_FLAGS "-march=armv8-a -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE) # same flags for C sources +set(CMAKE_ASM_FLAGS "${CMAKE_CXX_FLAGS} -mthumb -g" CACHE STRING "" FORCE) # same flags for asm sources diff --git a/cmake/Toolchains/arm_cortex_a72_hardfp_native.cmake b/cmake/Toolchains/arm_cortex_a72_hardfp_native.cmake new file mode 100644 index 000000000..fd9213450 --- /dev/null +++ b/cmake/Toolchains/arm_cortex_a72_hardfp_native.cmake @@ -0,0 +1,15 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +######################################################################## +# Toolchain file for building native on a ARM Cortex A72 w/ NEON +# Usage: cmake -DCMAKE_TOOLCHAIN_FILE= +######################################################################## +set(CMAKE_CXX_COMPILER g++) +set(CMAKE_C_COMPILER gcc) +set(CMAKE_CXX_FLAGS "-march=armv8-a -mtune=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE) # same flags for C sources +set(CMAKE_ASM_FLAGS "${CMAKE_CXX_FLAGS} -mthumb -g" CACHE STRING "" FORCE) # same flags for asm sources diff --git a/cmake/Toolchains/arm_cortex_a8_hardfp_native.cmake b/cmake/Toolchains/arm_cortex_a8_hardfp_native.cmake new file mode 100644 index 000000000..b6c3e21b0 --- /dev/null +++ b/cmake/Toolchains/arm_cortex_a8_hardfp_native.cmake @@ -0,0 +1,15 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +######################################################################## +# Toolchain file for building native on a ARM Cortex A8 w/ NEON +# Usage: cmake -DCMAKE_TOOLCHAIN_FILE= +######################################################################## +set(CMAKE_CXX_COMPILER g++) +set(CMAKE_C_COMPILER gcc) +set(CMAKE_CXX_FLAGS "-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=hard" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE) # same flags for C sources +set(CMAKE_ASM_FLAGS "${CMAKE_CXX_FLAGS} -g" CACHE STRING "" FORCE) # same flags for asm sources diff --git a/cmake/Toolchains/arm_cortex_a8_softfp_native.cmake b/cmake/Toolchains/arm_cortex_a8_softfp_native.cmake new file mode 100644 index 000000000..972051a3f --- /dev/null +++ b/cmake/Toolchains/arm_cortex_a8_softfp_native.cmake @@ -0,0 +1,15 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +######################################################################## +# Toolchain file for building native on a ARM Cortex A8 w/ NEON +# Usage: cmake -DCMAKE_TOOLCHAIN_FILE= +######################################################################## +set(CMAKE_CXX_COMPILER g++) +set(CMAKE_C_COMPILER gcc) +set(CMAKE_CXX_FLAGS "-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE) # same flags for C sources +set(CMAKE_ASM_FLAGS "${CMAKE_CXX_FLAGS} -g" CACHE STRING "" FORCE) # same flags for asm sources diff --git a/cmake/Toolchains/arm_cortex_a9_hardfp_native.cmake b/cmake/Toolchains/arm_cortex_a9_hardfp_native.cmake new file mode 100644 index 000000000..466c64205 --- /dev/null +++ b/cmake/Toolchains/arm_cortex_a9_hardfp_native.cmake @@ -0,0 +1,15 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +######################################################################## +# Toolchain file for building native on a ARM Cortex A8 w/ NEON +# Usage: cmake -DCMAKE_TOOLCHAIN_FILE= +######################################################################## +set(CMAKE_CXX_COMPILER g++) +set(CMAKE_C_COMPILER gcc) +set(CMAKE_CXX_FLAGS "-march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE) # same flags for C sources +set(CMAKE_ASM_FLAGS "${CMAKE_CXX_FLAGS} -g" CACHE STRING "" FORCE) # same flags for asm sources diff --git a/cmake/Toolchains/oe-sdk_cross.cmake b/cmake/Toolchains/oe-sdk_cross.cmake new file mode 100644 index 000000000..708674930 --- /dev/null +++ b/cmake/Toolchains/oe-sdk_cross.cmake @@ -0,0 +1,26 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +########################################################## +# Toolchain file for Open Embedded +########################################################## +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_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) diff --git a/cmake/Toolchains/raspi3.cmake b/cmake/Toolchains/raspi3.cmake new file mode 100644 index 000000000..35e4d7f9e --- /dev/null +++ b/cmake/Toolchains/raspi3.cmake @@ -0,0 +1,15 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +######################################################################## +# Toolchain file for building native on a ARM Cortex A72 w/ NEON +# Usage: cmake -DCMAKE_TOOLCHAIN_FILE= +######################################################################## +set(CMAKE_CXX_COMPILER g++) +set(CMAKE_C_COMPILER gcc) +set(CMAKE_CXX_FLAGS "-march=armv8-a -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE) # same flags for C sources +set(CMAKE_ASM_FLAGS "${CMAKE_CXX_FLAGS} -mthumb -g" CACHE STRING "" FORCE) # same flags for asm sources diff --git a/cmake/Toolchains/raspi4.cmake b/cmake/Toolchains/raspi4.cmake new file mode 100644 index 000000000..fd9213450 --- /dev/null +++ b/cmake/Toolchains/raspi4.cmake @@ -0,0 +1,15 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +######################################################################## +# Toolchain file for building native on a ARM Cortex A72 w/ NEON +# Usage: cmake -DCMAKE_TOOLCHAIN_FILE= +######################################################################## +set(CMAKE_CXX_COMPILER g++) +set(CMAKE_C_COMPILER gcc) +set(CMAKE_CXX_FLAGS "-march=armv8-a -mtune=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE) # same flags for C sources +set(CMAKE_ASM_FLAGS "${CMAKE_CXX_FLAGS} -mthumb -g" CACHE STRING "" FORCE) # same flags for asm sources diff --git a/cmake/Toolchains/zynq-7000.cmake b/cmake/Toolchains/zynq-7000.cmake new file mode 100644 index 000000000..e2da5cc33 --- /dev/null +++ b/cmake/Toolchains/zynq-7000.cmake @@ -0,0 +1,36 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + +########################################################## +# Toolchain file for Zynq-7000 devices +########################################################## + +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_VERSION 1) + +set(CMAKE_SYSROOT /home/carlesfernandez/binary) ### POINT THIS TO YOUR ROOTFS + +set(CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabihf-gcc) +set(CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabihf-g++) + +set(CMAKE_FIND_ROOT_PATH ${CMAKE_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(ZYNQ_FLAGS + "-march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a7" +) +set(CMAKE_ASM_FLAGS ${ZYNQ_FLAGS} CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS ${ZYNQ_FLAGS} CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS ${ZYNQ_FLAGS} CACHE STRING "" FORCE) + +set(CMAKE_LIBRARY_PATH + ${CMAKE_SYSROOT}/usr/lib + ${CMAKE_SYSROOT}/usr/lib/arm-linux-gnueabihf +) + +set(CMAKE_INSTALL_PREFIX ${CMAKE_SYSROOT}/usr CACHE STRING "" FORCE) diff --git a/cmake/cmake_uninstall.cmake.in b/cmake/cmake_uninstall.cmake.in index 2c34c8199..fc57491c4 100644 --- a/cmake/cmake_uninstall.cmake.in +++ b/cmake/cmake_uninstall.cmake.in @@ -1,21 +1,35 @@ +# GNSS-SDR is a Global Navigation Satellite System software-defined receiver. +# This file is part of GNSS-SDR. +# +# SPDX-FileCopyrightText: 2011-2020 C. Fernandez-Prades cfernandez(at)cttc.es +# SPDX-License-Identifier: BSD-3-Clause + 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") + message(FATAL_ERROR "Cannot find install manifest: \"@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}\"" - OUTPUT_VARIABLE rm_out - RETURN_VALUE 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}") - message(STATUS "File $ENV{DESTDIR}${file} does not exist.") - endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") -endforeach(file) \ No newline at end of file + message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") + if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + if(CMAKE_VERSION VERSION_LESS 3.17) + execute_process( + COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}" + OUTPUT_VARIABLE rm_out + RESULT_VARIABLE rm_retval + ) + else() + execute_process( + COMMAND @CMAKE_COMMAND@ -E rm "$ENV{DESTDIR}${file}" + OUTPUT_VARIABLE rm_out + RESULT_VARIABLE rm_retval + ) + endif() + if(NOT "${rm_retval}" STREQUAL 0) + message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") + endif() + else() + message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") + endif() +endforeach() diff --git a/conf/File_input/Beidou/gnss-sdr_BDS_B1I_byte.conf b/conf/File_input/Beidou/gnss-sdr_BDS_B1I_byte.conf new file mode 100644 index 000000000..e354a754d --- /dev/null +++ b/conf/File_input/Beidou/gnss-sdr_BDS_B1I_byte.conf @@ -0,0 +1,127 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=/archive/BDS3_datasets/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 +InputFilter.dump = false +InputFilter.dump_filename=/home/dmiralles/Documents/gnss-sdr/tests/signal_samples/BdsB1IStr01_fs25e6_if0_4ms.dat +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.pfa=0.01 +;Acquisition_B1.pfa=0.0000001; +Acquisition_B1.doppler_max=10000 +Acquisition_B1.doppler_step=100 +Acquisition_B1.dump=true +Acquisition_B1.dump_filename=./bds_acq +Acquisition_B1.blocking=false; +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=false; +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=false +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=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 +PVT.rinex_version=3 +PVT.rinex_output_enabled=true +PVT.gpx_output_enabled=true diff --git a/conf/File_input/Beidou/gnss-sdr_BDS_B3I_GPS_L1_CA_ibyte.conf b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_GPS_L1_CA_ibyte.conf new file mode 100644 index 000000000..f6df123ee --- /dev/null +++ b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_GPS_L1_CA_ibyte.conf @@ -0,0 +1,212 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=30000000 +GNSS-SDR.num_sources=2 + +;######### CONTROL_THREAD CONFIG ############ +ControlThread.wait_for_flowgraph=false + +;######### SIGNAL_SOURCE CONFIG ############ +;# Signal Source config for GPS, Galileo signals +SignalSource0.implementation=File_Signal_Source +SignalSource0.filename=/archive/BDS3_datasets/long/20180713_211400_3.dat +SignalSource0.item_type=ibyte +SignalSource0.sampling_frequency=10000000 +SignalSource0.samples=0 +SignalSource0.repeat=false +SignalSource0.dump=false +SignalSource0.enable_throttle_control=false + +;# Signal Source config for BDS signals +SignalSource1.implementation=File_Signal_Source +SignalSource1.filename=/archive/BDS3_datasets/long/20180713_211400_2.dat +SignalSource1.item_type=ibyte +SignalSource1.sampling_frequency=30000000 +SignalSource1.samples=0 +SignalSource1.repeat=false +SignalSource1.dump=false +SignalSource1.enable_throttle_control=false + +;######### SIGNAL_CONDITIONER CONFIG ############ +;# Signal Conditioner config for GPS, Galileo signals +SignalConditioner0.implementation=Signal_Conditioner +DataTypeAdapter0.implementation=Ibyte_To_Complex +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.70 +InputFilter0.band2_begin=0.80 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.sampling_frequency=10000000 +InputFilter0.IF=420000 +Resampler0.implementation=Direct_Resampler +Resampler0.sample_freq_in=10000000 +Resampler0.sample_freq_out=30000000 +Resampler0.item_type=gr_complex + +;# Signal Conditioner config for BDS signals +SignalConditioner1.implementation=Signal_Conditioner +DataTypeAdapter1.implementation=Ibyte_To_Complex +InputFilter1.implementation=Freq_Xlating_Fir_Filter +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex +InputFilter1.taps_item_type=float +InputFilter1.number_of_taps=5 +InputFilter1.number_of_bands=2 +InputFilter1.band1_begin=0.0 +InputFilter1.band1_end=0.70 +InputFilter1.band2_begin=0.80 +InputFilter1.band2_end=1.0 +InputFilter1.ampl1_begin=1.0 +InputFilter1.ampl1_end=1.0 +InputFilter1.ampl2_begin=0.0 +InputFilter1.ampl2_end=0.0 +InputFilter1.band1_error=1.0 +InputFilter1.band2_error=1.0 +InputFilter1.filter_type=bandpass +InputFilter1.grid_density=16 +InputFilter1.sampling_frequency=10000000 +InputFilter1.IF=1020000 +Resampler1.implementation=Pass_Through +Resampler1.sample_freq_in=30000000 +Resampler1.sample_freq_out=30000000 +Resampler1.item_type=gr_complex + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=7 +Channels_B3.count=4 +Channels.in_acquisition=11 + +;# Preparing collection for GPS satellites +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 +Channel0.signal=1C +Channel0.satellite = 2 +Channel1.signal=1C +Channel1.satellite = 5 +Channel2.signal=1C +Channel2.satellite = 25 +Channel3.signal=1C +Channel3.satellite = 31 +Channel4.signal=1C +Channel4.satellite = 24 +Channel5.signal=1C +Channel5.satellite = 6 +Channel6.signal=1C +Channel6.satellite = 29 + +;# Preparing collection for BDS satellites +Channel7.RF_channel_ID=1 +Channel8.RF_channel_ID=1 +Channel9.RF_channel_ID=1 +Channel10.RF_channel_ID=1 + +Channel7.signal=B3 +Channel7.satellite = 29 +Channel8.signal=B3 +Channel8.satellite = 19 +Channel9.signal=B3 +Channel9.satellite = 20 +Channel10.signal=B3 +Channel10.satellite = 30 + + +;######### ACQUISITION GLOBAL CONFIG ############ +;# Acquisition config for BDS signals +Acquisition_B3.implementation=BEIDOU_B3I_PCPS_Acquisition +Acquisition_B3.item_type=gr_complex +Acquisition_B3.coherent_integration_time_ms=1 +Acquisition_B3.pfa=0.01 +Acquisition_B3.doppler_max=15000 +Acquisition_B3.doppler_step=50 +Acquisition_B3.dump=false +Acquisition_B3.dump_filename=/home/dmiralles/Documents/Research/Publications/INSIDE_GNSS/bds_leg_pvt/Data/bds_b1i_acq +Acquisition_B3.blocking=false; +Acquisition_B3.use_CFAR_algorithm=true; +Acquisition_B3.bit_transition_flag = false; + +;# Acquisition config for GPS signals +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=15000 +Acquisition_1C.doppler_step=50 +Acquisition_1C.dump=true +Acquisition_1C.dump_filename=/home/dmiralles/Documents/Research/Publications/INSIDE_GNSS/bds_leg_pvt/Data/gps_l1ca_acq +Acquisition_1C.blocking=false; +Acquisition_1C.use_CFAR_algorithm=true; +Acquisition_1C.bit_transition_flag = false; + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_B3.implementation=BEIDOU_B3I_DLL_PLL_Tracking +Tracking_B3.item_type=gr_complex +Tracking_B3.pll_bw_hz=25.0; +Tracking_B3.dll_bw_hz=2.50; +Tracking_B3.dump=true; +Tracking_B3.dump_filename=/home/dmiralles/Documents/Research/Publications/INSIDE_GNSS/bds_leg_pvt/Data/bds_b1i_trk_ch_ + +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.pll_bw_hz=25.0; +Tracking_1C.dll_bw_hz=2.50; +Tracking_1C.dump=true; +Tracking_1C.dump_filename=/home/dmiralles/Documents/Research/Publications/INSIDE_GNSS/bds_leg_pvt/Data/gps_l1ca_trk_ch_ + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_B3.implementation=BEIDOU_B3I_Telemetry_Decoder +TelemetryDecoder_B3.dump=false + +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.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=true +PVT.dump_filename = /home/dmiralles/Documents/Research/Publications/INSIDE_GNSS/bds_leg_pvt/Data/pvt_l1 +PVT.kml_output_enabled = false; +PVT.xml_output_enabled = false; +PVT.gpx_output_enabled = false; +PVT.rinex_output_enabled = false; +PVT.rtcm_output_enabled = false; +PVT.nmea_output_enabled = false; +PVT.geojson_output_enabled = false; diff --git a/conf/File_input/Beidou/gnss-sdr_BDS_B3I_byte.conf b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_byte.conf new file mode 100644 index 000000000..edd60bcd8 --- /dev/null +++ b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_byte.conf @@ -0,0 +1,123 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=50000000 + +;######### CONTROL_THREAD CONFIG ############ +ControlThread.wait_for_flowgraph=false + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/archive/BDS3_datasets/BdsB3IStr01.dat +SignalSource.item_type=byte +SignalSource.sampling_frequency=50000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.enable_throttle_control=false +;SignalSource.samples=200000 + +;######### 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=50000000 +InputFilter.IF=12500000 +InputFilter.dump = false +InputFilter.dump_filename=/home/dmiralles/Documents/gnss-sdr/tests/signal_samples/BdsB3IStr01_fs50e6_if0_4ms.dat +Resampler.implementation=Pass_Through +Resampler.sample_freq_in=50000000 +Resampler.sample_freq_out=50000000 +Resampler.item_type=gr_complex + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_B3.count=10 +Channels.in_acquisition=1 +Channel.signal=B3 + +Channel0.satellite = 6; +Channel1.satellite = 23; +Channel2.satellite = 16; +Channel3.satellite = 18; +Channel4.satellite = 7; +Channel5.satellite = 1; +Channel6.satellite = 2; +Channel7.satellite = 3; +Channel8.satellite = 4; +Channel9.satellite = 5; + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_B3.implementation=BEIDOU_B3I_PCPS_Acquisition +Acquisition_B3.item_type=gr_complex +Acquisition_B3.coherent_integration_time_ms=3 +Acquisition_B3.max_dwells = 2 +Acquisition_B3.pfa=0.01 +Acquisition_B3.doppler_max=10000 +Acquisition_B3.doppler_step=100 +Acquisition_B3.dump=false +Acquisition_B3.dump_filename=./bds_acq + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_B3.implementation=BEIDOU_B3I_DLL_PLL_Tracking +Tracking_B3.item_type=gr_complex +Tracking_B3.pll_bw_hz=40.0; +Tracking_B3.dll_bw_hz=4.0; +Tracking_B3.pll_bw_narrow_hz=20.0; +Tracking_B3.dll_bw_narrow_hz=3.0; +Tracking_B3.dump=false; +Tracking_B3.dump_filename=./epl_tracking_ch_ + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_B3.implementation=BEIDOU_B3I_Telemetry_Decoder +TelemetryDecoder_B3.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=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.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 diff --git a/conf/File_input/Beidou/gnss-sdr_BDS_B3I_ibyte.conf b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_ibyte.conf new file mode 100644 index 000000000..b8d1e9cb5 --- /dev/null +++ b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_ibyte.conf @@ -0,0 +1,132 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=30000000 + +;######### CONTROL_THREAD CONFIG ############ +ControlThread.wait_for_flowgraph=false + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/archive/BDS3_datasets/long/20180713_211400_2.dat +SignalSource.item_type=ibyte +SignalSource.sampling_frequency=30000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.enable_throttle_control=false + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner +DataTypeAdapter.implementation=Ibyte_To_Complex +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.input_item_type=gr_complex +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=30000000 +InputFilter.IF=1020000 +Resampler.implementation=Pass_Through +Resampler.sample_freq_in=30000000 +Resampler.sample_freq_out=30000000 +Resampler.item_type=gr_complex + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_B3.count=4 +Channels.in_acquisition=1 +Channel.signal=B3 + +Channel0.satellite = 29; +Channel1.satellite = 19; +Channel2.satellite = 20; +Channel3.satellite = 30; + + +;Channel0.satellite = 6; +;Channel1.satellite = 7; +;Channel2.satellite = 9; +;Channel3.satellite = 16; +;Channel4.satellite = 18; +;Channel5.satellite = 1; +;Channel6.satellite = 2; +;Channel7.satellite = 3; +;Channel8.satellite = 4; +;Channel9.satellite = 5; +;Channel10.satellite = 23; +;Channel11.satellite = 25; +;Channel12.satellite = 32; + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_B3.implementation=BEIDOU_B3I_PCPS_Acquisition +Acquisition_B3.item_type=gr_complex +Acquisition_B3.coherent_integration_time_ms=1 +Acquisition_B3.max_dwells = 1 +Acquisition_B3.pfa=0.01 +;Acquisition_B3.pfa=0.0000001; +Acquisition_B3.doppler_max=10000 +Acquisition_B3.doppler_step=50 +Acquisition_B3.dump=false +Acquisition_B3.dump_filename=./bds_acq +Acquisition_B3.blocking=false; +Acquisition_B3.bit_transition_flag = false; + + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_B3.implementation=BEIDOU_B3I_DLL_PLL_Tracking +Tracking_B3.item_type=gr_complex +Tracking_B3.pll_bw_hz=25.0; +Tracking_B3.dll_bw_hz=2.50; +Tracking_B3.dump=false; +Tracking_B3.dump_filename=./epl_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_B3.implementation=BEIDOU_B3I_Telemetry_Decoder +TelemetryDecoder_B3.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=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 diff --git a/conf/File_input/Beidou/gnss-sdr_BDS_B3I_short.conf b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_short.conf new file mode 100644 index 000000000..01606f841 --- /dev/null +++ b/conf/File_input/Beidou/gnss-sdr_BDS_B3I_short.conf @@ -0,0 +1,81 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) +; 5C is the channel identifier for BeiDou B2a, both the data signal and the pilot signal + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [samples per second]. +GNSS-SDR.internal_fs_sps=30000000 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +;SignalSource.filename=/home/dmiralles/Documents/gnss-sdr/tests/signal_samples/USRP_BDS_B2a_201805171115_fs_25e6_if0e3_ishort_200ms.bin +SignalSource.filename=/archive/USRP_BDS_B3I_201805171118_fs_25e6_if0e3_ishort.bin +SignalSource.item_type=ishort +SignalSource.sampling_frequency=30000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.enable_throttle_control=false + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner +InputFilter.implementation=Pass_Through +DataTypeAdapter.implementation=Ishort_To_Complex +Resampler.implementation=Direct_Resampler +Resampler.sample_freq_in=30000000 +Resampler.sample_freq_out=30000000 +Resampler.item_type=gr_complex + +;######### CHANNELS GLOBAL CONFIG ############ +Channel.signal=B3 +Channels.in_acquisition=1 +Channels_B3.count=5; + +Channel0.satellite = 27; +Channel1.satellite = 22; +Channel2.satellite = 21; +Channel3.satellite = 28; +Channel4.satellite = 30; + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_B3.implementation=BEIDOU_B3I_PCPS_Acquisition +Acquisition_B3.item_type=gr_complex +Acquisition_B3.coherent_integration_time_ms = 1 +Acquisition_B3.max_dwells = 1 +Acquisition_B3.pfa=0.01 +Acquisition_B3.doppler_max=10000 +Acquisition_B3.doppler_step=50 +Acquisition_B3.dump=true +Acquisition_B3.dump_channel = 0; +Acquisition_B3.dump_filename=/archive/bds_b3i_acq +Acquisition_B3.blocking=false; +Acquisition_B3.bit_transition_flag = false; + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_B3.implementation= BEIDOU_B3I_DLL_PLL_Tracking; +Tracking_B3.item_type=gr_complex +Tracking_B3.early_late_space_chips=0.5 +Tracking_B3.pll_bw_hz=25.0; +Tracking_B3.dll_bw_hz=2.0; +Tracking_B3.dump=true; +Tracking_B3.dump_filename=/archive/bds_b3i_trk_ch_ + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_B3.implementation=BEIDOU_B3I_Telemetry_Decoder +TelemetryDecoder_B3.dump=true +TelemetryDecoder_B3.dump_filename=/archive/bds_b3i_tel_dec.dat + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=true; +Observables.dump_filename=/archive/bds_b3i_observables.dat + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.averaging_depth=100 +PVT.flag_averaging=true +PVT.output_rate_ms=10 +PVT.display_rate_ms=500 diff --git a/conf/File_input/GPS/gnss-sdr-L1-gaussian.conf b/conf/File_input/GPS/gnss-sdr-L1-gaussian.conf new file mode 100644 index 000000000..32b24bccc --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr-L1-gaussian.conf @@ -0,0 +1,67 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [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.pfa=0.01 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.dump=false +Acquisition_1C.dump_filename=./kalman/acq_dump + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_Gaussian_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=./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 diff --git a/conf/File_input/GPS/gnss-sdr_GPS_L1_CA_ibyte.conf b/conf/File_input/GPS/gnss-sdr_GPS_L1_CA_ibyte.conf new file mode 100644 index 000000000..6afe08ced --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_GPS_L1_CA_ibyte.conf @@ -0,0 +1,94 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=6625000 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/archive/NT1065_L1_20160923_fs6625e6_if60e3_schar.bin ; <- PUT YOUR FILE HERE +SignalSource.item_type=ibyte +;SignalSource.samples=66250000 +SignalSource.samples=0 +SignalSource.dump=false; + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner +DataTypeAdapter.implementation=Ibyte_To_Complex +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.item_type=gr_complex +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=6625000 +InputFilter.IF=60000 +Resampler.implementation=Direct_Resampler +Resampler.sample_freq_in=6625000 +Resampler.sample_freq_out=6625000 +Resampler.item_type=gr_complex + +;######### CHANNELS GLOBAL CONFIG ############ +Channel.signal=1C +Channels.in_acquisition=1 +Channels_1C.count=6 + +;######### ACQUISITION GLOBAL CONFIG ############ +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.doppler_max=10000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.dump=false; +Acquisition_1C.dump_filename=/archive/gps_acquisition.dat +;Acquisition_1C.coherent_integration_time_ms=10 + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.early_late_space_chips=0.5 +Tracking_1C.pll_bw_hz=25.0; +Tracking_1C.dll_bw_hz=3.0; +Tracking_1C.dump=false; +Tracking_1C.dump_filename=/archive/gps_tracking_ch_ + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=true; +Observables.dump_filename=/archive/gps_observables.dat + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.positioning_mode=PPP_Static +PVT.output_rate_ms=100 +PVT.display_rate_ms=500 +PVT.trop_model=Saastamoinen +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1019_rate_ms=5000 +PVT.rtcm_MT1045_rate_ms=5000 +PVT.rtcm_MT1097_rate_ms=1000 +PVT.rtcm_MT1077_rate_ms=1000 +PVT.rinex_version=3 diff --git a/conf/File_input/GPS/gnss-sdr_GPS_L1_SPIR.conf b/conf/File_input/GPS/gnss-sdr_GPS_L1_SPIR.conf new file mode 100644 index 000000000..f0a90781b --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_GPS_L1_SPIR.conf @@ -0,0 +1,137 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=4000000 + + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Spir_File_Signal_Source +SignalSource.filename=/dtalogger/signals/spir/data/20Secs/20Secs_L1.dat ; <- PUT YOUR FILE HERE +SignalSource.item_type=int +SignalSource.sampling_frequency=80000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through +DataTypeAdapter.item_type=float + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat +InputFilter.input_item_type=float +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.45 +InputFilter.band2_begin=0.55 +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=80000000 +InputFilter.IF=10164 +InputFilter.decimation_factor=20 + + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.item_type=gr_complex +Resampler.sample_freq_in=80000000 +Resampler.sample_freq_out=4000000 +Resampler.dump=false +Resampler.dump_filename=./resampler.dat + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=10 +Channels_1B.count=0 +Channels.in_acquisition=1 + +Channel.signal=1C + + +;######### CHANNEL 0 CONFIG ############ +;Channel0.satellite=20 + +;######### CHANNEL 1 CONFIG ############ +;Channel1.satellite=12 + +;######### CHANNEL 2 CONFIG ############ +;Channel2.satellite=11 + +;######### CHANNEL 3 CONFIG ############ +;Channel3.satellite=19 + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.threshold=0.005 +;Acquisition_1C.pfa=0.0001 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_min=-10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.max_dwells=5 +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.pll_bw_hz=20.0; +Tracking_1C.order=3; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./epl_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + + +;######### OBSERVABLES CONFIG ############ +;#implementation: +Observables.implementation=Hybrid_Observables +Observables.dump=false +Observables.dump_filename=./observables.dat + + +;######### PVT CONFIG ############ +;#implementation: Position Velocity and Time (PVT) implementation algorithm +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=500 +PVT.display_rate_ms=500 +PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=true; +PVT.nmea_dump_devname=/dev/pts/4 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/File_input/GPS/gnss-sdr_GPS_L1_acq_QuickSync.conf b/conf/File_input/GPS/gnss-sdr_GPS_L1_acq_QuickSync.conf new file mode 100644 index 000000000..6961b3c3f --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_GPS_L1_acq_QuickSync.conf @@ -0,0 +1,108 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=4000000 + + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/datalogger/signals/CTTC/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat ; <- PUT YOUR FILE HERE +SignalSource.item_type=ishort +SignalSource.sampling_frequency=4000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Ishort_To_Complex +DataTypeAdapter.dump=false +DataTypeAdapter.dump_filename=./data_type_adapter.dat + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Pass_Through +InputFilter.input_item_type=gr_complex +InputFilter.output_item_type=gr_complex +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.item_type=gr_complex +Resampler.sample_freq_in=4000000 +Resampler.sample_freq_out=4000000 +Resampler.dump=false +Resampler.dump_filename=./resampler.dat + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=5 +Channels.in_acquisition=1 + + +;######### ACQUISITION GLOBAL CONFIG ############_1C +Acquisition_1C.implementation=GPS_L1_CA_PCPS_QuickSync_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent-integration_time_ms=4 +Acquisition_1C.dump=true +;Acquisition_1C.dump_filename=./acq_dump.dat + + +;######### ACQUISITION CHANNELS CONFIG ###### +Acquisition_1C.implementation=GPS_L1_CA_PCPS_QuickSync_Acquisition +Acquisition_1C.threshold=0.4 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=250 + + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.pll_bw_hz=50.0; +Tracking_1C.dll_bw_hz=4.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5 +Tracking_1C.dump=false +Tracking_1C.dump_filename=./tracking_ch_ + + +;######### TELEMETRY DECODER 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.nmea_dump_filename=./gnss_sdr_pvt.nmea +PVT.flag_nmea_tty_port=true +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 +PVT.dump_filename=./PVT diff --git a/conf/File_input/GPS/gnss-sdr_GPS_L1_gr_complex.conf b/conf/File_input/GPS/gnss-sdr_GPS_L1_gr_complex.conf new file mode 100644 index 000000000..d61355a00 --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_GPS_L1_gr_complex.conf @@ -0,0 +1,98 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=4000000 + + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/datalogger/signals/CTTC/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat ; <- PUT YOUR FILE HERE +SignalSource.item_type=ishort +SignalSource.sampling_frequency=4000000 +SignalSource.freq=1575420000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +DataTypeAdapter.implementation=Ishort_To_Complex +DataTypeAdapter.dump=false +DataTypeAdapter.dump_filename=./DataTypeAdapter.dat + +InputFilter.implementation=Pass_Through +InputFilter.input_item_type=gr_complex +InputFilter.output_item_type=gr_complex + +Resampler.implementation=Pass_Through +Resampler.item_type=gr_complex + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=5 +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.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +;Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=10000 +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=true +Tracking_1C.dump_filename=epl_tracking_ch_ +Tracking_1C.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=4.0; +Tracking_1C.order=3; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./epl_tracking_c + + +;######### 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=1 +PVT.display_rate_ms=100 +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 diff --git a/conf/File_input/GPS/gnss-sdr_GPS_L1_ishort.conf b/conf/File_input/GPS/gnss-sdr_GPS_L1_ishort.conf new file mode 100644 index 000000000..3a90a518d --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_GPS_L1_ishort.conf @@ -0,0 +1,102 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=2000000 + +;######### CONTROL_THREAD CONFIG ############ +ControlThread.wait_for_flowgraph=false + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/archive/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat ; <- PUT YOUR FILE HERE +SignalSource.item_type=ishort +SignalSource.sampling_frequency=4000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Ishort_To_Complex + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Pass_Through +InputFilter.input_item_type=gr_complex +InputFilter.output_item_type=gr_complex + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Direct_Resampler +Resampler.sample_freq_in=4000000 +Resampler.sample_freq_out=2000000 +Resampler.item_type=gr_complex + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=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.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +;Acquisition_1C.pfa=0.000001 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.dump=false +Acquisition_1C.dump_filename=./acq_dump.dat +Acquisition_1C.blocking=false; + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=4.0; +Tracking_1C.order=3; +Tracking_1C.dump=false; +Tracking_1C.dump_filename=./epl_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.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=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 diff --git a/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf new file mode 100644 index 000000000..8f3a44652 --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf @@ -0,0 +1,184 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=2500000 + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Flexiband_Signal_Source +SignalSource.flag_read_file=true +SignalSource.signal_file=/datalogger/signals/Fraunhofer/L125_III1b_210s.usb ; <- PUT YOUR FILE HERE +SignalSource.item_type=gr_complex +SignalSource.firmware_file=flexiband_III-1b.bit +SignalSource.RF_channels=1 +;#frontend channels gain. Not usable yet! +SignalSource.gain1=0 +SignalSource.gain2=0 +SignalSource.gain3=0 +SignalSource.AGC=true +SignalSource.usb_packet_buffer=128 + +;######### SIGNAL_CONDITIONER 0 CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 0 CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter0.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter.dat +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.45 +InputFilter0.band2_begin=0.55 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.sampling_frequency=20000000 +InputFilter0.IF=0; +InputFilter0.decimation_factor=8 + +;######### RESAMPLER CONFIG 0 ############ +Resampler0.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 1 CONFIG ############ +SignalConditioner1.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 1 CONFIG ############ +DataTypeAdapter1.implementation=Pass_Through +DataTypeAdapter1.item_type=gr_complex + +;######### INPUT_FILTER 1 CONFIG ############ +InputFilter1.implementation=Pass_Through +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter.dat +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 1 ############ +Resampler1.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 2 CONFIG ############ +SignalConditioner2.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 2 CONFIG ############ +DataTypeAdapter2.implementation=Pass_Through +DataTypeAdapter2.item_type=gr_complex + +;######### INPUT_FILTER 2 CONFIG ############ +InputFilter2.implementation=Pass_Through +InputFilter2.dump=false +InputFilter2.dump_filename=./input_filter.dat +InputFilter2.input_item_type=gr_complex +InputFilter2.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 2 ############ +Resampler2.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=8 + +Channels.in_acquisition=1 + +;# CHANNEL CONNECTION +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 + +;#signal: +Channel.signal=1C + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.bit_transition_flag=false +Acquisition_1C.max_dwells=1 +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.extend_correlation_ms=10 +Tracking_1C.pll_bw_hz=40.0; +Tracking_1C.pll_bw_narrow_hz=35; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.dll_bw_narrow_hz=2.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=true +Tracking_1C.dump_filename=./epl_tracking_ch_ + + +;######### 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.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=false; +PVT.nmea_dump_devname=/dev/pts/4 +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf new file mode 100644 index 000000000..a543752ef --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf @@ -0,0 +1,189 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=2500000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Flexiband_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.firmware_file=flexiband_III-1a.bit +SignalSource.RF_channels=1 +;#frontend channels gain. Not usable yet! +SignalSource.gain1=0 +SignalSource.gain2=0 +SignalSource.gain3=0 +SignalSource.AGC=true +SignalSource.usb_packet_buffer=128 + +;######### SIGNAL_CONDITIONER 0 CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 0 CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter0.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter.dat +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.45 +InputFilter0.band2_begin=0.55 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.sampling_frequency=20000000 +InputFilter0.IF=-205000 +InputFilter0.decimation_factor=8 + +;######### RESAMPLER CONFIG 0 ############ +Resampler0.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 1 CONFIG ############ +SignalConditioner1.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 1 CONFIG ############ +DataTypeAdapter1.implementation=Pass_Through +DataTypeAdapter1.item_type=gr_complex + +;######### INPUT_FILTER 1 CONFIG ############ +InputFilter1.implementation=Pass_Through +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter.dat +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 1 ############ +Resampler1.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 2 CONFIG ############ +SignalConditioner2.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 2 CONFIG ############ +DataTypeAdapter2.implementation=Pass_Through +DataTypeAdapter2.item_type=gr_complex + +;######### INPUT_FILTER 2 CONFIG ############ +InputFilter2.implementation=Pass_Through +InputFilter2.dump=false +InputFilter2.dump_filename=./input_filter.dat +InputFilter2.input_item_type=gr_complex +InputFilter2.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 2 ############ +Resampler2.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=8 + +Channels.in_acquisition=1 + + +;# CHANNEL CONNECTION +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 + +;#signal: +;#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 +Channel4.signal=1C +Channel5.signal=1C +Channel6.signal=1C +Channel7.signal=1C + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.bit_transition_flag=false +Acquisition_1C.max_dwells=1 +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.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=3.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./tracking_ch_ + + +;######### 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.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=false; +PVT.nmea_dump_devname=/dev/pts/4 +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf new file mode 100644 index 000000000..b86f734d4 --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf @@ -0,0 +1,188 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=2500000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Flexiband_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.firmware_file=flexiband_III-1b.bit +SignalSource.RF_channels=1 +;#frontend channels gain. Not usable yet! +SignalSource.gain1=0 +SignalSource.gain2=0 +SignalSource.gain3=0 +;#frontend channels AGC +SignalSource.AGC=true +SignalSource.usb_packet_buffer=128 + +;######### SIGNAL_CONDITIONER 0 CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 0 CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter0.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter.dat +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.45 +InputFilter0.band2_begin=0.55 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.IF=-205000 +InputFilter0.decimation_factor=8 + +;######### RESAMPLER CONFIG 0 ############ +Resampler0.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 1 CONFIG ############ +SignalConditioner1.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 1 CONFIG ############ +DataTypeAdapter1.implementation=Pass_Through +DataTypeAdapter1.item_type=gr_complex + +;######### INPUT_FILTER 1 CONFIG ############ +InputFilter1.implementation=Pass_Through +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter.dat +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 1 ############ +Resampler1.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 2 CONFIG ############ +SignalConditioner2.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 2 CONFIG ############ +DataTypeAdapter2.implementation=Pass_Through +DataTypeAdapter2.item_type=gr_complex + +;######### INPUT_FILTER 2 CONFIG ############ +InputFilter2.implementation=Pass_Through +InputFilter2.dump=false +InputFilter2.dump_filename=./input_filter.dat +InputFilter2.input_item_type=gr_complex +InputFilter2.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 2 ############ +Resampler2.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=8 +Channels.in_acquisition=1 + + +;# CHANNEL CONNECTION +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 + +;#signal: +;#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 +Channel4.signal=1C +Channel5.signal=1C +Channel6.signal=1C +Channel7.signal=1C + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.bit_transition_flag=false +Acquisition_1C.max_dwells=1 +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.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=3.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./tracking_ch_ + + +;######### 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.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=false; +PVT.nmea_dump_devname=/dev/pts/4 +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf new file mode 100644 index 000000000..ac8157f4e --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf @@ -0,0 +1,195 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=2500000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Flexiband_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.firmware_file=flexiband_II-3b.bit +SignalSource.RF_channels=1 +;#frontend channels gain. Not usable yet! +SignalSource.gain1=0 +SignalSource.gain2=0 +SignalSource.gain3=0 +SignalSource.AGC=true +SignalSource.usb_packet_buffer=128 + +;######### SIGNAL_CONDITIONER 0 CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 0 CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter0.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter.dat +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.45 +InputFilter0.band2_begin=0.55 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.sampling_frequency=40000000 +InputFilter0.IF=-205000 +InputFilter0.decimation_factor=16 + +;######### RESAMPLER CONFIG 0 ############ +Resampler0.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 1 CONFIG ############ +SignalConditioner1.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 1 CONFIG ############ +DataTypeAdapter1.implementation=Pass_Through +DataTypeAdapter1.item_type=gr_complex + +;######### INPUT_FILTER 1 CONFIG ############ +InputFilter1.implementation=Pass_Through +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter.dat +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 1 ############ +Resampler1.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 2 CONFIG ############ +SignalConditioner2.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 2 CONFIG ############ +DataTypeAdapter2.implementation=Pass_Through +DataTypeAdapter2.item_type=gr_complex + +;######### INPUT_FILTER 2 CONFIG ############ +InputFilter2.implementation=Pass_Through +InputFilter2.dump=false +InputFilter2.dump_filename=./input_filter.dat +InputFilter2.input_item_type=gr_complex +InputFilter2.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 2 ############ +Resampler2.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=8 + +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 + +;# CHANNEL CONNECTION +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 + +;#signal: +Channel0.signal=1C +Channel1.signal=1C +Channel2.signal=1C +Channel3.signal=1C +Channel4.signal=1C +Channel5.signal=1C +Channel6.signal=1C +Channel7.signal=1C + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.bit_transition_flag=false +Acquisition_1C.max_dwells=1 +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.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=3.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./tracking_ch_ + + +;######### 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.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=false; +PVT.nmea_dump_devname=/dev/pts/4 +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf new file mode 100644 index 000000000..f919973d2 --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf @@ -0,0 +1,183 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=5000000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Flexiband_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.firmware_file=flexiband_I-1b.bit +SignalSource.RF_channels=1 +;#frontend channels gain. Not usable yet! +SignalSource.gain1=0 +SignalSource.gain2=0 +SignalSource.gain3=0 +SignalSource.AGC=true +SignalSource.usb_packet_buffer=128 + +;######### SIGNAL_CONDITIONER 0 CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 0 CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter0.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter.dat +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.45 +InputFilter0.band2_begin=0.55 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.sampling_frequency=40000000 +InputFilter0.IF=-205000 +InputFilter0.decimation_factor=8 + +;######### RESAMPLER CONFIG 0 ############ +Resampler0.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 1 CONFIG ############ +SignalConditioner1.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 1 CONFIG ############ +DataTypeAdapter1.implementation=Pass_Through +DataTypeAdapter1.item_type=gr_complex + +;######### INPUT_FILTER 1 CONFIG ############ +InputFilter1.implementation=Pass_Through +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter.dat +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 1 ############ +Resampler1.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 2 CONFIG ############ +SignalConditioner2.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 2 CONFIG ############ +DataTypeAdapter2.implementation=Pass_Through +DataTypeAdapter2.item_type=gr_complex + +;######### INPUT_FILTER 2 CONFIG ############ +InputFilter2.implementation=Pass_Through +InputFilter2.dump=false +InputFilter2.dump_filename=./input_filter.dat +InputFilter2.input_item_type=gr_complex +InputFilter2.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 2 ############ +Resampler2.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=4 +Channels.in_acquisition=1 + + +;# CHANNEL CONNECTION +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 + +;#signal: +Channel0.signal=1C +Channel1.signal=1C +Channel2.signal=1C +Channel3.signal=1C + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.bit_transition_flag=false +Acquisition_1C.max_dwells=1 +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.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=3.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./tracking_ch_ + + +;######### 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.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=false; +PVT.nmea_dump_devname=/dev/pts/4 +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf new file mode 100644 index 000000000..746330acf --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf @@ -0,0 +1,305 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=2500000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Flexiband_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.firmware_file=flexiband_III-1b.bit +SignalSource.RF_channels=2 +;#frontend channels gain. Not usable yet! +SignalSource.gain1=0 +SignalSource.gain2=0 +SignalSource.gain3=0 +SignalSource.AGC=true +SignalSource.usb_packet_buffer=128 + +;###################################################### +;######### RF CHANNEL 0 SIGNAL CONDITIONER ############ +;###################################################### + +;######### SIGNAL_CONDITIONER 0 CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 0 CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter0.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter.dat +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.45 +InputFilter0.band2_begin=0.55 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.sampling_frequency=20000000 +InputFilter0.IF=-205000 +InputFilter0.decimation_factor=8 + +;######### RESAMPLER CONFIG 0 ############ +Resampler0.implementation=Pass_Through + +;###################################################### +;######### RF CHANNEL 1 SIGNAL CONDITIONER ############ +;###################################################### + +;######### SIGNAL_CONDITIONER 1 CONFIG ############ +SignalConditioner1.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 1 CONFIG ############ +DataTypeAdapter1.implementation=Pass_Through +DataTypeAdapter1.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter1.implementation=Freq_Xlating_Fir_Filter +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter_ch1.dat +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex +InputFilter1.taps_item_type=float +InputFilter1.number_of_taps=5 +InputFilter1.number_of_bands=2 +InputFilter1.band1_begin=0.0 +InputFilter1.band1_end=0.45 +InputFilter1.band2_begin=0.55 +InputFilter1.band2_end=1.0 +InputFilter1.ampl1_begin=1.0 +InputFilter1.ampl1_end=1.0 +InputFilter1.ampl2_begin=0.0 +InputFilter1.ampl2_end=0.0 +InputFilter1.band1_error=1.0 +InputFilter1.band2_error=1.0 +InputFilter1.filter_type=bandpass +InputFilter1.grid_density=16 +InputFilter1.sampling_frequency=20000000 +InputFilter1.IF=100000 +InputFilter1.decimation_factor=8 + + +;######### RESAMPLER CONFIG 1 ############ +Resampler1.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 2 CONFIG ############ +SignalConditioner2.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 2 CONFIG ############ +DataTypeAdapter2.implementation=Pass_Through +DataTypeAdapter2.item_type=gr_complex + +;######### INPUT_FILTER 2 CONFIG ############ +InputFilter2.implementation=Pass_Through +InputFilter2.dump=false +InputFilter2.dump_filename=./input_filter.dat +InputFilter2.input_item_type=gr_complex +InputFilter2.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 2 ############ +Resampler2.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=8 +Channels_2S.count=8 +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 + + +;# CHANNEL CONNECTION +Channel0.RF_channel_ID=0 +Channel0.signal=1C + +Channel1.RF_channel_ID=0 +Channel1.signal=1C + +Channel2.RF_channel_ID=0 +Channel2.signal=1C + +Channel3.RF_channel_ID=0 +Channel3.signal=1C + +Channel4.RF_channel_ID=0 +Channel4.signal=1C + +Channel5.RF_channel_ID=0 +Channel5.signal=1C + +Channel6.RF_channel_ID=0 +Channel6.signal=1C + +Channel7.RF_channel_ID=0 +Channel7.signal=1C + + +Channel8.RF_channel_ID=1 +Channel8.signal=2S + +Channel9.RF_channel_ID=1 +Channel9.signal=2S + +Channel10.RF_channel_ID=1 +Channel10.signal=2S + +Channel11.RF_channel_ID=1 +Channel11.signal=2S + +Channel12.RF_channel_ID=1 +Channel12.signal=2S + +Channel13.RF_channel_ID=1 +Channel13.signal=2S + +Channel14.RF_channel_ID=1 +Channel14.signal=2S + +Channel15.RF_channel_ID=1 +Channel15.signal=2S + +Channel8.RF_channel_ID=1 +Channel8.signal=2S + +Channel9.RF_channel_ID=1 +Channel9.signal=2S + +Channel10.RF_channel_ID=1 +Channel10.signal=2S + +Channel11.RF_channel_ID=1 +Channel11.signal=2S + +Channel12.RF_channel_ID=1 +Channel12.signal=2S + +Channel13.RF_channel_ID=1 +Channel13.signal=2S + +Channel14.RF_channel_ID=1 +Channel14.signal=2S + +Channel15.RF_channel_ID=1 +Channel15.signal=2S + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=5000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.bit_transition_flag=false +Acquisition_1C.max_dwells=1 +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.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=3.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=true +Tracking_1C.dump_filename=./tracking_ch_ + + +;# GPS L2C M +Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition +Acquisition_2S.item_type=gr_complex +Acquisition_2S.pfa=0.01 +;Acquisition_2S.pfa=0.001 +Acquisition_2S.doppler_max=5000 +Acquisition_2S.doppler_min=-5000 +Acquisition_2S.doppler_step=30 +Acquisition_2S.max_dwells=1 +Acquisition_2S.dump=false +Acquisition_2S.dump_filename=./acq_dump.dat + +Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking +Tracking_2S.item_type=gr_complex +Tracking_2S.pll_bw_hz=1.5; +Tracking_2S.dll_bw_hz=0.3; +Tracking_2S.order=3; +Tracking_2S.early_late_space_chips=0.5; +Tracking_2S.dump=true +Tracking_2S.dump_filename=./tracking_ch_ + + +;######### TELEMETRY DECODER GPS L1 CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + + +;######### TELEMETRY DECODER GPS L2 CONFIG ############ +TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder +TelemetryDecoder_2S.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.flag_averaging=true +PVT.output_rate_ms=100 +PVT.display_rate_ms=500 +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 +PVT.dump_filename=./PVT diff --git a/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf new file mode 100644 index 000000000..7e494914e --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_bin_file_III_1b.conf @@ -0,0 +1,278 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=2500000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Flexiband_Signal_Source +SignalSource.flag_read_file=true +SignalSource.signal_file=/datalogger/signals/Fraunhofer/L125_III1b_210s.usb ; <- PUT YOUR FILE HERE +SignalSource.item_type=gr_complex +SignalSource.firmware_file=flexiband_III-1b.bit +SignalSource.RF_channels=2 +;#frontend channels gain. Not usable yet! +SignalSource.gain1=0 +SignalSource.gain2=0 +SignalSource.gain3=0 +SignalSource.AGC=true +SignalSource.usb_packet_buffer=128 + +;###################################################### +;######### RF CHANNEL 0 SIGNAL CONDITIONER ############ +;###################################################### + +;######### SIGNAL_CONDITIONER 0 CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 0 CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter0.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter.dat +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.45 +InputFilter0.band2_begin=0.55 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.sampling_frequency=20000000 +InputFilter0.IF=0 +InputFilter0.decimation_factor=8 + +;######### RESAMPLER CONFIG 0 ############ +Resampler0.implementation=Pass_Through + +;###################################################### +;######### RF CHANNEL 1 SIGNAL CONDITIONER ############ +;###################################################### + +;######### SIGNAL_CONDITIONER 1 CONFIG ############ +SignalConditioner1.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 1 CONFIG ############ +DataTypeAdapter1.implementation=Pass_Through +DataTypeAdapter1.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter1.implementation=Freq_Xlating_Fir_Filter +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter_ch1.dat +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex +InputFilter1.taps_item_type=float +InputFilter1.number_of_taps=5 +InputFilter1.number_of_bands=2 +InputFilter1.band1_begin=0.0 +InputFilter1.band1_end=0.45 +InputFilter1.band2_begin=0.55 +InputFilter1.band2_end=1.0 +InputFilter1.ampl1_begin=1.0 +InputFilter1.ampl1_end=1.0 +InputFilter1.ampl2_begin=0.0 +InputFilter1.ampl2_end=0.0 +InputFilter1.band1_error=1.0 +InputFilter1.band2_error=1.0 +InputFilter1.filter_type=bandpass +InputFilter1.grid_density=16 +InputFilter1.sampling_frequency=20000000 +InputFilter1.IF=0 +InputFilter1.decimation_factor=8 + + +;######### RESAMPLER CONFIG 1 ############ +Resampler1.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 2 CONFIG ############ +SignalConditioner2.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 2 CONFIG ############ +DataTypeAdapter2.implementation=Pass_Through +DataTypeAdapter2.item_type=gr_complex + +;######### INPUT_FILTER 2 CONFIG ############ +InputFilter2.implementation=Pass_Through +InputFilter2.dump=false +InputFilter2.dump_filename=./input_filter.dat +InputFilter2.input_item_type=gr_complex +InputFilter2.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 2 ############ +Resampler2.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############. +Channels_1C.count=2 +Channels_1B.count=4 +Channels_2S.count=4 + +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 + + +;# CHANNEL CONNECTION +Channel0.RF_channel_ID=0 +Channel1.RF_channel_ID=0 +Channel2.RF_channel_ID=1 +Channel3.RF_channel_ID=1 +Channel4.RF_channel_ID=1 +Channel5.RF_channel_ID=1 +Channel6.RF_channel_ID=0 +Channel7.RF_channel_ID=0 +Channel8.RF_channel_ID=0 +Channel9.RF_channel_ID=0 +Channel10.RF_channel_ID=1 +Channel11.RF_channel_ID=1 +Channel12.RF_channel_ID=1 +Channel13.RF_channel_ID=1 +Channel14.RF_channel_ID=1 +Channel15.RF_channel_ID=1 + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=5000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.bit_transition_flag=false +Acquisition_1C.max_dwells=1 +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=./epl_tracking_ch_ +Tracking_1C.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=1.5; +Tracking_1C.order=3; +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.pfa=0.01 +;Acquisition_2S.pfa=0.001 +Acquisition_2S.doppler_max=5000 +Acquisition_2S.doppler_min=-5000 +Acquisition_2S.doppler_step=30 +Acquisition_2S.max_dwells=1 +Acquisition_2S.dump=false +Acquisition_2S.dump_filename=./acq_dump.dat + +Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking +Tracking_2S.item_type=gr_complex +Tracking_2S.pll_bw_hz=1.5; +Tracking_2S.dll_bw_hz=0.3; +Tracking_2S.order=3; +Tracking_2S.early_late_space_chips=0.5; +Tracking_2S.dump=true +Tracking_2S.dump_filename=./epl_tracking_ch_ + + +;# GALILEO E1B +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.0000005 +Acquisition_1B.doppler_max=5000 +Acquisition_1B.doppler_step=125 +Acquisition_1B.dump=false +Acquisition_1B.dump_filename=./acq_dump.dat + + +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.order=3; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### TELEMETRY DECODER GPS L1 CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + + +;######### TELEMETRY DECODER GPS L2 CONFIG ############ +TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder +TelemetryDecoder_2S.dump=false + +;######### TELEMETRY DECODER GALILEO E1B CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.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=100 +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 +PVT.dump_filename=./PVT diff --git a/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf new file mode 100644 index 000000000..7b5609ada --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf @@ -0,0 +1,363 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=5000000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Flexiband_Signal_Source +SignalSource.flag_read_file=true +SignalSource.signal_file=/media/javier/SISTEMA/signals/fraunhofer/L125_III1b_210s.usb ; <- PUT YOUR FILE HERE +SignalSource.item_type=gr_complex +SignalSource.firmware_file=flexiband_III-1b.bit +SignalSource.RF_channels=1 +;#frontend channels gain. Not usable yet! +SignalSource.gain1=0 +SignalSource.gain2=0 +SignalSource.gain3=0 +SignalSource.AGC=true +SignalSource.usb_packet_buffer=128 + +;###################################################### +;######### RF CHANNEL 0 SIGNAL CONDITIONER ############ +;###################################################### + +;######### SIGNAL_CONDITIONER 0 CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 0 CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter0.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter_ch0.dat +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.45 +InputFilter0.band2_begin=0.55 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.sampling_frequency=20000000 +InputFilter0.IF=0 +InputFilter0.decimation_factor=4 + +;######### RESAMPLER CONFIG 0 ############ +Resampler0.implementation=Pass_Through + +;###################################################### +;######### RF CHANNEL 1 SIGNAL CONDITIONER ############ +;###################################################### + +;######### SIGNAL_CONDITIONER 1 CONFIG ############ +SignalConditioner1.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 1 CONFIG ############ +DataTypeAdapter1.implementation=Pass_Through +DataTypeAdapter1.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter1.implementation=Freq_Xlating_Fir_Filter +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter_ch1.dat +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex +InputFilter1.taps_item_type=float +InputFilter1.number_of_taps=5 +InputFilter1.number_of_bands=2 +InputFilter1.band1_begin=0.0 +InputFilter1.band1_end=0.45 +InputFilter1.band2_begin=0.55 +InputFilter1.band2_end=1.0 +InputFilter1.ampl1_begin=1.0 +InputFilter1.ampl1_end=1.0 +InputFilter1.ampl2_begin=0.0 +InputFilter1.ampl2_end=0.0 +InputFilter1.band1_error=1.0 +InputFilter1.band2_error=1.0 +InputFilter1.filter_type=bandpass +InputFilter1.grid_density=16 +InputFilter1.sampling_frequency=20000000 +InputFilter1.IF=0 +InputFilter1.decimation_factor=4 + + +;######### RESAMPLER CONFIG 1 ############ +Resampler1.implementation=Pass_Through + + +;###################################################### +;######### RF CHANNEL 2 SIGNAL CONDITIONER ############ +;###################################################### + +;######### SIGNAL_CONDITIONER 2 CONFIG ############ +SignalConditioner2.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 2 CONFIG ############ +DataTypeAdapter2.implementation=Pass_Through +DataTypeAdapter2.item_type=gr_complex + +;######### INPUT_FILTER 2 CONFIG ############ +InputFilter2.implementation=Freq_Xlating_Fir_Filter +InputFilter2.dump=false +InputFilter2.dump_filename=./input_filter_ch2.dat +InputFilter2.input_item_type=gr_complex +InputFilter2.output_item_type=gr_complex +InputFilter2.taps_item_type=float +InputFilter2.number_of_taps=5 +InputFilter2.number_of_bands=2 +InputFilter2.band1_begin=0.0 +InputFilter2.band1_end=0.45 +InputFilter2.band2_begin=0.55 +InputFilter2.band2_end=1.0 +InputFilter2.ampl1_begin=1.0 +InputFilter2.ampl1_end=1.0 +InputFilter2.ampl2_begin=0.0 +InputFilter2.ampl2_end=0.0 +InputFilter2.band1_error=1.0 +InputFilter2.band2_error=1.0 +InputFilter2.filter_type=bandpass +InputFilter2.grid_density=16 +InputFilter2.sampling_frequency=40000000 +InputFilter2.IF=0 +InputFilter2.decimation_factor=8 + + +;######### RESAMPLER CONFIG 1 ############ +Resampler2.implementation=Pass_Through + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=0 +Channels_1B.count=10 +Channels_2S.count=0 +Channels_5X.count=0 + +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 +;# CHANNEL NUMBERING ORDER: GPS L1 C/A, GPS L2 L2C (M), GALILEO E1 B, GALILEO E5a + +;# CHANNEL CONNECTION + +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=0 +Channel9.RF_channel_ID=0 +Channel10.RF_channel_ID=0 +Channel11.RF_channel_ID=0 +Channel12.RF_channel_ID=0 +Channel13.RF_channel_ID=0 +Channel14.RF_channel_ID=0 +Channel15.RF_channel_ID=0 +Channel16.RF_channel_ID=0 +Channel17.RF_channel_ID=0 +Channel18.RF_channel_ID=0 +Channel19.RF_channel_ID=0 +Channel20.RF_channel_ID=0 +Channel21.RF_channel_ID=0 +Channel22.RF_channel_ID=0 +Channel23.RF_channel_ID=0 +Channel24.RF_channel_ID=0 +Channel25.RF_channel_ID=0 +Channel26.RF_channel_ID=0 +Channel27.RF_channel_ID=0 +Channel28.RF_channel_ID=0 +Channel29.RF_channel_ID=0 +Channel30.RF_channel_ID=2 +Channel31.RF_channel_ID=2 +Channel32.RF_channel_ID=2 +Channel33.RF_channel_ID=2 +Channel34.RF_channel_ID=2 +Channel35.RF_channel_ID=2 +Channel36.RF_channel_ID=2 +Channel37.RF_channel_ID=2 +Channel38.RF_channel_ID=2 +Channel39.RF_channel_ID=2 + +;######### ACQUISITION CONFIG ###### + +;# GPS L1 CA +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=5000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.bit_transition_flag=false +Acquisition_1C.max_dwells=1 +Acquisition_1C.dump=false +Acquisition_1C.dump_filename=./acq_dump.dat + +;# Galileo E1 +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=5000 +Acquisition_1B.doppler_step=125 +Acquisition_1B.dump=false +Acquisition_1B.dump_filename=./acq_dump.dat + + +;# GPS L2C M +Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition +Acquisition_2S.item_type=gr_complex +Acquisition_2S.pfa=0.01 +;Acquisition_2S.pfa=0.001 +Acquisition_2S.doppler_max=5000 +Acquisition_2S.doppler_min=-5000 +Acquisition_2S.doppler_step=60 +Acquisition_2S.max_dwells=1 +Acquisition_2S.dump=false +Acquisition_2S.dump_filename=./acq_dump.dat + + +;# GALILEO E5a +Acquisition_5X.implementation=Galileo_E5a_Noncoherent_IQ_Acquisition_CAF +Acquisition_5X.item_type=gr_complex +Acquisition_5X.coherent_integration_time_ms=1 +Acquisition_5X.threshold=0.009 +Acquisition_5X.doppler_max=5000 +Acquisition_5X.doppler_step=125 +Acquisition_5X.bit_transition_flag=false +Acquisition_5X.max_dwells=1 +Acquisition_5X.CAF_window_hz=0 ; **Only for E5a** Resolves doppler ambiguity averaging the specified BW in the winner code delay. If set to 0 CAF filter is desactivated. Recommended value 3000 Hz +Acquisition_5X.Zero_padding=0 ; **Only for E5a** Avoids power loss and doppler ambiguity in bit transitions by correlating one code with twice the input data length, ensuring that at least one full code is present without transitions. If set to 1 it is ON, if set to 0 it is OFF. +Acquisition_5X.dump=false +Acquisition_5X.dump_filename=./acq_dump.dat + + +;######### TRACKING CONFIG ############ +;######### GPS L1 C/A GENERIC TRACKING CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=3.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./epl_tracking_ch_ + + +;######### GALILEO E1 TRK 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.dll_bw_hz=2.0; +Tracking_1B.order=3; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### GPS L2C GENERIC TRACKING CONFIG ############ +Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking +Tracking_2S.item_type=gr_complex +Tracking_2S.pll_bw_hz=2.0; +Tracking_2S.dll_bw_hz=0.25; +Tracking_2S.order=2; +Tracking_2S.early_late_space_chips=0.5; +Tracking_2S.dump=false +Tracking_2S.dump_filename=./tracking_ch_ + + +;######### GALILEO E5 TRK CONFIG ############ +Tracking_5X.implementation=Galileo_E5a_DLL_PLL_Tracking +Tracking_5X.item_type=gr_complex +Tracking_5X.pll_bw_hz_init=20.0; **Only for E5a** PLL loop filter bandwidth during initialization [Hz] +Tracking_5X.dll_bw_hz_init=20.0; **Only for E5a** DLL loop filter bandwidth during initialization [Hz] +Tracking_5X.ti_ms=1; **Only for E5a** loop filter integration time after initialization (secondary code delay search)[ms] +Tracking_5X.pll_bw_hz=20.0; +Tracking_5X.dll_bw_hz=20.0; +Tracking_5X.order=2; +Tracking_5X.early_late_space_chips=0.5; +Tracking_5X.dump=false +Tracking_5X.dump_filename=./tracking_ch_ + + +;######### TELEMETRY DECODER CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.dump=false + +TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder +TelemetryDecoder_2S.dump=false + +TelemetryDecoder_5X.implementation=Galileo_E5a_Telemetry_Decoder +TelemetryDecoder_5X.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=100 +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 +PVT.dump_filename=./PVT diff --git a/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.conf b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.conf new file mode 100644 index 000000000..0e0f9f289 --- /dev/null +++ b/conf/File_input/GPS/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b_real.conf @@ -0,0 +1,258 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=5000000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Flexiband_Signal_Source +SignalSource.flag_read_file=true +SignalSource.signal_file=/home/javier/signals/20140923_20-24-17_L125_roof_210s.usb ; <- PUT YOUR FILE HERE +SignalSource.item_type=gr_complex +SignalSource.firmware_file=flexiband_III-1b.bit +SignalSource.RF_channels=2 +;#frontend channels gain. Not usable yet! +SignalSource.gain1=0 +SignalSource.gain2=0 +SignalSource.gain3=0 +SignalSource.AGC=true +SignalSource.usb_packet_buffer=128 + +;###################################################### +;######### RF CHANNEL 0 SIGNAL CONDITIONER ############ +;###################################################### + +;######### SIGNAL_CONDITIONER 0 CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 0 CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter0.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter_ch0.dat +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.45 +InputFilter0.band2_begin=0.55 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.IF=0 +InputFilter0.decimation_factor=4 + +;######### RESAMPLER CONFIG 0 ############ +Resampler0.implementation=Pass_Through + +;###################################################### +;######### RF CHANNEL 1 SIGNAL CONDITIONER ############ +;###################################################### + +;######### SIGNAL_CONDITIONER 1 CONFIG ############ +SignalConditioner1.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 1 CONFIG ############ +DataTypeAdapter1.implementation=Pass_Through +DataTypeAdapter1.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter1.implementation=Freq_Xlating_Fir_Filter +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter_ch1.dat +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex +InputFilter1.taps_item_type=float +InputFilter1.number_of_taps=5 +InputFilter1.number_of_bands=2 +InputFilter1.band1_begin=0.0 +InputFilter1.band1_end=0.45 +InputFilter1.band2_begin=0.55 +InputFilter1.band2_end=1.0 +InputFilter1.ampl1_begin=1.0 +InputFilter1.ampl1_end=1.0 +InputFilter1.ampl2_begin=0.0 +InputFilter1.ampl2_end=0.0 +InputFilter1.band1_error=1.0 +InputFilter1.band2_error=1.0 +InputFilter1.filter_type=bandpass +InputFilter1.grid_density=16 +InputFilter1.sampling_frequency=20000000 +InputFilter1.IF=0 +InputFilter1.decimation_factor=4 + + +;######### RESAMPLER CONFIG 1 ############ +Resampler1.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 2 CONFIG ############ +SignalConditioner2.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 2 CONFIG ############ +DataTypeAdapter2.implementation=Pass_Through +DataTypeAdapter2.item_type=gr_complex + +;######### INPUT_FILTER 2 CONFIG ############ +InputFilter2.implementation=Pass_Through +InputFilter2.dump=false +InputFilter2.dump_filename=./input_filter.dat +InputFilter2.input_item_type=gr_complex +InputFilter2.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 2 ############ +Resampler2.implementation=Pass_Through + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=10 +Channels_2S.count=4 + +;#GPS.prns=7,8 + +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 +;# CHANNEL NUMBERING ORDER: GPS L1 C/A, GPS L2 L2C (M), GALILEO E1 B, GALILEO E5a + +;# CHANNEL CONNECTION +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=0 +Channel9.RF_channel_ID=0 +Channel10.RF_channel_ID=1 +Channel11.RF_channel_ID=1 +Channel12.RF_channel_ID=1 +Channel13.RF_channel_ID=1 +Channel14.RF_channel_ID=1 +Channel15.RF_channel_ID=1 +Channel16.RF_channel_ID=1 +Channel17.RF_channel_ID=1 +Channel18.RF_channel_ID=1 +Channel19.RF_channel_ID=1 + + +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=5000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.bit_transition_flag=false +Acquisition_1C.max_dwells=1 +Acquisition_1C.dump=false +Acquisition_1C.dump_filename=./acq_dump.dat + + +;# GPS L2C M +Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition +Acquisition_2S.item_type=gr_complex +Acquisition_2S.pfa=0.01 +;Acquisition_2S.pfa=0.001 +Acquisition_2S.doppler_max=5000 +Acquisition_2S.doppler_min=-5000 +Acquisition_2S.doppler_step=60 +Acquisition_2S.max_dwells=1 +Acquisition_2S.dump=false +Acquisition_2S.dump_filename=./acq_dump.dat + + +;######### TRACKING CONFIG ############ +;######### GPS L1 C/A GENERIC TRACKING CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=3.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./epl_tracking_ch_ + + +;######### GPS L2C GENERIC TRACKING CONFIG ############ +Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking +Tracking_2S.item_type=gr_complex +Tracking_2S.pll_bw_hz=2.0; +Tracking_2S.dll_bw_hz=0.25; +Tracking_2S.order=2; +Tracking_2S.early_late_space_chips=0.5; +Tracking_2S.dump=false +Tracking_2S.dump_filename=./tracking_ch_ + + +;######### TELEMETRY DECODER CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + + +TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder +TelemetryDecoder_2S.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=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=100 +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 +PVT.dump_filename=./PVT diff --git a/conf/File_input/Galileo/gnss-sdr_Galileo_E1_acq_QuickSync.conf b/conf/File_input/Galileo/gnss-sdr_Galileo_E1_acq_QuickSync.conf new file mode 100644 index 000000000..5146a4f1b --- /dev/null +++ b/conf/File_input/Galileo/gnss-sdr_Galileo_E1_acq_QuickSync.conf @@ -0,0 +1,100 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=4000000 + + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/datalogger/signals/CTTC/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat ; <- PUT YOUR FILE HERE +SignalSource.item_type=ishort +SignalSource.sampling_frequency=4000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Ishort_To_Complex +DataTypeAdapter.dump=false +DataTypeAdapter.dump_filename=./data_type_adapter.dat + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Pass_Through + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.dump=false +Resampler.dump_filename=./resampler.dat +Resampler.item_type=gr_complex + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1B.count=4 +Channels.in_acquisition=1 +Channel.signal=1B + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1B.implementation=Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition +Acquisition_1B.item_type=gr_complex +Acquisition_1B.coherent_integration_time_ms=4 +Acquisition_1B.threshold=0.05 +Acquisition_1B.doppler_max=15000 +Acquisition_1B.doppler_step=125 +Acquisition_1B.coherent_integration_time_ms=8 +Acquisition_1B.cboc=false +Acquisition_1B.dump=false +Acquisition_1B.dump_filename=./acq_dump.dat + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking +Tracking_1B.item_type=gr_complex +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; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + +;######### TELEMETRY DECODER CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.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=false +PVT.dump_filename=./PVT +PVT.dump_filename=./PVT +PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=true; +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 diff --git a/conf/File_input/Galileo/gnss-sdr_Galileo_E1_ishort.conf b/conf/File_input/Galileo/gnss-sdr_Galileo_E1_ishort.conf new file mode 100644 index 000000000..2a9fedb8d --- /dev/null +++ b/conf/File_input/Galileo/gnss-sdr_Galileo_E1_ishort.conf @@ -0,0 +1,109 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=4000000 + + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/datalogger/signals/CTTC/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat ; <- PUT YOUR FILE HERE +SignalSource.item_type=ishort +SignalSource.sampling_frequency=4000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.enable_throttle_control=true + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Ishort_To_Complex + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Pass_Through +InputFilter.input_item_type=gr_complex +InputFilter.output_item_type=gr_complex + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.item_type=gr_complex +Resampler.sample_freq_in=4000000 +Resampler.sample_freq_out=4000000 +Resampler.dump=false +Resampler.dump_filename=./resampler.dat + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1B.count=8 +Channels.in_acquisition=1 +Channel.signal=1B + + +;######### ACQUISITION GLOBAL 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.00001 +Acquisition_1B.doppler_max=15000 +Acquisition_1B.doppler_step=125 +Acquisition_1B.cboc=false +Acquisition_1B.dump=false +Acquisition_1B.dump_filename=./acq_dump.dat +Acquisition_1B.blocking=false + + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking +Tracking_1B.item_type=gr_complex +Tracking_1B.dump=true +Tracking_1B.dump_filename=./veml_tracking_ch_ +Tracking_1B.pll_bw_hz=20.0; +Tracking_1B.dll_bw_hz=3.0; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.track_pilot=true +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### TELEMETRY DECODER CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.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.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=true +PVT.nmea_dump_devname=/dev/pts/4 +PVT.flag_rtcm_server=true; +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1045_rate_ms=5000 +PVT.rtcm_MSM_rate_ms=1000 +PVT.flag_rtcm_tty_port=false; +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/File_input/Galileo/gnss-sdr_Galileo_E1_nsr.conf b/conf/File_input/Galileo/gnss-sdr_Galileo_E1_nsr.conf new file mode 100644 index 000000000..0b2dffd9b --- /dev/null +++ b/conf/File_input/Galileo/gnss-sdr_Galileo_E1_nsr.conf @@ -0,0 +1,127 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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 ############ +SignalSource.implementation=Nsr_File_Signal_Source +SignalSource.filename=/datalogger/signals/ifen/E1L1_FE0_Band0.stream ; <- PUT YOUR FILE HERE +SignalSource.item_type=byte +SignalSource.sampling_frequency=20480000 +SignalSource.samples=0 ; 0 means the entire file +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through +DataTypeAdapter.item_type=float + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.input_item_type=float +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.45 +InputFilter.band2_begin=0.55 +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=20480000 +InputFilter.IF=5499998.47412109 +InputFilter.decimation_factor=8 +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1B.count=8 +Channels.in_acquisition=1 +Channel.signal=1B + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition +Acquisition_1B.item_type=gr_complex +Acquisition_1B.coherent_integration_time_ms=4 +Acquisition_1B.pfa=0.0000008 +Acquisition_1B.doppler_max=15000 +Acquisition_1B.doppler_step=125 +Acquisition_1B.cboc=false ; This option allows you to choose between acquiring with CBOC signal [true] or sinboc(1,1) signal [false]. Use only if GNSS-SDR.internal_fs_sps is greater than or equal to 6138000 +Acquisition_1B.dump=false +Acquisition_1B.dump_filename=./acq_dump.dat + + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking +Tracking_1B.item_type=gr_complex +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; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### TELEMETRY DECODER CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.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=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=true +PVT.dump_filename=./PVT +PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea +PVT.flag_nmea_tty_port=true +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 diff --git a/conf/File_input/Galileo/gnss-sdr_Galileo_E5a.conf b/conf/File_input/Galileo/gnss-sdr_Galileo_E5a.conf new file mode 100644 index 000000000..7ac27534e --- /dev/null +++ b/conf/File_input/Galileo/gnss-sdr_Galileo_E5a.conf @@ -0,0 +1,121 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=32000000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +;GNSS-SDR.SUPL_gps_enabled=false +;GNSS-SDR.SUPL_read_gps_assistance_xml=false +;GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +;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_MNC=5 +;GNSS-SDR.SUPL_LAC=0x59e2 +;GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/datalogger/signals/ifen/32MS_complex.dat ; <- PUT YOUR FILE HERE +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=32000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Pass_Through + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_5X.count=1 +Channels.in_acquisition=1 + +;######### SPECIFIC CHANNELS CONFIG ###### +;#The following options are specific to each channel and overwrite the generic options + +;######### CHANNEL 0 CONFIG ############ +;Channel0.satellite=19 + +;######### CHANNEL 1 CONFIG ############ +;Channel1.satellite=12 + +;######### CHANNEL 2 CONFIG ############ +;Channel2.satellite=11 + +;######### CHANNEL 3 CONFIG ############ + +;Channel3.system=Galileo +;Channel3.signal=5Q +;Channel3.satellite=20 + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_5X.implementation=Galileo_E5a_Noncoherent_IQ_Acquisition_CAF +Acquisition_5X.item_type=gr_complex +Acquisition_5X.coherent_integration_time_ms=1 +Acquisition_5X.pfa=0.01 +Acquisition_5X.pfa=0.0003 +Acquisition_5X.doppler_max=10000 +Acquisition_5X.doppler_step=250 +Acquisition_5X.bit_transition_flag=false +Acquisition_5X.max_dwells=1 +Acquisition_5X.CAF_window_hz=0 +Acquisition_5X.Zero_padding=0 +Acquisition_5X.dump=false +Acquisition_5X.dump_filename=./acq_dump.dat + + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_5X.implementation=Galileo_E5a_DLL_PLL_Tracking +Tracking_5X.item_type=gr_complex +Tracking_5X.pll_bw_hz=20.0; +Tracking_5X.dll_bw_hz=20.0; +Tracking_5X.pll_bw_narrow_hz=2.0; +Tracking_5X.dll_bw_narrow_hz=5.0; +Tracking_5X.order=2; +Tracking_5X.early_late_space_chips=0.5; +Tracking_5X.dump=false +Tracking_5X.dump_filename=./tracking_ch_ + + +;######### TELEMETRY DECODER CONFIG ############ +TelemetryDecoder_5X.implementation=Galileo_E5a_Telemetry_Decoder +TelemetryDecoder_5X.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=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.display_rate_ms=500 +PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=true; +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 +PVT.dump_filename=./PVT diff --git a/conf/File_input/Galileo/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf b/conf/File_input/Galileo/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf new file mode 100644 index 000000000..75dd5981a --- /dev/null +++ b/conf/File_input/Galileo/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf @@ -0,0 +1,157 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=50000000 + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +;GNSS-SDR.SUPL_gps_enabled=false +;GNSS-SDR.SUPL_read_gps_assistance_xml=false +;GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +;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_MNC=5 +;GNSS-SDR.SUPL_LAC=0x59e2 +;GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/datalogger/signals/ifen/Galileo_E5ab_IFEN_CTTC_run1.dat ; <- PUT YOUR FILE HERE +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=50000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.input_item_type=gr_complex +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.45 +InputFilter.band2_begin=0.55 +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=50000000 +InputFilter.IF=-15345000 +InputFilter.decimation_factor=1 +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.dump=false +Resampler.dump_filename=./resampler.dat + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_5X.count=8 +Channels.in_acquisition=1 +Channel.signal=5X + +;######### SPECIFIC CHANNELS CONFIG ###### +;#The following options are specific to each channel and overwrite the generic options + +;######### CHANNEL 0 CONFIG ############ +Channel0.signal=5X +;Channel0.satellite=19 +;Channel0.repeat_satellite=true + +;######### CHANNEL 1 CONFIG ############ +Channel1.signal=5X +;Channel1.satellite=12 + +;######### CHANNEL 2 CONFIG ############ +Channel2.signal=5X +;Channel2.satellite=11 + +;######### CHANNEL 3 CONFIG ############ +Channel3.signal=5X +;Channel3.satellite=20 + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_5X.implementation=Galileo_E5a_Noncoherent_IQ_Acquisition_CAF +Acquisition_5X.item_type=gr_complex +Acquisition_5X.coherent_integration_time_ms=1 +Acquisition_5X.threshold=0.002 +Acquisition_5X.doppler_max=10000 +Acquisition_5X.doppler_step=250 +Acquisition_5X.bit_transition_flag=false +Acquisition_5X.max_dwells=1 +Acquisition_5X.CAF_window_hz=0 ; **Only for E5a** Resolves doppler ambiguity averaging the specified BW in the winner code delay. If set to 0 CAF filter is desactivated. Recommended value 3000 Hz +Acquisition_5X.Zero_padding=0 ; **Only for E5a** Avoids power loss and doppler ambiguity in bit transitions by correlating one code with twice the input data length, ensuring that at least one full code is present without transitions. If set to 1 it is ON, if set to 0 it is OFF. +Acquisition_5X.dump=false +Acquisition_5X.dump_filename=./acq_dump.dat + + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_5X.implementation=Galileo_E5a_DLL_PLL_Tracking +Tracking_5X.item_type=gr_complex +Tracking_5X.pll_bw_hz=20.0; +Tracking_5X.dll_bw_hz=20.0; +Tracking_5X.pll_bw_narrow_hz=20.0; +Tracking_5X.dll_bw_narrow_hz=20.0; +Tracking_5X.order=2; +Tracking_5X.early_late_space_chips=0.5; +Tracking_5X.dump=false +Tracking_5X.dump_filename=./tracking_ch_ + + +;######### TELEMETRY DECODER CONFIG ############ +TelemetryDecoder_5X.implementation=Galileo_E5a_Telemetry_Decoder +TelemetryDecoder_5X.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=OFF ; options: OFF, Broadcast, SBAS, Iono-Free-LC, Estimate_STEC, IONEX +PVT.trop_model=OFF ; options: OFF, Saastamoinen, SBAS, Estimate_ZTD, Estimate_ZTD_Grad +PVT.output_rate_ms=100 +PVT.dump=false +PVT.dump_filename=./PVT +PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea +PVT.flag_nmea_tty_port=true +PVT.nmea_dump_devname=/dev/pts/4 +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 diff --git a/conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_byte.conf b/conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_byte.conf new file mode 100644 index 000000000..638a045d6 --- /dev/null +++ b/conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_byte.conf @@ -0,0 +1,141 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=20000000 + + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/media/javier/SISTEMA/signals/fraunhofer/L125_III1b_210s_L1.bin ; <- PUT YOUR FILE HERE +SignalSource.item_type=byte +SignalSource.sampling_frequency=20000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Ibyte_To_Complex + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Pass_Through + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=0 +Channels_1B.count=8 + +Channels.in_acquisition=1 + +Channel1.signal=1B +Channel2.signal=1B +Channel3.signal=1B +Channel4.signal=1B +Channel5.signal=1B +Channel6.signal=1B +Channel7.signal=1B +Channel8.signal=1B +Channel9.signal=1B +Channel10.signal=1B +Channel11.signal=1B +Channel12.signal=1B +Channel13.signal=1B +Channel14.signal=1B +Channel15.signal=1B + + +;######### GPS ACQUISITION CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.scoherent_integration_time_ms=1 +Acquisition_1C.threshold=2.5 +Acquisition_1C.doppler_max=5000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.dump=false +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.acquire_pilot=true +Acquisition_1B.threshold=2.5 +Acquisition_1B.doppler_max=5000 +Acquisition_1B.doppler_step=125 +Acquisition_1B.bit_transition_flag=true +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.item_type=gr_complex +Tracking_1C.pll_bw_hz=30.0; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.order=3; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./epl_tracking_ch_ + + +;######### TRACKING GALILEO CONFIG ############ +Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking +Tracking_1B.item_type=gr_complex +Tracking_1B.track_pilot=true +Tracking_1B.pll_bw_hz=4.0; +Tracking_1B.dll_bw_hz=0.5; +Tracking_1B.pll_bw_narrow_hz=2.0; +Tracking_1B.dll_bw_narrow_hz=0.25; +Tracking_1B.extend_correlation_symbols=4; +Tracking_1B.order=3; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.early_late_space_narrow_chips=0.06; +Tracking_1B.very_early_late_space_narrow_chips=0.25; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + +;######### TELEMETRY DECODER GALILEO CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.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.flag_rtcm_server=false +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_labsat.conf b/conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_labsat.conf new file mode 100644 index 000000000..cf17d5140 --- /dev/null +++ b/conf/File_input/Galileo/gnss-sdr_galileo_E1_extended_correlator_labsat.conf @@ -0,0 +1,169 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; You can define your own receiver and invoke it by doing +; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf +; + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=5456000 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Labsat_Signal_Source +SignalSource.selected_channel=1 +;#filename: path to file with the captured GNSS signal samples to be processed +;# Labsat sile source automatically increments the file name when the signal is split in several files +;# the adapter adds "_0000.LS3" to this base path and filename. Next file will be "_0001.LS3" and so on +;# in this example, the first file complete path will be ../signals/GPS_025_0000.LS3 +SignalSource.filename=../signals/GPS_025 ; <- PUT YOUR FILE HERE +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=16368000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through +DataTypeAdapter.item_type=gr_complex + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat + +InputFilter.input_item_type=gr_complex +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.45 +InputFilter.band2_begin=0.55 +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=16368000 +InputFilter.IF=0 +InputFilter.decimation_factor=3 + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=0 +Channels_1B.count=6 +Channels.in_acquisition=1 + +Channel0.signal=1B +Channel1.signal=1B +Channel2.signal=1B +Channel3.signal=1B +Channel4.signal=1B +Channel5.signal=1B +Channel6.signal=1B +Channel7.signal=1B +Channel8.signal=1B +Channel9.signal=1B +Channel10.signal=1B +Channel11.signal=1B +Channel12.signal=1B +Channel13.signal=1B +Channel14.signal=1B +Channel15.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=2.5 +Acquisition_1C.doppler_max=5000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.dump=false +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.acquire_pilot=true +Acquisition_1B.threshold=2.5 +Acquisition_1B.doppler_max=5000 +Acquisition_1B.doppler_step=125 +Acquisition_1B.bit_transition_flag=true +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.item_type=gr_complex +Tracking_1C.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.order=3; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./epl_tracking_ch_ + +;######### TRACKING GALILEO CONFIG ############ +Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking +Tracking_1B.item_type=gr_complex +Tracking_1B.track_pilot=true +Tracking_1B.pll_bw_hz=7.5; +Tracking_1B.dll_bw_hz=0.5; +Tracking_1B.pll_bw_narrow_hz=2.5; +Tracking_1B.dll_bw_narrow_hz=0.25; +Tracking_1B.extend_correlation_symbols=4; +Tracking_1B.order=3; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.early_late_space_narrow_chips=0.15; +Tracking_1B.very_early_late_space_narrow_chips=0.30; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + +;######### TELEMETRY DECODER GALILEO CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.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=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.display_rate_ms=500; +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 diff --git a/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_GPS_L1_CA_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_GPS_L1_CA_ibyte.conf new file mode 100644 index 000000000..12378e46f --- /dev/null +++ b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_GPS_L1_CA_ibyte.conf @@ -0,0 +1,142 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=6625000 +GNSS-SDR.num_sources=2 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource0.implementation=File_Signal_Source +SignalSource0.filename=./NT1065_L1_20160923_fs6625e6_if60e3_schar.bin ; <- PUT YOUR FILE HERE +SignalSource0.item_type=ibyte +SignalSource0.sampling_frequency=6625000 +SignalSource0.samples=0 +SignalSource0.dump=false; +SignalSource0.dump_filename=/archive/signal_glonass.bin + +SignalSource1.implementation=File_Signal_Source +SignalSource1.filename=./NT1065_GLONASS_L1_20160923_fs6625e6_if0e3_schar.bin ; <- PUT YOUR FILE HERE +SignalSource1.item_type=ibyte +SignalSource1.sampling_frequency=6625000 +SignalSource1.samples=0 +SignalSource1.dump=false; +SignalSource1.dump_filename=/archive/signal_glonass.bin + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner +DataTypeAdapter0.implementation=Ibyte_To_Complex +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.70 +InputFilter0.band2_begin=0.80 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.sampling_frequency=6625000 +InputFilter0.IF=60000 +Resampler0.implementation=Direct_Resampler +Resampler0.sample_freq_in=6625000 +Resampler0.sample_freq_out=6625000 +Resampler0.item_type=gr_complex + +SignalConditioner1.implementation=Signal_Conditioner +DataTypeAdapter1.implementation=Ibyte_To_Complex +InputFilter1.implementation=Pass_Through +InputFilter1.item_type=gr_complex +Resampler1.implementation=Pass_Through +Resampler1.item_type=gr_complex + +;######### CHANNELS GLOBAL CONFIG ############ +Channels.in_acquisition=1 +Channels_1G.count=5 +Channels_1C.count=5 + +;# Defining GLONASS satellites +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=1 +Channel6.RF_channel_ID=1 +Channel7.RF_channel_ID=1 +Channel8.RF_channel_ID=1 +Channel9.RF_channel_ID=1 + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.threshold=0.0 +Acquisition_1C.pfa=0.00001 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.dump=false; +Acquisition_1C.dump_filename=/archive/gps_acquisition.dat +;Acquisition_1C.coherent_integration_time_ms=10 + +Acquisition_1G.implementation=GLONASS_L1_CA_PCPS_Acquisition +Acquisition_1G.item_type=gr_complex +Acquisition_1G.threshold=0.0 +Acquisition_1G.pfa=0.00001 +Acquisition_1G.doppler_max=10000 +Acquisition_1G.doppler_step=250 +Acquisition_1G.dump=false; +Acquisition_1G.dump_filename=/archive/glo_acquisition.dat +;Acquisition_1G.coherent_integration_time_ms=10 + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.early_late_space_chips=0.5 +Tracking_1C.pll_bw_hz=20.0; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.dump=false; +Tracking_1C.dump_filename=/archive/gps_tracking_ch_ + +Tracking_1G.implementation=GLONASS_L1_CA_DLL_PLL_Tracking +Tracking_1G.item_type=gr_complex +Tracking_1G.early_late_space_chips=0.5 +Tracking_1G.pll_bw_hz=25.0; +Tracking_1G.dll_bw_hz=3.0; +Tracking_1G.dump=false; +Tracking_1G.dump_filename=/archive/glo_tracking_ch_ + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1G.implementation=GLONASS_L1_CA_Telemetry_Decoder + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=false; +Observables.dump_filename=/archive/gnss_observables.dat + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.output_rate_ms=100 +PVT.display_rate_ms=500 +PVT.trop_model=Saastamoinen +PVT.flag_rtcm_server=false +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1019_rate_ms=5000 +PVT.rtcm_MT1045_rate_ms=5000 +PVT.rtcm_MT1097_rate_ms=1000 +PVT.rtcm_MT1077_rate_ms=1000 +PVT.rinex_version=2 diff --git a/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_GPS_L2C_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_GPS_L2C_ibyte.conf new file mode 100644 index 000000000..8d37347c8 --- /dev/null +++ b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_GPS_L2C_ibyte.conf @@ -0,0 +1,143 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=6625000 +GNSS-SDR.num_sources=2 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource0.implementation=File_Signal_Source +SignalSource0.filename=/archive/NT1065_L2_20160923_fs6625e6_if60e3_schar.bin ; <- PUT YOUR FILE HERE +SignalSource0.item_type=ibyte +SignalSource0.sampling_frequency=6625000 +SignalSource0.samples=0 +SignalSource0.dump=false; +SignalSource0.dump_filename=/archive/signal_glonass.bin + +SignalSource1.implementation=File_Signal_Source +SignalSource1.filename=/archive/NT1065_GLONASS_L1_20160923_fs6625e6_if0e3_schar.bin ; <- PUT YOUR FILE HERE +SignalSource1.item_type=ibyte +SignalSource1.sampling_frequency=6625000 +SignalSource1.samples=0 +SignalSource1.dump=false; +SignalSource1.dump_filename=/archive/signal_glonass.bin + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner +DataTypeAdapter0.implementation=Ibyte_To_Complex +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.70 +InputFilter0.band2_begin=0.80 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.sampling_frequency=6625000 +InputFilter0.IF=60000 +Resampler0.implementation=Pass_Through +Resampler0.item_type=gr_complex + +SignalConditioner1.implementation=Signal_Conditioner +DataTypeAdapter1.implementation=Ibyte_To_Complex +InputFilter1.implementation=Pass_Through +InputFilter1.item_type=gr_complex +Resampler1.implementation=Pass_Through +Resampler1.item_type=gr_complex + +;######### CHANNELS GLOBAL CONFIG ############ +Channels.in_acquisition=5 +Channels_2S.count=5 +Channels_1G.count=5 + +;# Defining GLONASS satellites +Channel0.RF_channel_ID=0 +Channel0.signal=2S +Channel1.RF_channel_ID=0 +Channel1.signal=2S +Channel2.RF_channel_ID=0 +Channel2.signal=2S +Channel3.RF_channel_ID=0 +Channel3.signal=2S +Channel4.RF_channel_ID=0 +Channel4.signal=2S +Channel5.RF_channel_ID=1 +Channel6.RF_channel_ID=1 +Channel7.RF_channel_ID=1 +Channel8.RF_channel_ID=1 +Channel9.RF_channel_ID=1 + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition +Acquisition_2S.item_type=gr_complex +Acquisition_2S.threshold=0.0 +Acquisition_2S.pfa=0.00001 +Acquisition_2S.doppler_max=10000 +Acquisition_2S.doppler_step=60 +Acquisition_2S.max_dwells=1 + +Acquisition_1G.implementation=GLONASS_L1_CA_PCPS_Acquisition +Acquisition_1G.item_type=gr_complex +Acquisition_1G.threshold=0.0 +Acquisition_1G.pfa=0.00001 +Acquisition_1G.doppler_max=10000 +Acquisition_1G.doppler_step=250 +Acquisition_1G.dump=false; +Acquisition_1G.dump_filename=/archive/glo_acquisition.dat + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking +Tracking_2S.item_type=gr_complex +Tracking_2S.early_late_space_chips=0.5 +Tracking_2S.pll_bw_hz=2.0; +Tracking_2S.dll_bw_hz=0.250; +Tracking_2S.order=2; +Tracking_2S.dump=false; +Tracking_2S.dump_filename=/archive/gps_tracking_ch_ + +Tracking_1G.implementation=GLONASS_L1_CA_DLL_PLL_Tracking +Tracking_1G.item_type=gr_complex +Tracking_1G.early_late_space_chips=0.5 +Tracking_1G.pll_bw_hz=25.0; +Tracking_1G.dll_bw_hz=3.0; +Tracking_1G.dump=false; +Tracking_1G.dump_filename=/archive/glo_tracking_ch_ + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder +TelemetryDecoder_1G.implementation=GLONASS_L1_CA_Telemetry_Decoder + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=false; +Observables.dump_filename=/archive/gnss_observables.dat + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.output_rate_ms=100 +PVT.display_rate_ms=500 +PVT.trop_model=Saastamoinen +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1019_rate_ms=5000 +PVT.rtcm_MT1045_rate_ms=5000 +PVT.rtcm_MT1097_rate_ms=1000 +PVT.rtcm_MT1077_rate_ms=1000 +PVT.rinex_version=3 diff --git a/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_ibyte.conf new file mode 100644 index 000000000..46efcc5df --- /dev/null +++ b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_ibyte.conf @@ -0,0 +1,82 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=6625000 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/media/dmiralles/Seagate Backup Plus Drive/GNSS Data/NT1065_GLONASS_L1_20160923_fs6625e6_if0e3_schar.bin ; <- PUT YOUR FILE HERE ; <- PUT YOUR FILE HERE +SignalSource.item_type=ibyte +SignalSource.sampling_frequency=6625000 +SignalSource.samples=0 +SignalSource.dump=false; +SignalSource.dump_filename=/archive/signal_glonass.bin + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner +DataTypeAdapter.implementation=Ibyte_To_Complex +InputFilter.implementation=Pass_Through +InputFilter.item_type=gr_complex +Resampler.implementation=Pass_Through +Resampler.item_type=gr_complex + +;######### CHANNELS GLOBAL CONFIG ############ +Channel.signal=1G +Channels.in_acquisition=1 +Channels_1G.count=5 + +Channel0.satellite=24 ; k= +Channel1.satellite=1 ; k=1 +Channel2.satellite=2 ; k=-4 +Channel3.satellite=20 ; k=-5 +Channel4.satellite=21 ; k=4 + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1G.implementation=GLONASS_L1_CA_PCPS_Acquisition +Acquisition_1G.item_type=gr_complex +Acquisition_1G.threshold=0.0 +Acquisition_1G.pfa=0.0001 +Acquisition_1G.doppler_max=10000 +Acquisition_1G.doppler_step=250 +Acquisition_1G.dump=true; +Acquisition_1G.dump_filename=/archive/glo_acquisition.dat +;Acquisition_1G.coherent_integration_time_ms=1 +;Acquisition_1G.max_dwells = 5 + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1G.implementation=GLONASS_L1_CA_DLL_PLL_Tracking +Tracking_1G.item_type=gr_complex +Tracking_1G.early_late_space_chips=0.5 +Tracking_1G.pll_bw_hz=25.0; +Tracking_1G.dll_bw_hz=3.0; +Tracking_1G.dump=true; +Tracking_1G.dump_filename=/archive/glo_tracking_ch_ + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1G.implementation=GLONASS_L1_CA_Telemetry_Decoder + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=true; +Observables.dump_filename=/archive/glo_observables.dat + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.positioning_mode=Single +PVT.output_rate_ms=100 +PVT.display_rate_ms=500 +PVT.trop_model=Saastamoinen +PVT.flag_rtcm_server=false +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1019_rate_ms=5000 +PVT.rtcm_MT1045_rate_ms=5000 +PVT.rtcm_MT1097_rate_ms=1000 +PVT.rtcm_MT1077_rate_ms=1000 +PVT.rinex_version=2 diff --git a/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_ibyte_coh_trk.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_ibyte_coh_trk.conf new file mode 100644 index 000000000..bc48c28a7 --- /dev/null +++ b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_CA_ibyte_coh_trk.conf @@ -0,0 +1,86 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=6625000 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/archive/NT1065_GLONASS_L1_20160923_fs6625e6_if0e3_schar.bin ; <- PUT YOUR FILE HERE +SignalSource.item_type=ibyte +SignalSource.sampling_frequency=6625000 +SignalSource.samples=0 +SignalSource.dump=false; +SignalSource.dump_filename=/archive/signal_glonass.bin + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner +DataTypeAdapter.implementation=Ibyte_To_Complex +InputFilter.implementation=Pass_Through +InputFilter.item_type=gr_complex +Resampler.implementation=Pass_Through +Resampler.item_type=gr_complex + +;######### CHANNELS GLOBAL CONFIG ############ +Channel.signal=1G +Channels.in_acquisition=2 +Channels_1G.count=8 + +;Channel0.satellite=24 ; k=2 +;Channel1.satellite=1 ; k=1 +;Channel2.satellite=2 ; k=-4 +;Channel3.satellite=20 ; k=-5 +;Channel4.satellite=21 ; k=4 + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1G.implementation=GLONASS_L1_CA_PCPS_Acquisition +Acquisition_1G.item_type=gr_complex +Acquisition_1G.threshold=0.0 +Acquisition_1G.pfa=0.0001 +Acquisition_1G.doppler_max=10000 +Acquisition_1G.doppler_step=250 +Acquisition_1G.dump=false; +Acquisition_1G.dump_filename=/archive/glo_acquisition.dat +;Acquisition_1G.coherent_integration_time_ms=1 +;Acquisition_1G.max_dwells = 5 + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1G.implementation=GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking +Tracking_1G.item_type=gr_complex +Tracking_1G.early_late_space_chips=0.5 +Tracking_1G.pll_bw_hz=40.0; +Tracking_1G.dll_bw_hz=3.0; +Tracking_1G.pll_bw_narrow_hz = 25.0; +Tracking_1G.dll_bw_narrow_hz = 2.0; +Tracking_1G.extend_correlation_ms = 1; +Tracking_1G.dump=false; +Tracking_1G.dump_filename=/archive/glo_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1G.implementation=GLONASS_L1_CA_Telemetry_Decoder + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=false +Observables.dump_filename=/archive/glo_observables.dat + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.positioning_mode=Single +PVT.output_rate_ms=100 +PVT.display_rate_ms=500 +PVT.trop_model=Saastamoinen +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1019_rate_ms=5000 +PVT.rtcm_MT1045_rate_ms=5000 +PVT.rtcm_MT1097_rate_ms=1000 +PVT.rtcm_MT1077_rate_ms=1000 +PVT.rinex_version=2 diff --git a/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_ibyte.conf new file mode 100644 index 000000000..254196c30 --- /dev/null +++ b/conf/File_input/Glonass/gnss-sdr_GLONASS_L1_ibyte.conf @@ -0,0 +1,101 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [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=./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.pfa=0.01 +;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=./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 diff --git a/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_GPS_L1_CA_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_GPS_L1_CA_ibyte.conf new file mode 100644 index 000000000..abdbea4b2 --- /dev/null +++ b/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_GPS_L1_CA_ibyte.conf @@ -0,0 +1,143 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=6625000 +GNSS-SDR.num_sources=2 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource0.implementation=File_Signal_Source +SignalSource0.filename=/media/dmiralles/Seagate Backup Plus Drive/GNSS Data/NT1065_L1_20160923_fs6625e6_if60e3_schar.bin ; <- PUT YOUR FILE HERE +SignalSource0.item_type=ibyte +SignalSource0.sampling_frequency=6625000 +SignalSource0.samples=0 +SignalSource0.dump=false; +SignalSource0.dump_filename=/archive/signal_glonass.bin + +SignalSource1.implementation=File_Signal_Source +SignalSource1.filename=/media/dmiralles/Seagate Backup Plus Drive/GNSS Data/NT1065_GLONASS_L2_20160923_fs6625e6_if0e3_schar.bin ; <- PUT YOUR FILE HERE +SignalSource1.item_type=ibyte +SignalSource1.sampling_frequency=6625000 +SignalSource1.samples=0 +SignalSource1.dump=false; +SignalSource1.dump_filename=/archive/signal_glonass.bin + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner +DataTypeAdapter0.implementation=Ibyte_To_Complex +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.70 +InputFilter0.band2_begin=0.80 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.sampling_frequency=6625000 +InputFilter0.IF=60000 +Resampler0.implementation=Direct_Resampler +Resampler0.sample_freq_in=6625000 +Resampler0.sample_freq_out=6625000 +Resampler0.item_type=gr_complex + +SignalConditioner1.implementation=Signal_Conditioner +DataTypeAdapter1.implementation=Ibyte_To_Complex +InputFilter1.implementation=Pass_Through +InputFilter1.item_type=gr_complex +Resampler1.implementation=Pass_Through +Resampler1.item_type=gr_complex + +;######### CHANNELS GLOBAL CONFIG ############ +Channels.in_acquisition=1 +Channels_2G.count=5 +Channels_1C.count=5 + +;# Defining GLONASS satellites +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=1 +Channel6.RF_channel_ID=1 +Channel7.RF_channel_ID=1 +Channel8.RF_channel_ID=1 +Channel9.RF_channel_ID=1 + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.threshold=0.0 +Acquisition_1C.pfa=0.00001 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.dump=false; +Acquisition_1C.dump_filename=/archive/gps_acquisition.dat +;Acquisition_1C.coherent_integration_time_ms=10 + +Acquisition_2G.implementation=GLONASS_L2_CA_PCPS_Acquisition +Acquisition_2G.item_type=gr_complex +Acquisition_2G.threshold=0.0 +Acquisition_2G.pfa=0.00001 +Acquisition_2G.doppler_max=10000 +Acquisition_2G.doppler_step=250 +Acquisition_2G.dump=false; +Acquisition_2G.dump_filename=/archive/glo_acquisition.dat +;Acquisition_2G.coherent_integration_time_ms=10 + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.early_late_space_chips=0.5 +Tracking_1C.pll_bw_hz=20.0; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.dump=false; +Tracking_1C.dump_filename=/archive/gps_tracking_ch_ + +Tracking_2G.implementation=GLONASS_L2_CA_DLL_PLL_Tracking +Tracking_2G.item_type=gr_complex +Tracking_2G.early_late_space_chips=0.5 +Tracking_2G.pll_bw_hz=25.0; +Tracking_2G.dll_bw_hz=2.0; +Tracking_2G.dump=false; +Tracking_2G.dump_filename=/archive/glo_tracking_ch_ + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_2G.implementation=GLONASS_L2_CA_Telemetry_Decoder + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=false; +Observables.dump_filename=/archive/gnss_observables.dat + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.positioning_mode=Single +PVT.output_rate_ms=100 +PVT.display_rate_ms=500 +PVT.trop_model=Saastamoinen +PVT.flag_rtcm_server=false +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1019_rate_ms=5000 +PVT.rtcm_MT1045_rate_ms=5000 +PVT.rtcm_MT1097_rate_ms=1000 +PVT.rtcm_MT1077_rate_ms=1000 +PVT.rinex_version=2 diff --git a/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_GPS_L2C_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_GPS_L2C_ibyte.conf new file mode 100644 index 000000000..79585a6ae --- /dev/null +++ b/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_GPS_L2C_ibyte.conf @@ -0,0 +1,144 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=6625000 +GNSS-SDR.num_sources=2 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource0.implementation=File_Signal_Source +SignalSource0.filename=/archive/NT1065_L2_20160923_fs6625e6_if60e3_schar.bin ; <- PUT YOUR FILE HERE +SignalSource0.item_type=ibyte +SignalSource0.sampling_frequency=6625000 +SignalSource0.samples=0 +SignalSource0.dump=false; +SignalSource0.dump_filename=/archive/signal_glonass.bin + +SignalSource1.implementation=File_Signal_Source +SignalSource1.filename=/archive/NT1065_GLONASS_L2_20160923_fs6625e6_if0e3_schar.bin ; <- PUT YOUR FILE HERE +SignalSource1.item_type=ibyte +SignalSource1.sampling_frequency=6625000 +SignalSource1.samples=0 +SignalSource1.dump=false; +SignalSource1.dump_filename=/archive/signal_glonass.bin + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner +DataTypeAdapter0.implementation=Ibyte_To_Complex +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.70 +InputFilter0.band2_begin=0.80 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.sampling_frequency=6625000 +InputFilter0.IF=60000 +Resampler0.implementation=Pass_Through +Resampler0.item_type=gr_complex + +SignalConditioner1.implementation=Signal_Conditioner +DataTypeAdapter1.implementation=Ibyte_To_Complex +InputFilter1.implementation=Pass_Through +InputFilter1.item_type=gr_complex +Resampler1.implementation=Pass_Through +Resampler1.item_type=gr_complex + +;######### CHANNELS GLOBAL CONFIG ############ +Channels.in_acquisition=5 +Channels_2S.count=5 +Channels_2G.count=5 + +;# Defining GLONASS satellites +Channel0.RF_channel_ID=0 +Channel0.signal=2S +Channel1.RF_channel_ID=0 +Channel1.signal=2S +Channel2.RF_channel_ID=0 +Channel2.signal=2S +Channel3.RF_channel_ID=0 +Channel3.signal=2S +Channel4.RF_channel_ID=0 +Channel4.signal=2S +Channel5.RF_channel_ID=1 +Channel6.RF_channel_ID=1 +Channel7.RF_channel_ID=1 +Channel8.RF_channel_ID=1 +Channel9.RF_channel_ID=1 + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition +Acquisition_2S.item_type=gr_complex +Acquisition_2S.threshold=0.0 +Acquisition_2S.pfa=0.00001 +Acquisition_2S.doppler_max=10000 +Acquisition_2S.doppler_step=60 +Acquisition_2S.max_dwells=1 + +Acquisition_2G.implementation=GLONASS_L2_CA_PCPS_Acquisition +Acquisition_2G.item_type=gr_complex +Acquisition_2G.threshold=0.0 +Acquisition_2G.pfa=0.00001 +Acquisition_2G.doppler_max=10000 +Acquisition_2G.doppler_step=250 +Acquisition_2G.dump=false; +Acquisition_2G.dump_filename=/archive/glo_acquisition.dat + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking +Tracking_2S.item_type=gr_complex +Tracking_2S.early_late_space_chips=0.5 +Tracking_2S.pll_bw_hz=2.0; +Tracking_2S.dll_bw_hz=0.250; +Tracking_2S.order=2; +Tracking_2S.dump=false; +Tracking_2S.dump_filename=/archive/gps_tracking_ch_ + +Tracking_2G.implementation=GLONASS_L2_CA_DLL_PLL_Tracking +Tracking_2G.item_type=gr_complex +Tracking_2G.early_late_space_chips=0.5 +Tracking_2G.pll_bw_hz=25.0; +Tracking_2G.dll_bw_hz=3.0; +Tracking_2G.dump=false; +Tracking_2G.dump_filename=/archive/glo_tracking_ch_ + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder +TelemetryDecoder_2G.implementation=GLONASS_L2_CA_Telemetry_Decoder + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=false; +Observables.dump_filename=/archive/gnss_observables.dat + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.positioning_mode=Single +PVT.output_rate_ms=100 +PVT.display_rate_ms=500 +PVT.trop_model=Saastamoinen +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1019_rate_ms=5000 +PVT.rtcm_MT1045_rate_ms=5000 +PVT.rtcm_MT1097_rate_ms=1000 +PVT.rtcm_MT1077_rate_ms=1000 +PVT.rinex_version=3 diff --git a/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_ibyte.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_ibyte.conf new file mode 100644 index 000000000..9ac3595eb --- /dev/null +++ b/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_ibyte.conf @@ -0,0 +1,76 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=6625000 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/media/dmiralles/Seagate Backup Plus Drive/GNSS Data/NT1065_GLONASS_L2_20160831_fs6625e6_60e3_schar_1m.bin ; <- PUT YOUR FILE HERE +SignalSource.item_type=ibyte +SignalSource.sampling_frequency=6625000 +SignalSource.samples=0 +SignalSource.dump=false; +SignalSource.dump_filename=/archive/signal_glonass.bin + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner +DataTypeAdapter.implementation=Ibyte_To_Complex +InputFilter.implementation=Pass_Through +InputFilter.item_type=gr_complex +Resampler.implementation=Pass_Through +Resampler.item_type=gr_complex + +;######### CHANNELS GLOBAL CONFIG ############ +Channel.signal=2G +Channels.in_acquisition=1 +Channels_2G.count=5 + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_2G.implementation=GLONASS_L2_CA_PCPS_Acquisition +Acquisition_2G.item_type=gr_complex +Acquisition_2G.threshold=0.0 +Acquisition_2G.pfa=0.0001 +Acquisition_2G.doppler_max=10000 +Acquisition_2G.doppler_step=250 +Acquisition_2G.dump=true; +Acquisition_2G.dump_filename=/archive/glo_acquisition.dat +;Acquisition_2G.coherent_integration_time_ms=1 +;Acquisition_2G.max_dwells = 5 + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_2G.implementation=GLONASS_L2_CA_DLL_PLL_Tracking +Tracking_2G.item_type=gr_complex +Tracking_2G.early_late_space_chips=0.5 +Tracking_2G.pll_bw_hz=20.0; +Tracking_2G.dll_bw_hz=2.0; +Tracking_2G.dump=true; +Tracking_2G.dump_filename=/archive/glo_tracking_ch_ + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_2G.implementation=GLONASS_L2_CA_Telemetry_Decoder + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=true; +Observables.dump_filename=/archive/glo_observables.dat + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.positioning_mode=Single +PVT.output_rate_ms=100 +PVT.display_rate_ms=500 +PVT.trop_model=Saastamoinen +PVT.flag_rtcm_server=false +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1019_rate_ms=5000 +PVT.rtcm_MT1045_rate_ms=5000 +PVT.rtcm_MT1097_rate_ms=1000 +PVT.rtcm_MT1077_rate_ms=1000 +PVT.rinex_version=2 diff --git a/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_ibyte_coh_trk.conf b/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_ibyte_coh_trk.conf new file mode 100644 index 000000000..bc48c28a7 --- /dev/null +++ b/conf/File_input/Glonass/gnss-sdr_GLONASS_L2_CA_ibyte_coh_trk.conf @@ -0,0 +1,86 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=6625000 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/archive/NT1065_GLONASS_L1_20160923_fs6625e6_if0e3_schar.bin ; <- PUT YOUR FILE HERE +SignalSource.item_type=ibyte +SignalSource.sampling_frequency=6625000 +SignalSource.samples=0 +SignalSource.dump=false; +SignalSource.dump_filename=/archive/signal_glonass.bin + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner +DataTypeAdapter.implementation=Ibyte_To_Complex +InputFilter.implementation=Pass_Through +InputFilter.item_type=gr_complex +Resampler.implementation=Pass_Through +Resampler.item_type=gr_complex + +;######### CHANNELS GLOBAL CONFIG ############ +Channel.signal=1G +Channels.in_acquisition=2 +Channels_1G.count=8 + +;Channel0.satellite=24 ; k=2 +;Channel1.satellite=1 ; k=1 +;Channel2.satellite=2 ; k=-4 +;Channel3.satellite=20 ; k=-5 +;Channel4.satellite=21 ; k=4 + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1G.implementation=GLONASS_L1_CA_PCPS_Acquisition +Acquisition_1G.item_type=gr_complex +Acquisition_1G.threshold=0.0 +Acquisition_1G.pfa=0.0001 +Acquisition_1G.doppler_max=10000 +Acquisition_1G.doppler_step=250 +Acquisition_1G.dump=false; +Acquisition_1G.dump_filename=/archive/glo_acquisition.dat +;Acquisition_1G.coherent_integration_time_ms=1 +;Acquisition_1G.max_dwells = 5 + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1G.implementation=GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking +Tracking_1G.item_type=gr_complex +Tracking_1G.early_late_space_chips=0.5 +Tracking_1G.pll_bw_hz=40.0; +Tracking_1G.dll_bw_hz=3.0; +Tracking_1G.pll_bw_narrow_hz = 25.0; +Tracking_1G.dll_bw_narrow_hz = 2.0; +Tracking_1G.extend_correlation_ms = 1; +Tracking_1G.dump=false; +Tracking_1G.dump_filename=/archive/glo_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1G.implementation=GLONASS_L1_CA_Telemetry_Decoder + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=false +Observables.dump_filename=/archive/glo_observables.dat + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.positioning_mode=Single +PVT.output_rate_ms=100 +PVT.display_rate_ms=500 +PVT.trop_model=Saastamoinen +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1019_rate_ms=5000 +PVT.rtcm_MT1045_rate_ms=5000 +PVT.rtcm_MT1097_rate_ms=1000 +PVT.rtcm_MT1077_rate_ms=1000 +PVT.rinex_version=2 diff --git a/conf/File_input/MultiCons/gnss-sdr_Hybrid_byte.conf b/conf/File_input/MultiCons/gnss-sdr_Hybrid_byte.conf new file mode 100644 index 000000000..7e0df6bd2 --- /dev/null +++ b/conf/File_input/MultiCons/gnss-sdr_Hybrid_byte.conf @@ -0,0 +1,160 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=20000000 + + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +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 +SignalSource.repeat=false +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Ibyte_To_Complex + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Pass_Through +InputFilter.input_item_type=gr_complex +InputFilter.output_item_type=gr_complex +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.item_type=gr_complex +Resampler.sample_freq_in=20000000 +Resampler.sample_freq_out=20000000 +Resampler.dump=false +Resampler.dump_filename=./resampler.dat + + +;######### CHANNELS GLOBAL CONFIG ############ +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 +Channel4.signal=1C +Channel5.signal=1C +Channel6.signal=1C +Channel7.signal=1C +Channel8.signal=1B +Channel9.signal=1B +Channel10.signal=1B +Channel11.signal=1B +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.threshold=3.5 +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 + + +;######### GALILEO ACQUISITION CONFIG ############ +Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition +Acquisition_1B.item_type=gr_complex +Acquisition_1B.threshold=2.5 +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.item_type=gr_complex +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=./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.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; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + + +;######### TELEMETRY DECODER GALILEO CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.dump=false + + +;######### OBSERVABLES CONFIG ############ +;#implementation: +Observables.implementation=Hybrid_Observables +Observables.dump=false +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=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=10; +PVT.display_rate_ms=500; +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 diff --git a/conf/File_input/MultiCons/gnss-sdr_Hybrid_byte_sim.conf b/conf/File_input/MultiCons/gnss-sdr_Hybrid_byte_sim.conf new file mode 100644 index 000000000..1360f71bf --- /dev/null +++ b/conf/File_input/MultiCons/gnss-sdr_Hybrid_byte_sim.conf @@ -0,0 +1,145 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=2600000 + + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/Users/carlesfernandez/git/cttc/build/signal_out.bin ; <- PUT YOUR FILE HERE +SignalSource.item_type=byte +SignalSource.sampling_frequency=4000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Ibyte_To_Complex +DataTypeAdapter.dump=false +DataTypeAdapter.dump_filename=./DataTypeAdapter.dat + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Pass_Through +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat +InputFilter.input_item_type=gr_complex +InputFilter.output_item_type=gr_complex + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.item_type = gr_complex; + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=11 +Channels_1B.count=0 +Channels.in_acquisition=1 + +;#signal: +Channel1.signal=1C +Channel2.signal=1C +Channel3.signal=1C +Channel4.signal=1C +Channel5.signal=1C +Channel6.signal=1C +Channel7.signal=1C +Channel8.signal=1C +Channel9.signal=1C +Channel10.signal=1C +Channel11.signal=1C +Channel12.signal=1C +Channel13.signal=1B +Channel14.signal=1B +Channel15.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=2.5 +;Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=6000 +Acquisition_1C.doppler_step=100 +Acquisition_1C.dump=false +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.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.item_type=gr_complex +Tracking_1C.pll_bw_hz=20.0; +Tracking_1C.dll_bw_hz=1.5; +Tracking_1C.order=3; + + +;######### TRACKING GALILEO CONFIG ############ +Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking +Tracking_1B.item_type=gr_complex +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ +Tracking_1B.pll_bw_hz=15.0; +Tracking_1B.dll_bw_hz=2.0; +Tracking_1B.order=3; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./epl_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + + +;######### TELEMETRY DECODER GALILEO CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder + + +;######### 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.flag_rtcm_server=false +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/File_input/MultiCons/gnss-sdr_Hybrid_gr_complex.conf b/conf/File_input/MultiCons/gnss-sdr_Hybrid_gr_complex.conf new file mode 100644 index 000000000..aa404633c --- /dev/null +++ b/conf/File_input/MultiCons/gnss-sdr_Hybrid_gr_complex.conf @@ -0,0 +1,131 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=4092000 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/datalogger/signals/sim/GPS_sim1.dat ; <- PUT YOUR FILE HERE +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=4092000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Pass_Through + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=1 +Channels_1B.count=0 +Channels.in_acquisition=1 + +;#if the option is disabled by default is assigned "1C" GPS L1 C/A +Channel0.signal=1C +Channel1.signal=1B +Channel2.signal=1B +Channel3.signal=1B +Channel4.signal=1B +Channel5.signal=1B +Channel6.signal=1B +Channel7.signal=1B +Channel8.signal=1B +Channel9.signal=1B +Channel10.signal=1B +Channel11.signal=1B +Channel12.signal=1B +Channel13.signal=1B +Channel14.signal=1B +Channel15.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=2.5 +;Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=5000 +Acquisition_1C.doppler_step=100 +Acquisition_1C.dump=false +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.dump=false +Acquisition_1B.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.extend_correlation_ms=10 +Tracking_1C.pll_bw_hz=40; +Tracking_1C.pll_bw_narrow_hz=25; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.dll_bw_narrow_hz=2.0; +Tracking_1C.order=3; +Tracking_1C.dump=true +Tracking_1C.dump_filename=./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.dll_bw_hz=2.0; +Tracking_1B.fll_bw_hz=10.0; +Tracking_1B.order=3; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + + +;######### TELEMETRY DECODER GALILEO CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.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=10; +PVT.display_rate_ms=500; +PVT.dump=false +PVT.flag_rtcm_server=false +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump_filename=./PVT diff --git a/conf/File_input/MultiCons/gnss-sdr_Hybrid_ishort.conf b/conf/File_input/MultiCons/gnss-sdr_Hybrid_ishort.conf new file mode 100644 index 000000000..c9f0de8f5 --- /dev/null +++ b/conf/File_input/MultiCons/gnss-sdr_Hybrid_ishort.conf @@ -0,0 +1,161 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=4000000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + + +;######### SIGNAL_SOURCE CONFIG ############ +;#implementation +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/datalogger/signals/CTTC/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat ; <- PUT YOUR FILE HERE +SignalSource.item_type=ishort +SignalSource.sampling_frequency=4000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Ishort_To_Complex + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Pass_Through +InputFilter.input_item_type=gr_complex +InputFilter.output_item_type=gr_complex + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.item_type=gr_complex +Resampler.dump=false +Resampler.dump_filename=./resampler.dat + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=0 +Channels_1B.count=5 +Channels.in_acquisition=1 + +;#signal: +;# "1C" GPS L1 C/A +;# "2S" GPS L2 L2C (M) +;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) +;# "5X" GALILEO E5a I+Q +Channel0.signal=1B +Channel1.signal=1B +Channel2.signal=1B +Channel3.signal=1B +Channel4.signal=1B +Channel5.signal=1B +Channel6.signal=1B +Channel7.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.pfa=0.015 +;Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.dump=false +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; 0.0000008 +Acquisition_1B.doppler_max=15000 +Acquisition_1B.doppler_step=125 +Acquisition_1B.cboc=false; +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.item_type=gr_complex +Tracking_1C.pll_bw_hz=50.0; +Tracking_1C.dll_bw_hz=5.0; +Tracking_1C.order=3; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./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=20.0; +Tracking_1B.dll_bw_hz=2.0; +Tracking_1B.order=3; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + + +;######### TELEMETRY DECODER GALILEO CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.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.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1045_rate_ms=5000 ; Period (in ms) of Galileo ephemeris messages. 0 mutes this message +PVT.rtcm_MT1045_rate_ms=5000 ; Period (in ms) of GPS ephemeris messages. 0 mutes this message +PVT.rtcm_MT1097_rate_ms=1000 ; Period (in ms) of Galileo observables. 0 mutes this message +PVT.rtcm_MT1077_rate_ms=1000 ; Period (in ms) of GPS observables. 0 mutes this message +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/File_input/MultiCons/gnss-sdr_labsat_kf.conf b/conf/File_input/MultiCons/gnss-sdr_labsat_kf.conf new file mode 100644 index 000000000..31787abab --- /dev/null +++ b/conf/File_input/MultiCons/gnss-sdr_labsat_kf.conf @@ -0,0 +1,185 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2021 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=5456000 +GNSS-SDR.use_acquisition_resampler=true + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Labsat_Signal_Source +SignalSource.selected_channel=1 +;#filename: path to file with the captured GNSS signal samples to be processed +;# Labsat sile source automatically increments the file name when the signal is split in several files +;# the adapter adds "_0000.LS3" to this base path and filename. Next file will be "_0001.LS3" and so on +;# in this example, the first file complete path will be ../signals/GPS_025_ +SignalSource.filename=/home/javier/signals/satgen_30mins/output/output +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=16368000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./out.dat +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through +DataTypeAdapter.item_type=gr_complex + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.dump=false +InputFilter.dump_filename=/media/javier/WDNASNTFS/output_5.456Msps_gr_complex.dat + +InputFilter.input_item_type=gr_complex +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.45 +InputFilter.band2_begin=0.55 +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=lowpass +InputFilter.grid_density=16 +InputFilter.sampling_frequency=16368000 +InputFilter.IF=0 +InputFilter.decimation_factor=3 + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=6 +Channels_1B.count=0 +Channels_L5.count=0 +Channels_5X.count=0 + +Channels.in_acquisition=1 + +;######### GPS ACQUISITION CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.threshold=3.0 +Acquisition_1C.use_CFAR_algorithm=false +Acquisition_1C.blocking=true +Acquisition_1C.doppler_max=5000 +Acquisition_1C.doppler_step=125 +Acquisition_1C.dump=false +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.threshold=2.8 +Acquisition_1B.use_CFAR_algorithm=false +Acquisition_1B.blocking=false +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_KF_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.dump=true +Tracking_1C.dump_filename=./tracking_ch_ +Tracking_1C.extend_correlation_symbols=20; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.early_late_space_narrow_chips=0.15 + +;Tracking_1C.code_disc_sd_chips=0.2; // Initial R +;Tracking_1C.carrier_disc_sd_rads=0.3; // Initial R + +;Tracking_1C.init_code_phase_sd_chips=0.5; // Initial P_0_0 +;Tracking_1C.init_carrier_phase_sd_rad=0.7; +;Tracking_1C.init_carrier_freq_sd_hz=5; +;Tracking_1C.init_carrier_freq_rate_sd_hz_s=1; + +;Tracking_1C.code_phase_sd_chips=0.15; // Initial Q +;Tracking_1C.carrier_phase_sd_rad=0.25; +;Tracking_1C.carrier_freq_sd_hz=0.6; +;Tracking_1C.carrier_freq_rate_sd_hz_s=0.01; + + +;######### 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.dll_bw_hz=0.75; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.5; +Tracking_1B.early_late_space_narrow_chips=0.10; +Tracking_1B.very_early_late_space_narrow_chips=0.5; +Tracking_1B.pll_bw_narrow_hz=2.5 +Tracking_1B.dll_bw_narrow_hz=0.2 +Tracking_1B.extend_correlation_symbols=5 +Tracking_1B.track_pilot=true +Tracking_1B.enable_fll_pull_in=true; +;Tracking_1B.pull_in_time_s=60 +Tracking_1B.enable_fll_steady_state=false +Tracking_1B.fll_bw_hz=10 +Tracking_1B.dump=false +Tracking_1B.dump_filename=tracking_ch_ + +;######### TELEMETRY DECODER GALILEO CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.dump=false + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + + +;######### OBSERVABLES CONFIG ############ +;#implementation: +Observables.implementation=Hybrid_Observables +Observables.dump=false +Observables.dump_filename=./observables.dat +Observables.enable_carrier_smoothing=false +Observables.smoothing_factor=200 + + + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.positioning_mode=Single ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic +PVT.enable_rx_clock_correction=false +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=1000; +PVT.rinexobs_rate_ms=1000; +PVT.display_rate_ms=1000; +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 +PVT.enable_monitor=false +PVT.monitor_udp_port=1337 +PVT.monitor_client_addresses=127.0.0.1 + +;######### MONITOR CONFIG ############ +Monitor.enable_monitor=false +Monitor.decimation_factor=1 +Monitor.client_addresses=127.0.0.1 +Monitor.udp_port=1234 diff --git a/conf/File_input/MultiCons/gnss-sdr_multichannel_all_in_one_Flexiband_bin_file_III_1b.conf b/conf/File_input/MultiCons/gnss-sdr_multichannel_all_in_one_Flexiband_bin_file_III_1b.conf new file mode 100644 index 000000000..ebff509e6 --- /dev/null +++ b/conf/File_input/MultiCons/gnss-sdr_multichannel_all_in_one_Flexiband_bin_file_III_1b.conf @@ -0,0 +1,385 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=5000000 +GNSS-SDR.Galileo_banned_prns=14,18 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Flexiband_Signal_Source +SignalSource.flag_read_file=true +SignalSource.signal_file=/media/javier/SISTEMA/signals/fraunhofer/L125_III1b_210s.usb ; <- PUT YOUR FILE HERE +SignalSource.item_type=gr_complex +SignalSource.firmware_file=flexiband_III-1b.bit +SignalSource.RF_channels=3 +;#frontend channels gain. Not usable yet! +SignalSource.gain1=0 +SignalSource.gain2=0 +SignalSource.gain3=0 +SignalSource.AGC=true +SignalSource.usb_packet_buffer=128 + +;###################################################### +;######### RF CHANNEL 0 SIGNAL CONDITIONER ############ +;###################################################### + +;######### SIGNAL_CONDITIONER 0 CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 0 CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter0.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter_ch0.dat +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.45 +InputFilter0.band2_begin=0.55 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.IF=0 +InputFilter0.decimation_factor=4 + +;######### RESAMPLER CONFIG 0 ############ +Resampler0.implementation=Pass_Through + + +;###################################################### +;######### RF CHANNEL 1 SIGNAL CONDITIONER ############ +;###################################################### + +;######### SIGNAL_CONDITIONER 1 CONFIG ############ +SignalConditioner1.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 1 CONFIG ############ +DataTypeAdapter1.implementation=Pass_Through +DataTypeAdapter1.item_type=gr_complex + +;######### INPUT_FILTER 1 CONFIG ############ +InputFilter1.implementation=Freq_Xlating_Fir_Filter +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter_ch1.dat +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex +InputFilter1.taps_item_type=float +InputFilter1.number_of_taps=5 +InputFilter1.number_of_bands=2 +InputFilter1.band1_begin=0.0 +InputFilter1.band1_end=0.45 +InputFilter1.band2_begin=0.55 +InputFilter1.band2_end=1.0 +InputFilter1.ampl1_begin=1.0 +InputFilter1.ampl1_end=1.0 +InputFilter1.ampl2_begin=0.0 +InputFilter1.ampl2_end=0.0 +InputFilter1.band1_error=1.0 +InputFilter1.band2_error=1.0 +InputFilter1.filter_type=bandpass +InputFilter1.grid_density=16 +InputFilter1.IF=0 +InputFilter1.decimation_factor=4 + +;######### RESAMPLER CONFIG 1 ############ +Resampler1.implementation=Pass_Through + + +;###################################################### +;######### RF CHANNEL 2 SIGNAL CONDITIONER ############ +;###################################################### + +;######### SIGNAL_CONDITIONER 2 CONFIG ############ +SignalConditioner2.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 2 CONFIG ############ +DataTypeAdapter2.implementation=Pass_Through +DataTypeAdapter2.item_type=gr_complex + +;######### INPUT_FILTER 2 CONFIG ############ +InputFilter2.implementation=Freq_Xlating_Fir_Filter +InputFilter2.dump=false +InputFilter2.dump_filename=./input_filter_ch2.dat +InputFilter2.input_item_type=gr_complex +InputFilter2.output_item_type=gr_complex +InputFilter2.taps_item_type=float +InputFilter2.number_of_taps=5 +InputFilter2.number_of_bands=2 +InputFilter2.band1_begin=0.0 +InputFilter2.band1_end=0.45 +InputFilter2.band2_begin=0.55 +InputFilter2.band2_end=1.0 +InputFilter2.ampl1_begin=1.0 +InputFilter2.ampl1_end=1.0 +InputFilter2.ampl2_begin=0.0 +InputFilter2.ampl2_end=0.0 +InputFilter2.band1_error=1.0 +InputFilter2.band2_error=1.0 +InputFilter2.filter_type=bandpass +InputFilter2.grid_density=16 +InputFilter2.IF=0 +InputFilter2.decimation_factor=8 + + +;######### RESAMPLER CONFIG 2 ############ +Resampler2.implementation=Pass_Through + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=10 +Channels_1B.count=10 +Channels_2S.count=10 +Channels_5X.count=2 +Channels_L5.count=2 + +;#GPS.prns=7,8 +;Channels.in_acquisition=2 + +;# CHANNEL CONNECTION + +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=0 +Channel9.RF_channel_ID=0 +Channel10.RF_channel_ID=1 +Channel11.RF_channel_ID=1 +Channel12.RF_channel_ID=1 +Channel13.RF_channel_ID=1 +Channel14.RF_channel_ID=1 +Channel15.RF_channel_ID=1 +Channel16.RF_channel_ID=1 +Channel17.RF_channel_ID=1 +Channel18.RF_channel_ID=1 +Channel19.RF_channel_ID=1 +Channel20.RF_channel_ID=0 +Channel21.RF_channel_ID=0 +Channel22.RF_channel_ID=0 +Channel23.RF_channel_ID=0 +Channel24.RF_channel_ID=0 +Channel25.RF_channel_ID=0 +Channel26.RF_channel_ID=0 +Channel27.RF_channel_ID=0 +Channel28.RF_channel_ID=0 +Channel29.RF_channel_ID=0 +Channel30.RF_channel_ID=2 +Channel31.RF_channel_ID=2 +Channel32.RF_channel_ID=2 +Channel33.RF_channel_ID=2 +Channel34.RF_channel_ID=2 +Channel35.RF_channel_ID=2 +Channel36.RF_channel_ID=2 +Channel37.RF_channel_ID=2 +Channel38.RF_channel_ID=2 +Channel39.RF_channel_ID=2 +Channel40.RF_channel_ID=2 +Channel41.RF_channel_ID=2 +Channel42.RF_channel_ID=2 + +;Channel20.satellite=7 + + +;# GPS L1 CA +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=5000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.bit_transition_flag=false +Acquisition_1C.max_dwells=1 +Acquisition_1C.dump=false +Acquisition_1C.dump_filename=./acq_dump.dat + + +;# Galileo E1 +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=5000 +Acquisition_1B.doppler_step=125 +Acquisition_1B.dump_filename=./acq_dump.dat + + +;# GPS L2C M +Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition +Acquisition_2S.item_type=gr_complex +Acquisition_2S.pfa=0.01 +;Acquisition_2S.pfa=0.001 +Acquisition_2S.doppler_max=5000 +Acquisition_2S.doppler_min=-5000 +Acquisition_2S.doppler_step=60 +Acquisition_2S.max_dwells=1 +Acquisition_2S.dump=false +Acquisition_2S.dump_filename=./acq_dump.dat + + +;# GALILEO E5a +Acquisition_5X.implementation=Galileo_E5a_Noncoherent_IQ_Acquisition_CAF +Acquisition_5X.item_type=gr_complex +Acquisition_5X.coherent_integration_time_ms=1 +Acquisition_5X.threshold=0.009 +Acquisition_5X.doppler_max=5000 +Acquisition_5X.doppler_step=125 +Acquisition_5X.bit_transition_flag=false +Acquisition_5X.max_dwells=1 +Acquisition_5X.CAF_window_hz=0 ; **Only for E5a** Resolves doppler ambiguity averaging the specified BW in the winner code delay. If set to 0 CAF filter is desactivated. Recommended value 3000 Hz +Acquisition_5X.Zero_padding=0 ; **Only for E5a** Avoids power loss and doppler ambiguity in bit transitions by correlating one code with twice the input data length, ensuring that at least one full code is present without transitions. If set to 1 it is ON, if set to 0 it is OFF. +Acquisition_5X.dump=false +Acquisition_5X.dump_filename=./acq_dump.dat + + +;# GPS L5 +Acquisition_L5.implementation=GPS_L5i_PCPS_Acquisition +Acquisition_L5.item_type=gr_complex +Acquisition_L5.pfa=0.01 +;Acquisition_L5.pfa=0.001 +Acquisition_L5.doppler_max=5000 +Acquisition_L5.doppler_min=-5000 +Acquisition_L5.doppler_step=125 +Acquisition_L5.max_dwells=1 +Acquisition_L5.dump=false +Acquisition_L5.dump_filename=./acq_dump.dat + + + +;######### TRACKING CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.pll_bw_hz=35.0; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./epl_tracking_ch_ + +;######### GALILEO E1 TRK 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.dll_bw_hz=2.0; +Tracking_1B.order=3; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### GPS L2C GENERIC TRACKING CONFIG ############ +Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking +Tracking_2S.item_type=gr_complex +Tracking_2S.pll_bw_hz=2.0; +Tracking_2S.dll_bw_hz=0.25; +Tracking_2S.order=2; +Tracking_2S.early_late_space_chips=0.5; +Tracking_2S.dump=false +Tracking_2S.dump_filename=./tracking_ch_ + +;######### GALILEO E5 TRK CONFIG ############ +Tracking_5X.implementation=Galileo_E5a_DLL_PLL_Tracking +Tracking_5X.item_type=gr_complex +Tracking_5X.track_pilot=true +Tracking_5X.pll_bw_hz=15.0; +Tracking_5X.dll_bw_hz=2.0; +Tracking_5X.pll_bw_narrow_hz=5.0; +Tracking_5X.dll_bw_narrow_hz=1.0; +Tracking_5X.order=2; +Tracking_5X.early_late_space_chips=0.5; +Tracking_5X.dump=false +Tracking_5X.dump_filename=./tracking_ch_ + +;######### GALILEO E5 TRK CONFIG ############ +Tracking_L5.implementation=GPS_L5_DLL_PLL_Tracking +Tracking_L5.item_type=gr_complex +Tracking_L5.track_pilot=true +Tracking_L5.pll_bw_hz=15.0; +Tracking_L5.dll_bw_hz=2.0; +Tracking_L5.pll_bw_narrow_hz=4.0; +Tracking_L5.dll_bw_narrow_hz=1.0; +Tracking_L5.order=2; +Tracking_L5.early_late_space_chips=0.5; +Tracking_L5.dump=false +Tracking_L5.dump_filename=./tracking_ch_ + + +;######### TELEMETRY DECODER CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.dump=false + +TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder +TelemetryDecoder_2S.dump=false + +TelemetryDecoder_5X.implementation=Galileo_E5a_Telemetry_Decoder +TelemetryDecoder_5X.dump=false + +TelemetryDecoder_L5.implementation=GPS_L5_Telemetry_Decoder +TelemetryDecoder_L5.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=10 +PVT.display_rate_ms=100 +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 +PVT.dump_filename=./PVT diff --git a/conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_ishort.conf b/conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_ishort.conf new file mode 100644 index 000000000..04070f0b7 --- /dev/null +++ b/conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_ishort.conf @@ -0,0 +1,169 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=4000000 + +GNSS-SDR.num_sources=2 + +SignalSource.enable_throttle_control=false +SignalSource.repeat=false + + +;######### SIGNAL_SOURCE 0 CONFIG ############ +SignalSource0.implementation=File_Signal_Source +SignalSource0.filename=/datalogger/signals/CTTC/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat ; <- PUT YOUR FILE HERE +SignalSource0.item_type=ishort +SignalSource0.sampling_frequency=4000000 +SignalSource0.samples=0 + + +;######### SIGNAL_SOURCE 1 CONFIG ############ +SignalSource1.implementation=File_Signal_Source +SignalSource1.filename=/datalogger/signals/CTTC/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat ; <- PUT YOUR FILE HERE +SignalSource1.item_type=ishort +SignalSource1.sampling_frequency=4000000 +SignalSource1.freq=1575420000 +SignalSource1.samples=0 + + +;######### SIGNAL_CONDITIONER 0 CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 0 CONFIG ############ +DataTypeAdapter0.implementation=Ishort_To_Complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter0.implementation=Pass_Through +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter.dat +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex + + + +;######### RESAMPLER 1 CONFIG ############ +Resampler1.implementation=Pass_Through +Resampler1.dump=false +Resampler1.dump_filename=./resampler.dat +Resampler1.item_type=gr_complex +Resampler1.sample_freq_in=4000000 +Resampler1.sample_freq_out=4000000 + +;######### SIGNAL_CONDITIONER 1 CONFIG ############ +SignalConditioner1.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 1 CONFIG ############ +DataTypeAdapter1.implementation=Ishort_To_Complex + +;######### INPUT_FILTER 1 CONFIG ############ +InputFilter1.implementation=Pass_Through +InputFilter1.dump=false + + +;######### RESAMPLER 1 CONFIG ############ +Resampler1.implementation=Pass_Through +Resampler1.dump=false +Resampler1.dump_filename=./resampler.dat. +Resampler1.item_type=gr_complex +Resampler1.sample_freq_in=4000000 +Resampler1.sample_freq_out=4000000 + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=2 +Channels_1B.count=2 +Channels.in_acquisition=1 + + +;# CHANNEL CONNECTION +Channel0.RF_channel_ID=0 +Channel1.RF_channel_ID=0 +Channel2.RF_channel_ID=1 +Channel3.RF_channel_ID=1 +;#signal: +;#if the option is disabled by default is assigned "1C" GPS L1 C/A +Channel.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.pfa=0.015 +;Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.dump=false +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.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.item_type=gr_complex +Tracking_1C.pll_bw_hz=45.0; +Tracking_1C.dll_bw_hz=4.0; +Tracking_1C.order=3; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./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.dll_bw_hz=2.0; +Tracking_1B.order=3; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + + +;######### TELEMETRY DECODER GALILEO CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.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=Single ; options: Single, Static, Kinematic, PPP_Static, PPP_Kinematic +PVT.output_rate_ms=100; +PVT.display_rate_ms=500; +PVT.flag_rtcm_server=false +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump_filename=./PVT +PVT.dump=false diff --git a/conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_nsr.conf b/conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_nsr.conf new file mode 100644 index 000000000..671dd346d --- /dev/null +++ b/conf/File_input/MultiCons/gnss-sdr_multisource_Hybrid_nsr.conf @@ -0,0 +1,231 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; You can define your own receiver and invoke it by doing +; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf +; + +[GNSS-SDR] + +GNSS-SDR.num_sources=2 + +;######### 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 + +SignalSource.enable_throttle_control=false +SignalSource.repeat=false + + +;######### SIGNAL_SOURCE 0 CONFIG ############ +SignalSource0.implementation=Nsr_File_Signal_Source +SignalSource0.filename=/datalogger/signals/ifen/E1L1_FE0_Band0.stream ; <- PUT YOUR FILE HERE +SignalSource0.item_type=byte +SignalSource0.sampling_frequency=20480000 +SignalSource0.samples=0 + + +;######### SIGNAL_SOURCE 1 CONFIG ############ +SignalSource1.implementation=Nsr_File_Signal_Source +SignalSource1.filename=/datalogger/signals/ifen/E1L1_FE0_Band0.stream +SignalSource1.item_type=byte +SignalSource1.sampling_frequency=20480000 +SignalSource1.samples=0 + + +;######### SIGNAL_CONDITIONER 0 CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 0 CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter0.item_type=float + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter.dat +InputFilter0.input_item_type=float +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.number_of_taps=5 +InputFilter0.number_of_bands=2 +InputFilter0.band1_begin=0.0 +InputFilter0.band1_end=0.45 +InputFilter0.band2_begin=0.55 +InputFilter0.band2_end=1.0 +InputFilter0.ampl1_begin=1.0 +InputFilter0.ampl1_end=1.0 +InputFilter0.ampl2_begin=0.0 +InputFilter0.ampl2_end=0.0 +InputFilter0.band1_error=1.0 +InputFilter0.band2_error=1.0 +InputFilter0.filter_type=bandpass +InputFilter0.grid_density=16 +InputFilter0.sampling_frequency=20480000 +InputFilter0.IF=5499998.47412109 +InputFilter0.decimation_factor=8 + +;######### RESAMPLER CONFIG 0 ############ +Resampler0.implementation=Pass_Through + +;######### SIGNAL_CONDITIONER 1 CONFIG ############ +SignalConditioner1.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER 1 CONFIG ############ +DataTypeAdapter1.implementation=Pass_Through +DataTypeAdapter1.item_type=float + +;######### INPUT_FILTER 1 CONFIG ############ +InputFilter1.implementation=Freq_Xlating_Fir_Filter +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter.dat +InputFilter1.input_item_type=float +InputFilter1.output_item_type=gr_complex +InputFilter1.taps_item_type=float +InputFilter1.number_of_taps=5 +InputFilter1.number_of_bands=2 +InputFilter1.band1_begin=0.0 +InputFilter1.band1_end=0.45 +InputFilter1.band2_begin=0.55 +InputFilter1.band2_end=1.0 +InputFilter1.ampl1_begin=1.0 +InputFilter1.ampl1_end=1.0 +InputFilter1.ampl2_begin=0.0 +InputFilter1.ampl2_end=0.0 +InputFilter1.band1_error=1.0 +InputFilter1.band2_error=1.0 +InputFilter1.filter_type=bandpass +InputFilter1.grid_density=16 +InputFilter1.sampling_frequency=20480000 +InputFilter1.IF=5499998.47412109 +InputFilter1.decimation_factor=8 + + +;######### RESAMPLER CONFIG 1 ############ +Resampler1.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=8 +Channels_1B.count=8 +Channels.in_acquisition=1 + +;# SOURCE CONNECTION +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 +Channel10.RF_channel_ID=1 +Channel11.RF_channel_ID=1 +Channel12.RF_channel_ID=1 +Channel13.RF_channel_ID=1 +Channel14.RF_channel_ID=1 +Channel15.RF_channel_ID=1 + +;#signal: +;#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 +Channel4.signal=1C +Channel5.signal=1C +Channel6.signal=1C +Channel7.signal=1B +Channel8.signal=1B +Channel9.signal=1B +Channel10.signal=1B +Channel11.signal=1B +Channel12.signal=1B +Channel13.signal=1B +Channel14.signal=1B +Channel15.signal=1B + + +;######### GPS ACQUISITION CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.scoherent_integration_time_ms=1 +Acquisition_1C.pfa=0.015 +;Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.dump=false +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.dump=false +Acquisition_1B.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.pll_bw_hz=45.0; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.order=3; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./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.dll_bw_hz=2.0; +Tracking_1B.order=3; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + + +;######### TELEMETRY DECODER GALILEO CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder + + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=false +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=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.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=true; +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 +PVT.dump_filename=./PVT diff --git a/conf/Nsr_input/gnss-sdr_GPS_L1_nsr.conf b/conf/Nsr_input/gnss-sdr_GPS_L1_nsr.conf new file mode 100644 index 000000000..0452136ec --- /dev/null +++ b/conf/Nsr_input/gnss-sdr_GPS_L1_nsr.conf @@ -0,0 +1,164 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; Sample configuration file for IFEN SX-NSR software receiver front-end +; 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 +; + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [samples per second]. +GNSS-SDR.internal_fs_sps=2560000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=false +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Nsr_File_Signal_Source +SignalSource.filename=/home/javier/Descargas/RoofTop_FE0_Band1.stream ; <- PUT YOUR FILE HERE +SignalSource.item_type=byte +SignalSource.sampling_frequency=20480000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through +DataTypeAdapter.item_type=float + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat +InputFilter.input_item_type=float +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.45 +InputFilter.band2_begin=0.55 +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=20480000 +#InputFilter.IF=5499998.47412109 +InputFilter.IF=5679999.2370605494 +InputFilter.decimation_factor=8 + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.dump=false +Resampler.dump_filename=./resampler.dat +Resampler.item_type=gr_complex + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=0 +Channels_2S.count=8 +Channels.in_acquisition=1 + + +;######### GPS ACQUISITION CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.scoherent_integration_time_ms=1 +Acquisition_1C.pfa=0.015 +;Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.dump=false +Acquisition_1C.dump_filename=./acq_dump.dat + +Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition +Acquisition_2S.item_type=gr_complex +Acquisition_2S.coherent_integration_time_ms=20 +Acquisition_2S.pfa=0.01 +Acquisition_2S.doppler_max=5000 +Acquisition_2S.doppler_step=100 +Acquisition_2S.bit_transition_flag=false +Acquisition_2S.max_dwells=1 +Acquisition_2S.dump=false +Acquisition_2S.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.pll_bw_hz=45.0; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.order=3; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./epl_tracking_ch_ + +;######### GPS L2C GENERIC TRACKING CONFIG ############ +Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking +Tracking_2S.item_type=gr_complex +Tracking_2S.pll_bw_hz=1.5; +Tracking_2S.dll_bw_hz=0.4; +Tracking_2S.order=2; +Tracking_2S.early_late_space_chips=0.5; +Tracking_2S.dump=true +Tracking_2S.dump_filename=./epl_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + +TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder +TelemetryDecoder_2S.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=true diff --git a/conf/Nsr_input/gnss-sdr_GPS_L1_nsr_gauss.conf b/conf/Nsr_input/gnss-sdr_GPS_L1_nsr_gauss.conf new file mode 100644 index 000000000..ef553d655 --- /dev/null +++ b/conf/Nsr_input/gnss-sdr_GPS_L1_nsr_gauss.conf @@ -0,0 +1,207 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [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] +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=./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=./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 neighbourhood 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.implementation=GPS_L1_CA_PCPS_Acquisition +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.threshold=2.5 +;Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=5000 +Acquisition_1C.doppler_step=100 + + +;######### TRACKING GPS CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_Gaussian_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.if=0 +Tracking_1C.dump=true +Tracking_1C.dump_filename=./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 diff --git a/conf/Nsr_input/gnss-sdr_Hybrid_nsr.conf b/conf/Nsr_input/gnss-sdr_Hybrid_nsr.conf new file mode 100644 index 000000000..8e2e10e7b --- /dev/null +++ b/conf/Nsr_input/gnss-sdr_Hybrid_nsr.conf @@ -0,0 +1,176 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=2560000 + + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Nsr_File_Signal_Source +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 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through +DataTypeAdapter.item_type=float + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.input_item_type=float +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.45 +InputFilter.band2_begin=0.55 +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=20480000 +InputFilter.IF=5499998.47412109 +InputFilter.decimation_factor=8 +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +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 +Channel4.signal=1C +Channel5.signal=1C +Channel6.signal=1C +Channel7.signal=1C +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.threshold=2.5 +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 + + +;######### GALILEO ACQUISITION CONFIG ############ +Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition +Acquisition_1B.item_type=gr_complex +Acquisition_1B.threshold=2.5 +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_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=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=./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=20.0; +Tracking_1B.dll_bw_hz=2.0; +Tracking_1B.order=3; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + + +;######### TELEMETRY DECODER GALILEO CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.dump=false + + +;######### OBSERVABLES CONFIG ############ +;#implementation: +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=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 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/front-end-cal.conf b/conf/Other/front-end-cal.conf similarity index 67% rename from conf/front-end-cal.conf rename to conf/Other/front-end-cal.conf index 447729419..2753abf6d 100644 --- a/conf/front-end-cal.conf +++ b/conf/Other/front-end-cal.conf @@ -1,3 +1,8 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + ; Default configuration file ; You can define your own front-end calibration tool configuration and invoke it by doing ; ./front-end-cal --config_file=my_GNSS_SDR_configuration.conf @@ -12,63 +17,66 @@ ;GNSS-SDR.init_altitude_m=329.11968943169342 ; Barcelona CTTC -GNSS-SDR.init_latitude_deg=41.27719585553101 -GNSS-SDR.init_longitude_deg=1.988782985790802 -GNSS-SDR.init_altitude_m=10 +;GNSS-SDR.init_latitude_deg=41.27719585553101 +;GNSS-SDR.init_longitude_deg=1.988782985790802 +;GNSS-SDR.init_altitude_m=10 ; Mozoncillo - ;GNSS-SDR.init_latitude_deg=41.14534824586196 -;GNSS-SDR.init_longitude_deg=-4.187125019737464 +;GNSS-SDR.init_longitude_deg=-4.187125019737464 ;GNSS-SDR.init_altitude_m=900 +; ICEBAR - Jukkasjarvi +GNSS-SDR.init_latitude_deg=67.849722 +GNSS-SDR.init_longitude_deg=20.594444 +GNSS-SDR.init_altitude_m=325 + ;######### GLOBAL OPTIONS ################## -;internal_fs_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2000000 +;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [samples per second]. +GNSS-SDR.internal_fs_sps=2048000 ;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en GNSS-SDR.SUPL_gps_enabled=true GNSS-SDR.SUPL_read_gps_assistance_xml=false -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com GNSS-SDR.SUPL_gps_ephemeris_port=7275 -GNSS-SDR.SUPL_gps_acquisition_server=supl.nokia.com +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_LAC=861 -GNSS-SDR.SUPL_CI=40184 +GNSS-SDR.SUPL_MCC=240 +GNSS-SDR.SUPL_MNC=08 +GNSS-SDR.SUPL_LAC=46003 +GNSS-SDR.SUPL_CI=425950 ;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] or [Osmosdr_Signal_Source] SignalSource.implementation=Osmosdr_Signal_Source - -SignalSource.AGC_enabled=false - -;#filename: path to file with the captured GNSS signal samples to be processed -;SignalSource.filename=/media/DATALOGGER_/signals/RTL-SDR/cap_-90dBm_IF15_RF40_EzCap.dat -;SignalSource.filename=/media/DATALOGGER_/signals/Agilent GPS Generator/New York/2msps.dat -;SignalSource.filename=/media/DATALOGGER_/signals/RTL-SDR/geo/pmt4_no_amp.dat -SignalSource.filename=/media/DATALOGGER_/signals/RTL-SDR/geo/pmt4_no_amp_mini.dat -;SignalSource.filename=/media/DATALOGGER_/signals/RTL-SDR/mozoncillo/cap_mozon_ezcap.dat - +;#freq: RF front-end center frequency in [Hz] +SignalSource.freq=1575420000 ;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=2000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=40 +;#sampling_frequency: Original Signal sampling frequency in samples per second +SignalSource.sampling_frequency=2048000 +;#gain: Front-end Gain in [dB] +SignalSource.gain=40 SignalSource.rf_gain=40 SignalSource.if_gain=30 +SignalSource.AGC_enabled=false -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 +;# Please note that the new RTL-SDR Blog V3 dongles ship a < 1 PPM +;# temperature compensated oscillator (TCXO), which is well suited for GNSS +;# signal processing, and a 4.5 V powered bias-tee to feed an active antenna. +;# Whether the bias-tee is turned off before reception depends on which version +;# of gr-osmosdr was used when compiling GNSS-SDR. With an old version +;# (for example, v0.1.4-8), the utility rtl_biast may be used to switch the +;# bias-tee, and then call gnss-sdr. +;# See https://github.com/rtlsdrblog/rtl_biast +;# After reception the bias-tee is switched off automatically by the program. +;# With newer versions of gr-osmosdr (>= 0.1.4-13), the bias-tee can be +;# activated by uncommenting the following line: +;SignalSource.osmosdr_args=rtl,bias=1 -;#samples: Number of samples to be processed. Notice that 0 indicates the entire file. +;#samples: Number of samples to be processed. Notice that 0 means infinite samples. SignalSource.samples=0 ;#repeat: Repeat the processing file. @@ -77,10 +85,10 @@ SignalSource.repeat=false ;#dump: Dump the Signal source data to a file. SignalSource.dump=false -SignalSource.dump_filename=../data/signal_source.dat +SignalSource.dump_filename=./signal_source.dat ;######### SIGNAL_CONDITIONER CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. +;## 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 @@ -88,13 +96,13 @@ SignalSource.dump_filename=../data/signal_source.dat SignalConditioner.implementation=Pass_Through ;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. +;## Changes the type of input data. ;#implementation: Use [Ishort_To_Complex] or [Pass_Through] DataTypeAdapter.implementation=Pass_Through ;#dump: Dump the filtered data to a file. DataTypeAdapter.dump=false ;#dump_filename: Log path and filename. -DataTypeAdapter.dump_filename=../data/data_type_adapter.dat +DataTypeAdapter.dump_filename=./data_type_adapter.dat ;######### INPUT_FILTER CONFIG ############ ;## Filter the input data. Can be combined with frequency translation for IF signals @@ -106,20 +114,15 @@ DataTypeAdapter.dump_filename=../data/data_type_adapter.dat 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. +;#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. +;#This function 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. -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. +;#input_item_type: Type and resolution for input signal samples. InputFilter.input_item_type=gr_complex -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. +;#outut_item_type: Type and resolution for output filtered signal samples. InputFilter.output_item_type=gr_complex ;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. @@ -154,7 +157,7 @@ InputFilter.ampl2_end=0.0 InputFilter.band1_error=1.0 InputFilter.band2_error=1.0 -;#filter_type: one of "bandpass", "hilbert" or "differentiator" +;#filter_type: one of "bandpass", "hilbert" or "differentiator" InputFilter.filter_type=bandpass ;#grid_density: determines how accurately the filter will be constructed. @@ -169,6 +172,12 @@ InputFilter.IF=0 InputFilter.decimation_factor=1 +;#dump: Dump the filtered data to a file. +InputFilter.dump=false + +;#dump_filename: Log path and filename. +InputFilter.dump_filename=./input_filter.dat + ;######### RESAMPLER CONFIG ############ ;## Resamples the input data. ;#implementation: Use [Pass_Through] or [Direct_Resampler] @@ -176,15 +185,9 @@ InputFilter.decimation_factor=1 Resampler.implementation=Pass_Through ;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition.dump=false -;#filename: Log path and filename -Acquisition.dump_filename=./acq_dump.dat +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 @@ -197,4 +200,8 @@ Acquisition.doppler_min=-100000 Acquisition.doppler_step=500 ;#maximum dwells Acquisition.max_dwells=15 +;#dump: Enable or disable the acquisition internal data file logging [true] or [false] +Acquisition.dump=false +;#filename: Log path and filename +Acquisition.dump_filename=./acq_dump.dat diff --git a/conf/Other/gnss-sdr_GPS_L1_2ch_udp.conf b/conf/Other/gnss-sdr_GPS_L1_2ch_udp.conf new file mode 100644 index 000000000..c25dc85f9 --- /dev/null +++ b/conf/Other/gnss-sdr_GPS_L1_2ch_udp.conf @@ -0,0 +1,103 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [Sps]. +GNSS-SDR.internal_fs_sps=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=2.5 +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 diff --git a/conf/Other/gnss-sdr_GPS_L1_FPGA.conf b/conf/Other/gnss-sdr_GPS_L1_FPGA.conf new file mode 100644 index 000000000..c873f60cc --- /dev/null +++ b/conf/Other/gnss-sdr_GPS_L1_FPGA.conf @@ -0,0 +1,72 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; You can define your own receiver and invoke it by doing +; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf +; + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=12500000 +GNSS-SDR.enable_FPGA=true + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Ad9361_Fpga_Signal_Source +SignalSource.sampling_frequency=12500000 +SignalSource.freq=1575420000 +SignalSource.switch_position=2 +SignalSource.gain_mode_rx1=slow_attack + +;######### CHANNELS GLOBAL CONFIG ############ +Channels.in_acquisition=1 +Channels_1C.count=12 + +;######### GPS ACQUISITION CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition_Fpga +Acquisition_1C.threshold=2.0 +Acquisition_1C.doppler_max=50000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.make_two_steps=true +Acquisition_1C.second_nbins=3 +Acquisition_1C.doppler_step2=250 +Acquisition_1C.max_num_acqs=100 + +;######### TRACKING GPS CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking_Fpga +Tracking_1C.extend_correlation_symbols=20 +Tracking_1C.pll_bw_hz=35; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.pll_bw_narrow_hz=5.0; +Tracking_1C.dll_bw_narrow_hz=0.50; +Tracking_1C.fll_bw_hz=10 +Tracking_1C.enable_fll_pull_in=true; +Tracking_1C.enable_fll_steady_state=false +Tracking_1C.high_dyn=true +Tracking_1C.dump=false +Tracking_1C.dump_filename=tracking_ch_ + +;######### 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 + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.positioning_mode=Single +PVT.iono_model=OFF +PVT.trop_model=OFF +PVT.raim_fde=1 +PVT.output_rate_ms=20; +PVT.display_rate_ms=500; +PVT.elevation_mask=0; +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 diff --git a/conf/Other/gnss-sdr_GPS_L1_fifo.conf b/conf/Other/gnss-sdr_GPS_L1_fifo.conf new file mode 100644 index 000000000..a339ffb35 --- /dev/null +++ b/conf/Other/gnss-sdr_GPS_L1_fifo.conf @@ -0,0 +1,56 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2021 (see AUTHORS file for a list of contributors) + +; You can define your own receiver and invoke it by doing +; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf +; + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=25000000 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Fifo_Signal_Source +SignalSource.filename=fifo.fifo ; example usage: mkfifo fifo.fifo && cat path_to.bin >> fifo.fifo +SignalSource.sample_type=ishort; ; sample representation in fifo stream - will always output gr_complex +SignalSource.dump=false +;SignalSource.dump_filename=dump + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Pass_Through + +;######### 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.pfa=0.01 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=250 + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=4.0; + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.positioning_mode=Single +PVT.output_rate_ms=100 +PVT.display_rate_ms=500 +PVT.iono_model=Broadcast +PVT.trop_model=Saastamoinen +PVT.output_path=./files diff --git a/conf/Other/gnss-sdr_GPS_L1_gr_complex_gpu.conf b/conf/Other/gnss-sdr_GPS_L1_gr_complex_gpu.conf new file mode 100644 index 000000000..f920c7cb6 --- /dev/null +++ b/conf/Other/gnss-sdr_GPS_L1_gr_complex_gpu.conf @@ -0,0 +1,85 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=4000000 + + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/datalogger/signals/Agilent/New York/4msps.dat ; <- PUT YOUR FILE HERE +SignalSource.item_type=gr_complex +SignalSource.samples=250000000 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Pass_Through + + +;######### 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.coherent_integration_time_ms=1 +Acquisition_1C.threshold=0.005 +;Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.dump=false +Acquisition_1C.dump_filename=./acq_dump.dat + + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking_GPU +Tracking_1C.item_type=gr_complex +Tracking_1C.dump=false +Tracking_1C.dump_filename=./epl_tracking_ch_ +Tracking_1C.pll_bw_hz=45.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 + + +;######### 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=10 +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 diff --git a/conf/Other/gnss-sdr_GPS_L1_monitor.conf b/conf/Other/gnss-sdr_GPS_L1_monitor.conf new file mode 100644 index 000000000..a24a4fc9b --- /dev/null +++ b/conf/Other/gnss-sdr_GPS_L1_monitor.conf @@ -0,0 +1,89 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=2000000 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/tmp/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat +SignalSource.item_type=ishort +SignalSource.sampling_frequency=4000000 +SignalSource.freq=1575420000 +SignalSource.samples=0 +SignalSource.enable_throttle_control=true + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Ishort_To_Complex + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Pass_Through +InputFilter.item_type=gr_complex + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Direct_Resampler +Resampler.sample_freq_in=4000000 +Resampler.sample_freq_out=2000000 +Resampler.item_type=gr_complex + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=3 +Channels.in_acquisition=1 +Channel.signal=1C +Channel0.satellite=1 +Channel1.satellite=11 +Channel2.satellite=17 + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.threshold=0.008 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=250 + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=4.0; + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.averaging_depth=100 +PVT.flag_averaging=true +PVT.output_rate_ms=10 +PVT.display_rate_ms=500 +PVT.enable_monitor=true +PVT.monitor_client_addresses=127.0.0.1 +PVT.monitor_udp_port=1234 + +;######### MONITOR CONFIG ############ +Monitor.enable_monitor=true +Monitor.decimation_factor=1 +Monitor.client_addresses=127.0.0.1 +Monitor.udp_port=1233 + +;######### ACQUISITION MONITOR CONFIG ############ +AcquisitionMonitor.enable_monitor=true +AcquisitionMonitor.decimation_factor=1 +AcquisitionMonitor.client_addresses=127.0.0.1 +AcquisitionMonitor.udp_port=1231 + +;######### TRACKING MONITOR CONFIG ############ +TrackingMonitor.enable_monitor=true +TrackingMonitor.decimation_factor=1 +TrackingMonitor.client_addresses=127.0.0.1 +TrackingMonitor.udp_port=1232 diff --git a/conf/Other/gnss-sdr_GPS_L1_nsr_twobit_packed.conf b/conf/Other/gnss-sdr_GPS_L1_nsr_twobit_packed.conf new file mode 100644 index 000000000..699640977 --- /dev/null +++ b/conf/Other/gnss-sdr_GPS_L1_nsr_twobit_packed.conf @@ -0,0 +1,154 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; Sample configuration file for IFEN SX-NSR software receiver front-end +; 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 +; + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [samples per second]. +GNSS-SDR.internal_fs_sps=2560000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=false +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Two_Bit_Packed_File_Signal_Source +SignalSource.filename=/datalogger/signals/ifen/E1L1_FE0_Band0.stream ; <- PUT YOUR FILE HERE +SignalSource.item_type=byte +; big_endian_items : not needed for byte inputs +; If the input were 'short' then this can either be big endian or little +; endian. If it is big endian then the second byte should be output +; first in each short. +; SignalSource.big_endian_items=false +; big_endian_bytes: true if the most signficiant two bits in the byte +; are the first two to be output. +SignalSource.big_endian_bytes=false +; sample_type: one of 'real' 'iq' or 'qi' +; Data is either real or complex. +; if the data is complex there are two conventions for sample ordering: +; 1) Real first : 'iq' +; 2) Imaginary first: 'qi' +; This setting specifies which of the three cases holds for this data file +SignalSource.sample_type=real +SignalSource.sampling_frequency=20480000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through +DataTypeAdapter.item_type=float + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat +InputFilter.input_item_type=float +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.45 +InputFilter.band2_begin=0.55 +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=20480000 +InputFilter.IF=5499998.47412109 +InputFilter.decimation_factor=8 + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.dump=false +Resampler.dump_filename=./resampler.dat +Resampler.item_type=gr_complex + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=8 +Channels.in_acquisition=1 +Channel.signal=1C + + +;######### GPS ACQUISITION CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.sampled_ms=1 +Acquisition_1C.pfa=0.015 +;Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.dump=false +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.pll_bw_hz=45.0; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.order=3; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./epl_tracking_ch_ + + +;######### 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=10 +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 diff --git a/conf/Other/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf b/conf/Other/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf new file mode 100644 index 000000000..94ab55c7c --- /dev/null +++ b/conf/Other/gnss-sdr_GPS_L1_pulse_blanking_gr_complex.conf @@ -0,0 +1,111 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=2000000 + +;######### CONTROL_THREAD CONFIG ############ +ControlThread.wait_for_flowgraph=false + +;######### SUPL RRLP GPS assistance configuration ##### +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=File_Signal_Source +SignalSource.filename=/home/javier/signals/signal_source_int.dat +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=2000000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=dump.dat +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Pulse_Blanking_Filter +InputFilter.Pfa=0.001 +InputFilter.input_item_type=gr_complex +InputFilter.output_item_type=gr_complex +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=8 +Channels.in_acquisition=8 +Channel.signal=1C + + +;######### ACQUISITION GLOBAL 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=2.5 +;Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=5000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.dump=false +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.extend_correlation_ms=10 +Tracking_1C.pll_bw_hz=35; +Tracking_1C.pll_bw_narrow_hz=30; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.dll_bw_narrow_hz=1.5; +Tracking_1C.fll_bw_hz=2.0; +Tracking_1C.order=3; +Tracking_1C.dump=true +Tracking_1C.dump_filename=./epl_tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.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=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=1 +PVT.display_rate_ms=100 +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 diff --git a/conf/Other/gnss-sdr_GPS_L1_two_bits_cpx.conf b/conf/Other/gnss-sdr_GPS_L1_two_bits_cpx.conf new file mode 100644 index 000000000..efef7d428 --- /dev/null +++ b/conf/Other/gnss-sdr_GPS_L1_two_bits_cpx.conf @@ -0,0 +1,138 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=3200000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=false +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Two_Bit_Cpx_File_Signal_Source +SignalSource.filename=/datalogger/captures/ajith/test1_two_cpx_live.dat ; <- PUT YOUR FILE HERE +SignalSource.item_type=byte +SignalSource.sampling_frequency=19200000 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +SignalSource.enable_throttle_control=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through +DataTypeAdapter.item_type=gr_complex + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.input_item_type=gr_complex +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.45 +InputFilter.band2_begin=0.55 +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=19200000 +InputFilter.IF=4024000 +InputFilter.decimation_factor=6 +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.dump=false +Resampler.dump_filename=./resampler.dat +Resampler.item_type=gr_complex + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=6 +Channels.in_acquisition=1 +Channel.signal=1C + + +;######### GPS ACQUISITION CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.01 +;Acquisition_1C.pfa=0.0001 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_min=-10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.max_dwells=15 +Acquisition_1C.dump=false +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.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=1.5; +Tracking_1C.order=3; +Tracking_1C.dump=true +Tracking_1C.dump_filename=./tracking_ch + + +;######### 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=10 +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 diff --git a/conf/Other/gnss-sdr_GPS_L1_udp_with_monitor.conf b/conf/Other/gnss-sdr_GPS_L1_udp_with_monitor.conf new file mode 100644 index 000000000..9b7b18b94 --- /dev/null +++ b/conf/Other/gnss-sdr_GPS_L1_udp_with_monitor.conf @@ -0,0 +1,82 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [Sps] +GNSS-SDR.internal_fs_sps=4000000 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Custom_UDP_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.origin_address=127.0.0.1 +SignalSource.capture_device=lo +SignalSource.port=1230 +;SignalSource.payload_bytes=1472 # Not used! Size is retrieved from UDP Packet +SignalSource.sample_type=cfloat +SignalSource.IQ_swap=true +SignalSource.RF_channels=1 +SignalSource.channels_in_udp=1 +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=3 +Channels.in_acquisition=1 +Channel.signal=1C +Channel0.satellite=1 +Channel1.satellite=11 +Channel2.satellite=17 + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.threshold=0.008 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=250 + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=4.0; + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.averaging_depth=100 +PVT.flag_averaging=true +PVT.output_rate_ms=10 +PVT.display_rate_ms=500 +PVT.enable_monitor=true +PVT.monitor_client_addresses=127.0.0.1 +PVT.monitor_udp_port=1234 + +;######### MONITOR CONFIG ############ +Monitor.enable_monitor=true +Monitor.decimation_factor=1 +Monitor.client_addresses=127.0.0.1 +Monitor.udp_port=1233 + +;######### ACQUISITION MONITOR CONFIG ############ +AcquisitionMonitor.enable_monitor=true +AcquisitionMonitor.decimation_factor=1 +AcquisitionMonitor.client_addresses=127.0.0.1 +AcquisitionMonitor.udp_port=1231 + +;######### TRACKING MONITOR CONFIG ############ +TrackingMonitor.enable_monitor=true +TrackingMonitor.decimation_factor=1 +TrackingMonitor.client_addresses=127.0.0.1 +TrackingMonitor.udp_port=1232 \ No newline at end of file diff --git a/conf/RealTime_input/gnss-sdr_GPS_L1_2ch_fmcomms2_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_2ch_fmcomms2_realtime.conf new file mode 100644 index 000000000..1b057e4aa --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_GPS_L1_2ch_fmcomms2_realtime.conf @@ -0,0 +1,115 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=7000000 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Fmcomms2_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.device_address=192.168.0.4 +SignalSource.sampling_frequency=7000000 +SignalSource.freq=1575420000 +SignalSource.bandwidth=4000000 +SignalSource.RF_channels=2 +SignalSource.rx1_enable=true +SignalSource.rx2_enable=true +SignalSource.gain_mode_rx1=slow_attack +SignalSource.gain_mode_rx2=slow_attack +SignalSource.rf_port_select=A_BALANCED +SignalSource.gain_rx1=64 +SignalSource.gain_rx2=64 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +SignalSource.enable_dds_lo=false +SignalSource.freq_rf_tx_hz=1260000000 +SignalSource.freq_dds_tx_hz=1000 +SignalSource.scale_dds_dbfs=0.0 +SignalSource.phase_dds_deg=0.0 +SignalSource.tx_attenuation_db=0.0 + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner0.implementation=Pass_Through +SignalConditioner1.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=8 +Channels.in_acquisition=1 + +;# CHANNEL CONNECTION +Channel0.RF_channel_ID=0 +Channel0.signal=1C +Channel1.RF_channel_ID=0 +Channel1.signal=1C +Channel2.RF_channel_ID=0 +Channel2.signal=1C +Channel3.RF_channel_ID=0 +Channel3.signal=1C +Channel4.RF_channel_ID=1 +Channel4.signal=1C +Channel5.RF_channel_ID=1 +Channel5.signal=1C +Channel6.RF_channel_ID=1 +Channel6.signal=1C +Channel7.RF_channel_ID=1 +Channel7.signal=1C + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.threshold=2.5 +Acquisition_1C.blocking=true +Acquisition_1C.doppler_max=10000 +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=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.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 diff --git a/conf/RealTime_input/gnss-sdr_GPS_L1_LimeSDR.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_LimeSDR.conf new file mode 100644 index 000000000..c2a6b5019 --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_GPS_L1_LimeSDR.conf @@ -0,0 +1,129 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2021 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=5000000 +GNSS-SDR.use_acquisition_resampler=true + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Limesdr_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=5000000 +SignalSource.freq=1575420000 +SignalSource.gain=50 ; 0-73 dB no AGC in LimeSDR +; SignalSource.analog_bw ; if not set, defaults to sample_rate/2 +; SignalSource.digital_bw ; if not set, defaults to 0 (disabled filter) +; SignalSource.limesdr_serial ; if not set, its automatic +SignalSource.antenna=2 ; None(0), LNAH(1), LNAL(2), LNAW(3), AUTO(255) +SignalSource.ext_clock_MHz=0 ; 0 -> internal clock +SignalSource.limechannel_mode=0 ; A(0), B(1) or (A+B) MIMO(2) +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./captured_signal.dat + +SignalConditioner.implementation=Signal_Conditioner +DataTypeAdapter.implementation=Pass_Through +InputFilter.implementation=Pulse_Blanking_Filter ; <- Required in some locations +InputFilter.pfa=0.001 +InputFilter.segments_est=2500 +Resampler.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=7 +Channels_1B.count=0 +Channels.in_acquisition=1 +Channel.signal=1C + + +;######### GPS L1 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.pfa=0.01 +Acquisition_1C.doppler_max=5000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.dump=false +Acquisition_1C.dump_filename=./acq_dump.dat + +;######### GALILEO E1 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.pfa=0.01 +Acquisition_1B.blocking=false +Acquisition_1B.doppler_max=5000 +Acquisition_1B.doppler_step=125 +Acquisition_1B.dump=false +Acquisition_1B.dump_filename=./acq_dump.dat + + +;######### GPS L1 TRACKING 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=45.0; +Tracking_1C.dll_bw_hz=4.0; +Tracking_1C.pll_bw_narrow_hz=5.0; +Tracking_1C.dll_bw_narrow_hz=0.75; +Tracking_1C.extend_correlation_symbols=1; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.early_late_space_narrow_chips=0.5 + +;######### GALILEO E1 TRACKING 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.dll_bw_hz=0.75; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.5; +Tracking_1B.pll_bw_narrow_hz=5.0 +Tracking_1B.dll_bw_narrow_hz=0.5 +Tracking_1B.extend_correlation_symbols=1 +Tracking_1B.track_pilot=true +Tracking_1B.enable_fll_pull_in=true; +; Tracking_1B.pull_in_time_s=60 +Tracking_1B.enable_fll_steady_state=false +Tracking_1B.fll_bw_hz=10 +Tracking_1B.dump=false +Tracking_1B.dump_filename=tracking_ch_ + + +;######### TELEMETRY DECODER GPS L1 CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + +;######### TELEMETRY DECODER Galileo E1 CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.dump=false + + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=false +Observables.dump_filename=./observables.dat + + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.enable_rx_clock_correction=false +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.rinexobs_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.dump=false +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 diff --git a/conf/RealTime_input/gnss-sdr_GPS_L1_USRP_X300_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_USRP_X300_realtime.conf new file mode 100644 index 000000000..12c4bd0ee --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_GPS_L1_USRP_X300_realtime.conf @@ -0,0 +1,157 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; Configuration file for using USRP X300 as a RF front-end for GPS L1 signals. +; Set SignalSource.device_address to the IP address of your device +; and run: +; gnss-sdr --config_file=/path/to/gnss-sdr_GPS_L1_USRP_X300_realtime_new.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=4000000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=UHD_Signal_Source +SignalSource.device_address=192.168.40.2 ; <- PUT THE IP ADDRESS OF YOUR USRP HERE +SignalSource.item_type=cshort +SignalSource.sampling_frequency=4000000 +SignalSource.freq=1575420000 +SignalSource.gain=40 +SignalSource.subdevice=A:0 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through +DataTypeAdapter.item_type=cshort + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Fir_Filter +InputFilter.input_item_type=cshort +InputFilter.output_item_type=gr_complex +InputFilter.taps_item_type=float +InputFilter.number_of_taps=11 +InputFilter.number_of_bands=2 +InputFilter.band1_begin=0.0 +InputFilter.band1_end=0.48 +InputFilter.band2_begin=0.52 +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=4000000 +InputFilter.IF=0 +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.item_type=gr_complex +Resampler.sample_freq_in=4000000 +Resampler.sample_freq_out=4000000 +Resampler.dump=false +Resampler.dump_filename=./resampler.dat + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=8 +Channels_1B.count=0 +Channels.in_acquisition=1 +Channel.signal=1C + +;Channel0.signal=1C +;Channel1.signal=1C +;Channel2.signal=1C +;Channel3.signal=1C +;Channel4.signal=1C +;Channel5.signal=1C +;Channel6.signal=1C +;Channel7.signal=1C +;Channel8.signal=1C +;Channel9.signal=1C +;Channel10.signal=1C +;Channel11.signal=1C + +;######### ACQUISITION GLOBAL 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.01 +;Acquisition_1C.pfa=0.00001 +Acquisition_1C.doppler_max=8000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.bit_transition_flag=false +Acquisition_1C.max_dwells=1 +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.pll_bw_hz=30.0; +Tracking_1C.dll_bw_hz=4.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./tracking_ch_ + + +;######### 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.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=false; +PVT.nmea_dump_devname=/dev/pts/4 +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/RealTime_input/gnss-sdr_GPS_L1_USRP_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_USRP_realtime.conf new file mode 100644 index 000000000..e75b568dc --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_GPS_L1_USRP_realtime.conf @@ -0,0 +1,118 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; Configuration file for using USRP 1 as a RF front-end for GPS L1 signals. +; Run: +; gnss-sdr --config_file=/path/to/gnss-sdr_GPS_L1_USRP_realtime.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=2000000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=UHD_Signal_Source +;SignalSource.device_address=192.168.40.2 ; <- PUT THE IP ADDRESS OF YOUR USRP HERE +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=2000000 +SignalSource.freq=1575420000 +SignalSource.gain=60 +SignalSource.subdevice=A:0 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Pass_Through + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=6 +Channels_1B.count=0 +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 + +Channel.signal=1C + + +;######### ACQUISITION GLOBAL 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.01 +;Acquisition_1C.pfa=0.0001 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.bit_transition_flag=false +Acquisition_1C.max_dwells=1 +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.pll_bw_hz=30.0; +Tracking_1C.dll_bw_hz=4.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./tracking_ch_ + + +;######### 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 ############ +;#implementation: Position Velocity and Time (PVT) implementation: +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.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=false; +PVT.nmea_dump_devname=/dev/pts/4 +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/RealTime_input/gnss-sdr_GPS_L1_bladeRF.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_bladeRF.conf new file mode 100644 index 000000000..c2ec58cd6 --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_GPS_L1_bladeRF.conf @@ -0,0 +1,109 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=2000000 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Osmosdr_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=2000000 +SignalSource.freq=1575420000 +;# RF Gain: LNA Gain {0, 3, 6} +SignalSource.gain=6 +;# IF Gain: N/A +SignalSource.rf_gain=40 +;# BB Gain: RX VGA1 + VGA2 [5, 60] +SignalSource.if_gain=48 +SignalSource.AGC_enabled=false +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.osmosdr_args=bladerf=0 ; This line enables the bladeRF +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.decimation_factor=1 +InputFilter.input_item_type=gr_complex +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.85 +InputFilter.band2_begin=0.9 +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.dump=false +InputFilter.dump_filename=./input_filter.dat + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through + +;######### 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_Fine_Doppler +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.threshold=0.015 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.max_dwells=15 +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.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./tracking_ch_ + +;######### 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=Single +PVT.output_rate_ms=100 +PVT.display_rate_ms=500 +PVT.iono_model=Broadcast +PVT.trop_model=Saastamoinen +PVT.flag_rtcm_server=false +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1019_rate_ms=5000 +PVT.rtcm_MT1077_rate_ms=1000 +PVT.rinex_version=2 diff --git a/conf/RealTime_input/gnss-sdr_GPS_L1_fmcomms2_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_fmcomms2_realtime.conf new file mode 100644 index 000000000..deef32d6f --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_GPS_L1_fmcomms2_realtime.conf @@ -0,0 +1,134 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; You can define your own receiver and invoke it by doing +; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf +; + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=2000000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=false +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Fmcomms2_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.device_address=10.42.0.196 +SignalSource.sampling_frequency=2000000 +SignalSource.freq=1575420000 +SignalSource.bandwidth=2000000 +SignalSource.rx1_enable=true +SignalSource.gain_mode_rx1=manual +SignalSource.rf_port_select=A_BALANCED +SignalSource.gain_rx1=64 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat +InputFilter.input_item_type=gr_complex +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.45 +InputFilter.band2_begin=0.55 +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=2000000 +InputFilter.IF=0; IF deviation due to front-end LO inaccuracies [Hz] + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=5 +Channels.in_acquisition=1 +Channel.signal=1C + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.threshold=0.015 +;Acquisition_1C.pfa=0.0001 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.max_dwells=15 +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=40.0; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.order=3; +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 diff --git a/conf/RealTime_input/gnss-sdr_GPS_L1_plutosdr_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_plutosdr_realtime.conf new file mode 100644 index 000000000..e140810d2 --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_GPS_L1_plutosdr_realtime.conf @@ -0,0 +1,145 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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]. +;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE +; i.e. using front-end-cal as reported here: https://www.researchgate.net/publication/257137427_Turning_a_Television_into_a_GNSS_Receiver +GNSS-SDR.internal_fs_sps=4000000 +GNSS-SDR.use_acquisition_resampler=true + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=false +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Plutosdr_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.device_address=192.168.2.1 +SignalSource.sampling_frequency=4000000 +SignalSource.freq=1575420000 +SignalSource.bandwidth=2000000 +SignalSource.gain_mode=slow_attack +SignalSource.gain=30 +SignalSource.samples=0 +SignalSource.buffer_size=65000 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./capture.dat + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=8 +Channels_1B.count=0 +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.coherent_integration_time_ms=1 +Acquisition_1C.use_CFAR_algorithm=false; +Acquisition_1C.threshold=2.6 +Acquisition_1C.doppler_max=50000 +Acquisition_1C.doppler_step=250 +Acquisition_1C.dump=false +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.threshold=2.5 +Acquisition_1B.use_CFAR_algorithm=false +Acquisition_1B.blocking=false +Acquisition_1B.doppler_max=6000 +Acquisition_1B.doppler_step=125 +Acquisition_1B.dump=false +Acquisition_1B.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.enable_fll_pull_in=true; +Tracking_1C.fll_bw_hz=10 +Tracking_1C.pll_bw_narrow_hz=5.0; +Tracking_1C.dll_bw_narrow_hz=0.75; +Tracking_1C.extend_correlation_symbols=1; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.early_late_space_narrow_chips=0.5 + +;######### 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.dll_bw_hz=0.75; +Tracking_1B.early_late_space_chips=0.15; +Tracking_1B.very_early_late_space_chips=0.5; +Tracking_1B.pll_bw_narrow_hz=5.0 +Tracking_1B.dll_bw_narrow_hz=0.5 +Tracking_1B.extend_correlation_symbols=1 +Tracking_1B.track_pilot=true +Tracking_1B.enable_fll_pull_in=true; +;Tracking_1B.pull_in_time_s=60 +Tracking_1B.enable_fll_steady_state=false +Tracking_1B.fll_bw_hz=10 +Tracking_1B.dump=false +Tracking_1B.dump_filename=tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.dump=false + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=false +Observables.dump_filename=./observables.dat + + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.enable_rx_clock_correction=false +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.rinexobs_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.dump=false +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 diff --git a/conf/RealTime_input/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf new file mode 100644 index 000000000..000e2cb18 --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf @@ -0,0 +1,151 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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]. +;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE +; i.e. using front-end-cal as reported here: https://www.researchgate.net/publication/257137427_Turning_a_Television_into_a_GNSS_Receiver +; i.e. using front-end-cal as reported here: https://www.researchgate.net/publication/257137427_Turning_a_Television_into_a_GNSS_Receiver +GNSS-SDR.internal_fs_sps=1200000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=false +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +;#implementation +SignalSource.implementation=RtlTcp_Signal_Source +SignalSource.sampling_frequency=1200000 +SignalSource.freq=1575420000 +SignalSource.gain=40 +SignalSource.rf_gain=40 +SignalSource.if_gain=30 +SignalSource.AGC_enabled = false +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat +SignalSource.address=127.0.0.1 +SignalSource.port=1234 +SignalSource.swap_iq=false + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat +InputFilter.input_item_type=gr_complex +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.45 +InputFilter.band2_begin=0.55 +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 + +;#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 +;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE +; i.e. using front-end-cal as reported here: https://www.researchgate.net/publication/257137427_Turning_a_Television_into_a_GNSS_Receiver +InputFilter.sampling_frequency=1200000 +InputFilter.IF=80558 + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=4 +Channels.in_acquisition=1 +Channel.signal=1C + + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.threshold=0.015 +;Acquisition_1C.pfa=0.0001 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_min=-10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.max_dwells=15 +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.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + + +;######### OBSERVABLES CONFIG ############ +;#implementation: +Observables.implementation=Hybrid_Observables +Observables.dump=false +Observables.dump_filename=./observables.dat + + +;######### PVT CONFIG ############ +;#implementation: Position Velocity and Time (PVT) implementation: +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.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 +PVT.dump_filename=./PVT diff --git a/conf/RealTime_input/gnss-sdr_GPS_L1_rtlsdr_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L1_rtlsdr_realtime.conf new file mode 100644 index 000000000..149aa8b13 --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_GPS_L1_rtlsdr_realtime.conf @@ -0,0 +1,153 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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]. +;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE +; i.e. using front-end-cal as reported here: https://www.researchgate.net/publication/257137427_Turning_a_Television_into_a_GNSS_Receiver +GNSS-SDR.internal_fs_sps=1999898 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=false +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Osmosdr_Signal_Source +SignalSource.item_type=gr_complex +; FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE +; i.e. using front-end-cal as reported here: https://www.researchgate.net/publication/257137427_Turning_a_Television_into_a_GNSS_Receiver +SignalSource.sampling_frequency=2000000 +SignalSource.freq=1575420000 +SignalSource.gain=40 +SignalSource.rf_gain=40 +SignalSource.if_gain=30 +SignalSource.AGC_enabled = false +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat + +;# Please note that the new RTL-SDR Blog V3 dongles ship a < 1 PPM +;# temperature compensated oscillator (TCXO), which is well suited for GNSS +;# signal processing, and a 4.5 V powered bias-tee to feed an active antenna. +;# Whether the bias-tee is turned off before reception depends on which version +;# of gr-osmosdr was used when compiling GNSS-SDR. With an old version +;# (for example, v0.1.4-8), the utility rtl_biast may be used to switch the +;# bias-tee, and then call gnss-sdr. +;# See https://github.com/rtlsdrblog/rtl_biast +;# After reception the bias-tee is switched off automatically by the program. +;# With newer versions of gr-osmosdr (>= 0.1.4-13), the bias-tee can be +;# activated by uncommenting the following line: +;SignalSource.osmosdr_args=rtl,bias=1 + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through + +;######### INPUT_FILTER CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat +InputFilter.input_item_type=gr_complex +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.45 +InputFilter.band2_begin=0.55 +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 +;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE +; i.e. using front-end-cal as reported here: https://www.researchgate.net/publication/257137427_Turning_a_Television_into_a_GNSS_Receiver +InputFilter.sampling_frequency=1999898 +InputFilter.IF=80558 ; IF deviation due to front-end LO inaccuracies [Hz] + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=4 +Channels.in_acquisition=1 +Channel.signal=1C + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.threshold=0.015 +;Acquisition_1C.pfa=0.0001 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_min=-10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.max_dwells=15 +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=40.0; +Tracking_1C.dll_bw_hz=2.0; +Tracking_1C.order=3; +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.dump=false +PVT.flag_rtcm_server=false +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 diff --git a/conf/RealTime_input/gnss-sdr_GPS_L2C_USRP1_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L2C_USRP1_realtime.conf new file mode 100644 index 000000000..74e1fdbf0 --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_GPS_L2C_USRP1_realtime.conf @@ -0,0 +1,156 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; Configuration file for using USRP1 as a RF front-end for GPS L2C signals +; Run: +; gnss-sdr --config_file=/path/to/gnss-sdr_GPS_L2C_USRP1_realtime.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=2000000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_gps_enabled=false +GNSS-SDR.SUPL_read_gps_assistance_xml=true +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=UHD_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=2000000 +SignalSource.freq=1227600000 +SignalSource.gain=60 +SignalSource.subdevice=A:0 +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter.implementation=Pass_Through +DataTypeAdapter.item_type=gr_complex + + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter.implementation=Freq_Xlating_Fir_Filter +InputFilter.input_item_type=gr_complex +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.45 +InputFilter.band2_begin=0.55 +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=20000000 +InputFilter.IF=-1600000 +InputFilter.decimation_factor=1 +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat + + +;######### RESAMPLER CONFIG ############ +Resampler.implementation=Pass_Through +Resampler.dump=false +Resampler.dump_filename=./resampler.dat +Resampler.item_type=gr_complex +Resampler.sample_freq_in=2000000 +Resampler.sample_freq_out=2000000 + + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_2S.count=1 +Channels.in_acquisition=1 + +Channel.signal=2S + +Channel0.signal=2S +Channel1.signal=2S +Channel2.signal=2S +Channel3.signal=2S +Channel4.signal=2S +Channel5.signal=2S +Channel6.signal=2S +Channel7.signal=2S +;Channel8.signal=2S +;Channel9.signal=2S +;Channel10.signal=2S +;Channel11.signal=2S + + +;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition +Acquisition_2S.item_type=gr_complex +Acquisition_2S.pfa=0.013 +;Acquisition_2S.pfa=0.001 +Acquisition_2S.doppler_max=10000 +Acquisition_2S.doppler_step=100 +Acquisition_2S.max_dwells=1 +Acquisition_2S.dump=false +Acquisition_2S.dump_filename=./acq_dump.dat + + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking +Tracking_2S.item_type=gr_complex +Tracking_2S.pll_bw_hz=1.5; +Tracking_2S.dll_bw_hz=0.3; +Tracking_2S.order=3; +Tracking_2S.early_late_space_chips=0.5; +Tracking_2S.dump=true +Tracking_2S.dump_filename=./tracking_ch_ + + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder +TelemetryDecoder_2S.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 diff --git a/conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf b/conf/RealTime_input/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf similarity index 67% rename from conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf rename to conf/RealTime_input/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf index eaa4d666a..9bf551da0 100644 --- a/conf/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf +++ b/conf/RealTime_input/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf @@ -1,32 +1,37 @@ -; Default configuration file -; You can define your own receiver and invoke it by doing -; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; Configuration file for using USRP X300 as a RF front-end for GPS L2C signals +; Set SignalSource.device_address to the IP address of your device +; and run: +; gnss-sdr --config_file=/path/to/gnss-sdr_GPS_L2C_USRP_X300_realtime.conf ; [GNSS-SDR] ;######### GLOBAL OPTIONS ################## -;internal_fs_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false +;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [samples per second]. +GNSS-SDR.internal_fs_sps=4000000 ;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en GNSS-SDR.SUPL_gps_enabled=false GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com 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 ;######### SIGNAL_SOURCE CONFIG ############ SignalSource.implementation=UHD_Signal_Source -SignalSource.device_address=192.168.50.2 +SignalSource.device_address=192.168.50.2 ; <- PUT THE IP ADDRESS OF YOUR USRP HERE SignalSource.item_type=cshort SignalSource.sampling_frequency=4000000 SignalSource.freq=1227600000 @@ -37,8 +42,7 @@ SignalSource.subdevice=A:0 SignalSource.samples=0 SignalSource.repeat=false SignalSource.dump=false -SignalSource.dump_filename=../data/signal_source.dat -SignalSource.enable_throttle_control=false +SignalSource.dump_filename=./signal_source.dat ;######### SIGNAL_CONDITIONER CONFIG ############ @@ -50,8 +54,6 @@ DataTypeAdapter.item_type=cshort ;######### INPUT_FILTER CONFIG ############ InputFilter.implementation=Fir_Filter -InputFilter.dump=false -InputFilter.dump_filename=../data/input_filter.dat InputFilter.input_item_type=cshort InputFilter.output_item_type=gr_complex InputFilter.taps_item_type=float @@ -76,19 +78,20 @@ InputFilter.grid_density=16 InputFilter.sampling_frequency=4000000 InputFilter.IF=0 +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat + ;######### RESAMPLER CONFIG ############ Resampler.implementation=Pass_Through Resampler.dump=false -Resampler.dump_filename=../data/resampler.dat +Resampler.dump_filename=./resampler.dat Resampler.item_type=gr_complex Resampler.sample_freq_in=4000000 Resampler.sample_freq_out=4000000 ;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. Channels_2S.count=1 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver Channels.in_acquisition=1 Channel.signal=2S @@ -106,59 +109,54 @@ Channel7.signal=2S ;Channel10.signal=2S ;Channel11.signal=2S - - ;######### ACQUISITION GLOBAL CONFIG ############ ;# GPS L2C M -Acquisition_2S.dump=false -Acquisition_2S.dump_filename=./acq_dump.dat -Acquisition_2S.item_type=gr_complex -Acquisition_2S.if=0 Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S.threshold=0.0015 +Acquisition_2S.item_type=gr_complex +Acquisition_2S.pfa=0.015 ;Acquisition_2S.pfa=0.001 Acquisition_2S.doppler_max=5000 Acquisition_2S.doppler_min=-5000 Acquisition_2S.doppler_step=60 Acquisition_2S.max_dwells=1 +Acquisition_2S.dump=false +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.dump=true -Tracking_2S.dump_filename=./tracking_ch_ Tracking_2S.pll_bw_hz=2.0; Tracking_2S.dll_bw_hz=0.25; -Tracking_2S.fll_bw_hz=0.0; Tracking_2S.order=2; Tracking_2S.early_late_space_chips=0.5; +Tracking_2S.dump=true +Tracking_2S.dump_filename=./tracking_ch_ + ;######### TELEMETRY DECODER GPS CONFIG ############ -TelemetryDecoder_2S.implementation=GPS_L2_M_Telemetry_Decoder +TelemetryDecoder_2S.implementation=GPS_L2C_Telemetry_Decoder TelemetryDecoder_2S.dump=true -TelemetryDecoder_2S.decimation_factor=1; + ;######### OBSERVABLES CONFIG ############. -Observables.implementation=GPS_L1_CA_Observables +Observables.implementation=Hybrid_Observables Observables.dump=false Observables.dump_filename=./observables.dat ;######### PVT CONFIG ############ -PVT.implementation=GPS_L1_CA_PVT -PVT.averaging_depth=10 -PVT.flag_averaging=true +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 - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex +PVT.dump_filename=./PVT diff --git a/conf/RealTime_input/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf b/conf/RealTime_input/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf new file mode 100644 index 000000000..fe0ca55d2 --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_Galileo_E1_USRP_X300_realtime.conf @@ -0,0 +1,93 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; Configuration file for using USRP X300 as a RF front-end for Galileo E1 signals. +; Set SignalSource.device_address to the IP address of your device +; and run: +; gnss-sdr --config_file=/path/to/gnss-sdr_Galileo_E1_USRP_X300_realtime.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=4000000 +GNSS-SDR.Galileo_banned_prns=14,18 + + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=UHD_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.device_address=192.168.40.2 ; <- PUT THE IP ADDRESS OF YOUR USRP HERE +SignalSource.sampling_frequency=4000000 +SignalSource.freq=1575420000 +SignalSource.gain=50 +SignalSource.subdevice=A:0 +SignalSource.samples=0 +SignalSource.dump=false +SignalSource.dump_filename=./signal_source.dat + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner.implementation=Pass_Through + + +;######### CHANNELS GLOBAL CONFIG ###### +Channels_1B.count=4 +Channels.in_acquisition=1 +Channel.signal=1B + + +;######### ACQUISITION GLOBAL 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=1 +Acquisition_1B.pfa=0.000008 +Acquisition_1B.doppler_max=6000 +Acquisition_1B.doppler_step=250 +Acquisition_1B.cboc=false +Acquisition_1B.dump=false +Acquisition_1B.dump_filename=./acq_dump.dat + + +;######### TRACKING GLOBAL CONFIG ############ +Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking +Tracking_1B.item_type=gr_complex +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; +Tracking_1B.very_early_late_space_chips=0.6; +Tracking_1B.dump=false +Tracking_1B.dump_filename=./veml_tracking_ch_ + + +;######### TELEMETRY DECODER CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.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.nmea_dump_filename=./gnss_sdr_pvt.nmea +PVT.flag_nmea_tty_port=true +PVT.nmea_dump_devname=/dev/pts/4 +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_Glonass_L1_USRP_realtime.conf b/conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_Glonass_L1_USRP_realtime.conf new file mode 100644 index 000000000..6ed59bd79 --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_Glonass_L1_USRP_realtime.conf @@ -0,0 +1,281 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; You can define your own receiver and invoke it by doing +; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf +; + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=8000000 +GNSS-SDR.Beidou_banned_prns=56,57,58 + + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Osmosdr_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=56000000 +SignalSource.freq=1584000000 +SignalSource.osmosdr_args=uhd,type=b200,num_recv_frames=256 +SignalSource.gain=50 +SignalSource.antenna=TX/RX +SignalSource.if_bw=56000000 +SignalSource.AGC_enabled=false +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.RF_channels=3 +SignalSource.enable_throttle_control=false +SignalSource.dump=false + + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner +SignalConditioner1.implementation=Signal_Conditioner +SignalConditioner2.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter1.implementation=Pass_Through +DataTypeAdapter2.implementation=Pass_Through + +;######### INPUT_FILTER CONFIG ############ +InputFilter0.implementation=Freq_Xlating_Fir_Filter +InputFilter0.decimation_factor=7 +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.filter_type=lowpass +InputFilter0.bw=7000000 +InputFilter0.tw=500000 +InputFilter0.IF=-22902000 +InputFilter0.sampling_frequency=56000000 +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter.dat + +;######### INPUT_FILTER CONFIG ############ +InputFilter1.implementation=Freq_Xlating_Fir_Filter +InputFilter1.decimation_factor=7 +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex +InputFilter1.taps_item_type=float +InputFilter1.filter_type=lowpass +InputFilter1.bw=7000000 +InputFilter1.tw=500000 +InputFilter1.IF=-8580000 +InputFilter1.sampling_frequency=56000000 +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter.dat + +;######### INPUT_FILTER CONFIG ############ +InputFilter2.implementation=Freq_Xlating_Fir_Filter +InputFilter2.decimation_factor=7 +InputFilter2.input_item_type=gr_complex +InputFilter2.output_item_type=gr_complex +InputFilter2.taps_item_type=float +InputFilter2.filter_type=lowpass +InputFilter2.bw=7000000 +InputFilter2.tw=500000 +InputFilter2.IF=18000000 +InputFilter2.sampling_frequency=56000000 +InputFilter2.dump=false +InputFilter2.dump_filename=./input_filter.dat + +;######### RESAMPLER CONFIG ############ +Resampler0.implementation=Pass_Through +Resampler1.implementation=Pass_Through +Resampler2.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1B.count=10 +Channels_1C.count=10 +Channels_B1.count=14 +Channels_1G.count=8 + +Channels_1B.RF_channel_ID=1 +Channels_1C.RF_channel_ID=1 +Channels_B1.RF_channel_ID=0 +Channels_1G.RF_channel_ID=2 + + +Channels.in_acquisition=2 + +;######### ACQUISITION BEIDOU CONFIG ############ +Acquisition_B1.implementation=BEIDOU_B1I_PCPS_Acquisition +Acquisition_B1.item_type=gr_complex +Acquisition_B1.coherent_integration_time_ms=2 +;Acquisition_B1.max_dwells=2 +;Acquisition_B1.pfa=0.02 +Acquisition_B1.pfa=0.000002 +Acquisition_B1.doppler_max=6000 +Acquisition_B1.doppler_step=100 +Acquisition_B1.dump=false +Acquisition_B1.dump_filename=./bds_acq +;Acquisition_B1.blocking=true +Acquisition_B1.bit_transition_flag = false; + +;######### ACQUISITION GPS CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.015 +Acquisition_1C.doppler_max=6000 +Acquisition_1C.doppler_step=200 +Acquisition_1C.max_dwells=4 +;Acquisition_1C.blocking=true +Acquisition_1C.dump=false +Acquisition_1C.dump_filename=./acq_dump.dat + +;######### ACQUISITION GALILEO CONFIG ############ +Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition +Acquisition_1B.coherent_integration_time_ms=2 +;Acquisition_1B.pfa=0.000008 +Acquisition_1B.pfa=0.025 +Acquisition_1B.doppler_max=6000 +Acquisition_1B.doppler_step=200 +Acquisition_1B.max_dwells=4 +;Acquisition_1B.repeat_satellite=true +Acquisition_1B.cboc=true +;Acquisition_1B.blocking=true +Acquisition_1B.dump=false +Acquisition_1B.dump_filename=./acq_dump.dat + +;######### ACQUISITION GLONASS CONFIG ############ +Acquisition_1G.implementation=GLONASS_L1_CA_PCPS_Acquisition +Acquisition_1G.item_type=gr_complex +Acquisition_1G.coherent_integration_time_ms=1 +Acquisition_1G.max_dwells=4 +Acquisition_1G.pfa=0.02 +Acquisition_1G.doppler_max=6000 +Acquisition_1G.doppler_step=100 +Acquisition_1G.dump=false +Acquisition_1G.dump_filename=./G1_acq + + + +;######### TRACKING BEIDOU CONFIG ############ +Tracking_B1.implementation=BEIDOU_B1I_DLL_PLL_Tracking +Tracking_B1.item_type=gr_complex +Tracking_B1.extend_correlation_symbols=10 +Tracking_B1.pll_bw_hz=50.0 +Tracking_B1.dll_bw_hz=2.00 +Tracking_B1.pll_bw_narrow_hz=15.0 +Tracking_B1.dll_bw_narrow_hz=1.50 +;Tracking_B1.cn0_min=20 +;Tracking_B1.fll_bw_hz=20 +;Tracking_B1.enable_fll_pull_in=true +;Tracking_B1.enable_fll_steady_state=false +Tracking_B1.dump=false +Tracking_B1.dump_filename=./epl_tracking_ch_ + +;######### TRACKING GPS CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.extend_correlation_symbols=10 +Tracking_1C.early_late_space_chips=0.5 +Tracking_1C.early_late_space_narrow_chips=0.15 +Tracking_1C.pll_bw_hz=30.0 +Tracking_1C.dll_bw_hz=2.0 +Tracking_1C.pll_bw_narrow_hz=10.0 +Tracking_1C.dll_bw_narrow_hz=1.50 +Tracking_1C.fll_bw_hz=10 +Tracking_1C.enable_fll_pull_in=true +Tracking_1C.enable_fll_steady_state=false +Tracking_1C.dump=false +Tracking_1C.dump_filename=tracking_ch_ + +;######### TRACKING GALILEO CONFIG ############ +Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking +Tracking_1B.extend_correlation_symbols=4 +Tracking_1B.item_type=gr_complex +Tracking_1B.pll_bw_hz=30.0 +Tracking_1B.dll_bw_hz=2.0 +Tracking_1B.pll_bw_narrow_hz=20.0 +Tracking_1B.dll_bw_narrow_hz=1.50 +Tracking_1B.track_pilot=true +Tracking_1B.enable_fll_pull_in=true; +Tracking_1B.enable_fll_steady_state=false +Tracking_1B.fll_bw_hz=20 + +;######### TRACKING GLONASS CONFIG ############ +Tracking_1G.implementation=GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking +Tracking_1G.item_type=gr_complex +Tracking_1G.pll_bw_hz=40 +Tracking_1G.dll_bw_hz=2.5 +Tracking_1G.extend_correlation_ms=1 +Tracking_1G.pll_bw_narrow_hz=20 +Tracking_1G.dll_bw_narrow_hz=1.5 +Tracking_1G.dump=false +Tracking_1G.dump_filename=./epl_tracking_ch_ + + + +;######### TELEMETRY DECODER BEIDOU CONFIG ############ +TelemetryDecoder_B1.implementation=BEIDOU_B1I_Telemetry_Decoder +TelemetryDecoder_B1.dump=false + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + +;######### TELEMETRY DECODER GALILEO E1B CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.dump=false + +;######### TELEMETRY DECODER GLONASS CONFIG ############ +TelemetryDecoder_1G.implementation=GLONASS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1G.dump=false + + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=false +Observables.dump_filename=./observables.dat + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.threshold_reject_GDOP=100 +PVT.elevation_mask=3 +PVT.raim_fde=1 +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.display_rate_ms=500 +PVT.enable_rx_clock_correction=true +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1019_rate_ms=5000 +PVT.rtcm_MT1077_rate_ms=1000 +PVT.rinex_version=2 +PVT.flag_nmea_tty_port=true +PVT.nmea_dump_devname=/dev/pts/3 + +; To use gpsd with GNSS-SDR +; 1. run socat -d -d pty,raw,echo=0 pty,raw,echo=0 +; 2. Set PVT.nmea_dump_devname to first PTY from socat output +; 3. run gpsd -b -n -N /dev/pts/4 +; where /dev/pts/4 is the second PTY from socat output +; 4. run some gpsd client (xgps or other) + + + +PVT.enable_monitor=true +PVT.monitor_client_addresses=127.0.0.1 +PVT.monitor_udp_port=1111 + +Monitor.enable_monitor=true +Monitor.decimation_factor=4 +Monitor.client_addresses=127.0.0.1 +Monitor.udp_port=1112 + +;AcquisitionMonitor.enable_monitor=true +AcquisitionMonitor.client_addresses=127.0.0.1 +AcquisitionMonitor.udp_port=1112 + + diff --git a/conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_L1_hackrf_realtime.conf b/conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_L1_hackrf_realtime.conf new file mode 100644 index 000000000..05ff16b75 --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_multichannel_GPS_Galileo_Beidou_L1_hackrf_realtime.conf @@ -0,0 +1,237 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; You can define your own receiver and invoke it by doing +; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf +; + +[GNSS-SDR] + +;######### GLOBAL OPTIONS ################## +GNSS-SDR.internal_fs_sps=4000000 +GNSS-SDR.Beidou_banned_prns=56,57,58 + + +;######### SIGNAL_SOURCE CONFIG ############ +SignalSource.implementation=Osmosdr_Signal_Source +SignalSource.item_type=gr_complex +SignalSource.sampling_frequency=20000000 +SignalSource.freq=1567420000 +SignalSource.if_bw=18000000 +;# Next line enables the internal HackRF One bias (3.3 VDC) +SignalSource.osmosdr_args=hackrf=0,bias=1,buffers=256 +SignalSource.gain=0 +SignalSource.rf_gain=40 +SignalSource.if_gain=40 +SignalSource.AGC_enabled=false +SignalSource.samples=0 +SignalSource.repeat=false +SignalSource.RF_channels=2 +SignalSource.enable_throttle_control=false +SignalSource.dump=false + + + +;######### SIGNAL_CONDITIONER CONFIG ############ +SignalConditioner0.implementation=Signal_Conditioner +SignalConditioner1.implementation=Signal_Conditioner + +;######### DATA_TYPE_ADAPTER CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter1.implementation=Pass_Through + +;######### INPUT_FILTER CONFIG ############ +InputFilter0.implementation=Freq_Xlating_Fir_Filter +;InputFilter0.implementation=Pass_Through +InputFilter0.decimation_factor=5 +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex +InputFilter0.taps_item_type=float +InputFilter0.filter_type=lowpass +InputFilter0.bw=3000000 +InputFilter0.tw=1000000 +InputFilter0.IF=-6322000 +InputFilter0.sampling_frequency=20000000 +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter.dat + +;######### INPUT_FILTER CONFIG ############ +InputFilter1.implementation=Freq_Xlating_Fir_Filter +;InputFilter1.implementation=Pass_Through +InputFilter1.decimation_factor=5 +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex +InputFilter1.taps_item_type=float +InputFilter1.filter_type=lowpass +InputFilter1.bw=3000000 +InputFilter1.tw=1000000 +InputFilter1.IF=8000000 +InputFilter1.sampling_frequency=20000000 +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter.dat + + + + + +;######### RESAMPLER CONFIG ############ +Resampler0.implementation=Pass_Through +Resampler1.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1B.count=10 +Channels_1C.count=10 +Channels_B1.count=14 + +Channels_1B.RF_channel_ID=1 +Channels_1C.RF_channel_ID=1 +Channels_B1.RF_channel_ID=0 + + + +Channels.in_acquisition=10 + +;######### ACQUISITION BEIDOU CONFIG ############ +Acquisition_B1.implementation=BEIDOU_B1I_PCPS_Acquisition +Acquisition_B1.item_type=gr_complex +Acquisition_B1.coherent_integration_time_ms=2 +;Acquisition_B1.max_dwells=2 +;Acquisition_B1.pfa=0.02 +Acquisition_B1.pfa=0.000002 +Acquisition_B1.doppler_max=3800 +Acquisition_B1.doppler_step=100 +Acquisition_B1.dump=false +Acquisition_B1.dump_filename=./bds_acq +;Acquisition_B1.blocking=true +Acquisition_B1.bit_transition_flag = false; + +;######### ACQUISITION GPS CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.pfa=0.015 +Acquisition_1C.doppler_max=5000 +Acquisition_1C.doppler_step=200 +Acquisition_1C.max_dwells=4 +;Acquisition_1C.blocking=true +Acquisition_1C.dump=false +Acquisition_1C.dump_filename=./acq_dump.dat + +;######### ACQUISITION GALILEO CONFIG ############ +Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition +Acquisition_1B.coherent_integration_time_ms=2 +;Acquisition_1B.pfa=0.000008 +Acquisition_1B.pfa=0.025 +Acquisition_1B.doppler_max=5000 +Acquisition_1B.doppler_step=200 +Acquisition_1B.max_dwells=4 +;Acquisition_1B.repeat_satellite=true +Acquisition_1B.cboc=true +;Acquisition_1B.blocking=true +Acquisition_1B.dump=false +Acquisition_1B.dump_filename=./acq_dump.dat + + + + +;######### TRACKING BEIDOU CONFIG ############ +Tracking_B1.implementation=BEIDOU_B1I_DLL_PLL_Tracking +Tracking_B1.item_type=gr_complex +Tracking_B1.extend_correlation_symbols=10 +Tracking_B1.pll_bw_hz=30.0 +Tracking_B1.dll_bw_hz=2.00 +Tracking_B1.pll_bw_narrow_hz=15.0 +Tracking_B1.dll_bw_narrow_hz=0.50 +;Tracking_B1.cn0_min=20 +Tracking_B1.fll_bw_hz=20 +Tracking_B1.enable_fll_pull_in=true +Tracking_B1.enable_fll_steady_state=false +Tracking_B1.dump=false +Tracking_B1.dump_filename=./epl_tracking_ch_ + +;######### TRACKING GPS CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.extend_correlation_symbols=10 +Tracking_1C.early_late_space_chips=0.5 +Tracking_1C.early_late_space_narrow_chips=0.15 +Tracking_1C.pll_bw_hz=30.0 +Tracking_1C.dll_bw_hz=2.0 +Tracking_1C.pll_bw_narrow_hz=10.0 +Tracking_1C.dll_bw_narrow_hz=0.50 +Tracking_1C.fll_bw_hz=10 +Tracking_1C.enable_fll_pull_in=true +Tracking_1C.enable_fll_steady_state=false +Tracking_1C.dump=false +Tracking_1C.dump_filename=tracking_ch_ + +;######### TRACKING GALILEO CONFIG ############ +Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking +Tracking_1B.extend_correlation_symbols=4 +Tracking_1B.item_type=gr_complex +Tracking_1B.pll_bw_hz=30.0 +Tracking_1B.dll_bw_hz=2.0 +Tracking_1B.pll_bw_narrow_hz=20.0 +Tracking_1B.dll_bw_narrow_hz=0.50 +Tracking_1B.track_pilot=true +Tracking_1B.enable_fll_pull_in=true; +Tracking_1B.enable_fll_steady_state=false +Tracking_1B.fll_bw_hz=20 + + +;######### TELEMETRY DECODER BEIDOU CONFIG ############ +TelemetryDecoder_B1.implementation=BEIDOU_B1I_Telemetry_Decoder +TelemetryDecoder_B1.dump=false + +;######### TELEMETRY DECODER GPS CONFIG ############ +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + +;######### TELEMETRY DECODER GALILEO E1B CONFIG ############ +TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder +TelemetryDecoder_1B.dump=false + + + +;######### OBSERVABLES CONFIG ############ +Observables.implementation=Hybrid_Observables +Observables.dump=false +Observables.dump_filename=./observables.dat + +;######### PVT CONFIG ############ +PVT.implementation=RTKLIB_PVT +PVT.threshold_reject_GDOP=100 +PVT.elevation_mask=4 +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.display_rate_ms=500 +PVT.enable_rx_clock_correction=true +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.rtcm_tcp_port=2101 +PVT.rtcm_MT1019_rate_ms=5000 +PVT.rtcm_MT1077_rate_ms=1000 +PVT.rinex_version=2 +PVT.flag_nmea_tty_port=true +PVT.nmea_dump_devname=/dev/pts/3 + + +PVT.enable_monitor=true +PVT.monitor_client_addresses=127.0.0.1 +PVT.monitor_udp_port=1111 + +Monitor.enable_monitor=true +Monitor.decimation_factor=4 +Monitor.client_addresses=127.0.0.1 +Monitor.udp_port=1112 + +AcquisitionMonitor.enable_monitor=true +AcquisitionMonitor.client_addresses=127.0.0.1 +AcquisitionMonitor.udp_port=1112 + + diff --git a/conf/RealTime_input/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf b/conf/RealTime_input/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf new file mode 100644 index 000000000..de70827ed --- /dev/null +++ b/conf/RealTime_input/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf @@ -0,0 +1,161 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + +; 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=4000000 + + +;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en +GNSS-SDR.SUPL_1C_enabled=false +GNSS-SDR.SUPL_read_1C_assistance_xml=true +GNSS-SDR.SUPL_1C_ephemeris_server=supl.google.com +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_MNC=5 +GNSS-SDR.SUPL_LAC=0x59e2 +GNSS-SDR.SUPL_CI=0x31b0 + +;######### SIGNAL_SOURCE CONFIG ############ +;#implementation +SignalSource.implementation=UHD_Signal_Source +SignalSource.device_address=192.168.40.2 ; <- PUT THE IP ADDRESS OF YOUR USRP HERE +SignalSource.item_type=gr_complex +SignalSource.RF_channels=2 +SignalSource.sampling_frequency=4000000 +SignalSource.subdevice=A:0 B:0 + +;######### RF Channels specific settings ###### +;## RF CHANNEL 0 ## +SignalSource.freq0=1575420000 +SignalSource.gain0=50 +SignalSource.samples0=0 + +;## RF CHANNEL 1 ## +SignalSource.freq1=1575420000 +SignalSource.gain1=50 +SignalSource.samples1=0 + + +;######### SIGNAL_CONDITIONER 0 CONFIG ############ +SignalConditioner0.implementation=Pass_Through + +;######### DATA_TYPE_ADAPTER 0 CONFIG ############ +DataTypeAdapter0.implementation=Pass_Through +DataTypeAdapter0.item_type=gr_complex + +;######### INPUT_FILTER 0 CONFIG ############ +InputFilter0.implementation=Pass_Through +InputFilter0.dump=false +InputFilter0.dump_filename=./input_filter.dat +InputFilter0.input_item_type=gr_complex +InputFilter0.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 0 ############ +Resampler0.implementation=Pass_Through + + +;######### SIGNAL_CONDITIONER 1 CONFIG ############ +SignalConditioner1.implementation=Pass_Through + + +;######### INPUT_FILTER 1 CONFIG ############ +InputFilter1.implementation=Pass_Through +InputFilter1.dump=false +InputFilter1.dump_filename=./input_filter.dat +InputFilter1.input_item_type=gr_complex +InputFilter1.output_item_type=gr_complex + +;######### RESAMPLER CONFIG 1 ############ +Resampler1.implementation=Pass_Through + +;######### CHANNELS GLOBAL CONFIG ############ +Channels_1C.count=4 + +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 + +;# CHANNEL CONNECTION +Channel0.RF_channel_ID=0 +Channel1.RF_channel_ID=1 +Channel2.RF_channel_ID=0 +Channel3.RF_channel_ID=1 + + +;#signal: +Channel0.signal=1C +Channel1.signal=1C +Channel2.signal=1C +Channel3.signal=1C + + +;######### ACQUISITION GLOBAL 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.01 +;Acquisition_1C.pfa=0.01 +Acquisition_1C.doppler_max=8000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.bit_transition_flag=false +Acquisition_1C.max_dwells=1 +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.pll_bw_hz=40.0; +Tracking_1C.dll_bw_hz=4.0; +Tracking_1C.order=3; +Tracking_1C.early_late_space_chips=0.5; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./tracking_ch_ + + +;######### 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.nmea_dump_filename=./gnss_sdr_pvt.nmea; +PVT.flag_nmea_tty_port=false; +PVT.nmea_dump_devname=/dev/pts/4 +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 +PVT.dump=false +PVT.dump_filename=./PVT diff --git a/conf/gnss-sdr.conf b/conf/gnss-sdr.conf index 8fb0a3790..16cb1e865 100644 --- a/conf/gnss-sdr.conf +++ b/conf/gnss-sdr.conf @@ -1,3 +1,8 @@ +; This is a GNSS-SDR configuration file +; The configuration API is described at https://gnss-sdr.org/docs/sp-blocks/ +; SPDX-License-Identifier: GPL-3.0-or-later +; SPDX-FileCopyrightText: (C) 2010-2020 (see AUTHORS file for a list of contributors) + ; Default configuration file ; You can define your own receiver and invoke it by doing ; gnss-sdr --config_file=my_GNSS_SDR_configuration.conf @@ -6,322 +11,135 @@ [GNSS-SDR] ;######### GLOBAL OPTIONS ################## -;internal_fs_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 +;internal_fs_sps: Internal signal sampling frequency after the signal conditioning stage [samples per second]. +GNSS-SDR.internal_fs_sps=4000000 -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false ;######### SUPL RRLP GPS assistance configuration ##### +; Check https://www.mcc-mnc.com/ +; On Android: https://play.google.com/store/apps/details?id=net.its_here.cellidinfo&hl=en GNSS-SDR.SUPL_gps_enabled=false GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com +GNSS-SDR.SUPL_gps_ephemeris_server=supl.google.com 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 ;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -;SignalSource.filename=../data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat -SignalSource.filename=../../../Documents/workspace/code2/trunk/data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=short -;SignalSource.item_type=byte - -;#sampling_frequency: Original Signal sampling frequency in [Hz] +SignalSource.filename=/datalogger/signals/CTTC/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat ; <- PUT YOUR FILE HERE +SignalSource.item_type=ishort SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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 -;SignalConditioner.implementation=Pass_Through ;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block DataTypeAdapter.implementation=Ishort_To_Complex -;DataTypeAdapter.implementation=Ibyte_To_Cbyte -;DataTypeAdapter.implementation=Pass_Through -;DataTypeAdapter.item_type=byte ;######### INPUT_FILTER CONFIG ############ -;## Filter the input data. Can be combined with frequency translation for IF signals +InputFilter.implementation=Pass_Through ; or Fir_Filter -;#implementation: Use [Pass_Through] or [Fir_Filter] or [Freq_Xlating_Fir_Filter] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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.band1_end=0.44 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 - -;#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.sampling_frequency=4000000 InputFilter.IF=0 - +InputFilter.dump=false +InputFilter.dump_filename=./input_filter.dat ;######### 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=Direct_Resampler Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex -;Resampler.item_type=cbyte - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=8000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 +Resampler.dump_filename=./resampler.dat ;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=6 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver +Channels_1C.count=6 +Channels_1B.count=0 Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C ;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options ;######### CHANNEL 0 CONFIG ############ - -;Channel0.system=GPS ;Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search ;Channel0.satellite=11 ;######### CHANNEL 1 CONFIG ############ - -;Channel1.system=GPS ;Channel1.signal=1C ;Channel1.satellite=18 ;######### ACQUISITION GLOBAL CONFIG ############ +Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler +Acquisition_1C.item_type=gr_complex +Acquisition_1C.coherent_integration_time_ms=1 +Acquisition_1C.threshold=2.5 +;Acquisition_1C.pfa=0.0001 +Acquisition_1C.doppler_max=10000 +Acquisition_1C.doppler_step=500 +Acquisition_1C.max_dwells=5 +Acquisition_1C.dump=false +Acquisition_1C.dump_filename=./acq_dump.dat -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler -;#threshold: Acquisition threshold -Acquisition_GPS.threshold=0.005 -;#pfa: 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] -;Acquisition_GPS.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_min=-10000 -;#doppler_step Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=500 -;#maximum dwells -Acquisition_GPS.max_dwells=5 ;######### TRACKING GLOBAL CONFIG ############ +Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking +Tracking_1C.item_type=gr_complex +Tracking_1C.pll_bw_hz=45.0; +Tracking_1C.dll_bw_hz=3.0; +Tracking_1C.order=3; +Tracking_1C.dump=false +Tracking_1C.dump_filename=./epl_tracking_ch_ -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=../data/epl_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=45.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=3.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; ;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; +TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder +TelemetryDecoder_1C.dump=false + ;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_Observables - -;#dump: Enable or disable the Observables internal binary data file logging [true] or [false] +Observables.implementation=Hybrid_Observables Observables.dump=false - -;#dump_filename: Log path and filename. Observables.dump_filename=./observables.dat ;######### PVT CONFIG ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=100 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] +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.AR_GPS=PPP-AR ; options: OFF, Continuous, Instantaneous, Fix-and-Hold, PPP-AR PVT.output_rate_ms=10 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=true; - -;#nmea_dump_devname: serial device descriptor for NMEA logging +PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea +PVT.flag_nmea_tty_port=true PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] +PVT.flag_rtcm_server=true +PVT.flag_rtcm_tty_port=false +PVT.rtcm_dump_devname=/dev/pts/1 PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex +PVT.dump_filename=./PVT diff --git a/conf/gnss-sdr_GPS_L1_GN3S_realtime.conf b/conf/gnss-sdr_GPS_L1_GN3S_realtime.conf deleted file mode 100644 index d0d536325..000000000 --- a/conf/gnss-sdr_GPS_L1_GN3S_realtime.conf +++ /dev/null @@ -1,393 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2727933.33 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -;#Notes for GN3S source: -; - The front-end sampling frequency is fixed to 8.1838 MSPS (8183800 Hz). -; - The baseband signal is shifted to an IF of 38400 Hz. It should be corrected with the signal conditioner block -SignalSource.implementation=GN3S_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -;SignalSource.filename=../data/my_capture.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=8183800 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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 -;SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -InputFilter.implementation=Freq_Xlating_Fir_Filter -;InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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 - -;#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 - -; 8183800/5 = 1636760 -; 8183800/4 = 2727933.33 -; 8183800/3 = 2727933.33333333 -InputFilter.sampling_frequency=8183800 -InputFilter.IF=38400 - -InputFilter.decimation_factor=3 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=8183800 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=2727933.33 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=4 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -Channel0.satellite=15 -Channel0.repeat_satellite=false - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=GPS -Channel1.signal=1C -Channel1.satellite=18 -Channel1.repeat_satellite=false - -;######### CHANNEL 2 CONFIG ############ - -Channel2.system=GPS -Channel2.signal=1C -Channel2.satellite=16 -Channel2.repeat_satellite=false - -;######### CHANNEL 3 CONFIG ############ - -Channel3.system=GPS -Channel3.signal=1C -Channel3.satellite=21 -Channel3.repeat_satellite=false - -;######### CHANNEL 4 CONFIG ############ - -Channel4.system=GPS -Channel4.signal=1C -Channel4.satellite=3 -Channel4.repeat_satellite=false - -;######### CHANNEL 5 CONFIG ############ - -Channel5.system=GPS -Channel5.signal=1C -;Channel5.satellite=21 -;Channel5.repeat_satellite=false - - -;######### ACQUISITION GLOBAL CONFIG ############ - - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition_GPS.threshold=0.008 -;#pfa: 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] -;Acquisition_GPS.pfa=0.01 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=500 - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] [GPS_L1_CA_DLL_PLL_Optim_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Optim_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=40.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_GPS.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=100 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100; - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500; - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=true; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_GPS_L1_SPIR.conf b/conf/gnss-sdr_GPS_L1_SPIR.conf deleted file mode 100644 index d4106b49b..000000000 --- a/conf/gnss-sdr_GPS_L1_SPIR.conf +++ /dev/null @@ -1,343 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=Spir_File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/media/fabra/dd44068b-f808-4164-834c-35b550037514/CTTC/spir_file_20secs.dat -;SignalSource.filename=/Users/carlesfernandez/Documents/workspace/code2/trunk/data/20Secs/20Secs_L1.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=int - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=80000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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. Please disable it in this version. -;#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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -InputFilter.implementation=Freq_Xlating_Fir_Filter -;InputFilter.implementation=Pass_Through - -;#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 - -;#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.sampling_frequency=80000000 -InputFilter.IF=10164 -InputFilter.decimation_factor=20 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=80000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=10 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;#signal: -;# "1C" GPS L1 C/A -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C - - - -;Galileo FM3 -> PRN 19 -;Galileo FM4 -> PRN 20 -;######### CHANNEL 0 CONFIG ############ - -;Channel0.system=Galileo -;Channel0.signal=1B -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -;Channel0.satellite=20 - -;######### CHANNEL 1 CONFIG ############ - -;Channel1.system=Galileo -;Channel1.signal=1B -;Channel1.satellite=12 - -;######### CHANNEL 2 CONFIG ############ - -;Channel2.system=Galileo -;Channel2.signal=1B -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -;Channel2.satellite=11 - -;######### CHANNEL 3 CONFIG ############ - -;Channel3.system=Galileo -;Channel3.signal=1B -;Channel3.satellite=19 - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler -;#threshold: Acquisition threshold -Acquisition_GPS.threshold=0.005 -;#pfa: 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] -;Acquisition_GPS.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_min=-10000 -;#doppler_step Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=500 -;#maximum dwells -Acquisition_GPS.max_dwells=5 - -;######### ACQUISITION CHANNELS CONFIG ###### - -;######### ACQUISITION CH 0 CONFIG ############ - -;#repeat_satellite: Use only jointly with the satellite PRN ID option. The default value is false -;Acquisition0.repeat_satellite = true -;Acquisition1.repeat_satellite = true -;Acquisition2.repeat_satellite = true -;Acquisition3.repeat_satellite = true - -;#cboc: Only for [Galileo_E1_PCPS_Ambiguous_Acquisition]. This option allows you to choose between acquiring with CBOC signal [true] or sinboc(1,1) signal [false]. -;#Use only if GNSS-SDR.internal_fs_hz is greater than or equal to 6138000 -Acquisition0.cboc=false - - -;######### ACQUISITION CH 1 CONFIG ############ -Acquisition1.cboc=false - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=../data/epl_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=20.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=100 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=500 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=true; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf b/conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf deleted file mode 100644 index a42681db2..000000000 --- a/conf/gnss-sdr_GPS_L1_USRP_X300_realtime.conf +++ /dev/null @@ -1,390 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=UHD_Signal_Source - -;#When left empty, the device discovery routines will search all vailable transports on the system (ethernet, usb...) -SignalSource.device_address=192.168.40.2 - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/media/DATALOGGER/Agilent GPS Generator/cap2/agilent_cap2.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=50 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=A:0 - -;#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 -SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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 - -;#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.sampling_frequency=4000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resampled data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=4000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=12 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### CHANNEL 0 CONFIG ############ - -;Channel0.system=GPS -;Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -;Channel0.satellite=11 - -;######### CHANNEL 1 CONFIG ############ - -;Channel1.system=GPS -;Channel1.signal=1C -;Channel1.satellite=18 - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition -;Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Tong_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_GPS.threshold=0.01 -;#pfa: 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] -;Acquisition_GPS.pfa=0.00001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=6000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=500 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] (should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_GPS.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_GPS.max_dwells=1 - - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -;Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Optim_Tracking -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=40.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=4.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_GPS.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_GPS_L1_USRP_X300_realtime_new.conf b/conf/gnss-sdr_GPS_L1_USRP_X300_realtime_new.conf deleted file mode 100644 index 02611541c..000000000 --- a/conf/gnss-sdr_GPS_L1_USRP_X300_realtime_new.conf +++ /dev/null @@ -1,405 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=UHD_Signal_Source - -;#When left empty, the device discovery routines will search all vailable transports on the system (ethernet, usb...) -SignalSource.device_address=192.168.40.2 - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/media/DATALOGGER/Agilent GPS Generator/cap2/agilent_cap2.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -;SignalSource.item_type=gr_complex -SignalSource.item_type=cshort - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=40 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=A:0 - -;#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 -;SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through -DataTypeAdapter.item_type=cshort -;DataTypeAdapter.item_type=cbyte - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -;InputFilter.implementation=Pass_Through - -;#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=cshort - -;#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=11 - -;#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.48 -InputFilter.band2_begin=0.52 -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 - -;#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.sampling_frequency=4000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resampled data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=4000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_1C.count=8 -;#count: Number of available Galileo satellite channels. -Channels_1B.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -;Channel.system=GPS -Channel.signal=1C - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#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 -;Channel4.signal=1C -;Channel5.signal=1C -;Channel6.signal=1C -;Channel7.signal=1C -;Channel8.signal=1C -;Channel9.signal=1C -;Channel10.signal=1C -;Channel11.signal=1C - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### CHANNEL 0 CONFIG ############ - -;Channel0.system=GPS -;Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -;Channel0.satellite=11 - -;######### CHANNEL 1 CONFIG ############ - -;Channel1.system=GPS -;Channel1.signal=1C -;Channel1.satellite=18 - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C.dump=false -;#filename: Log path and filename -Acquisition_1C.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_1C.threshold=0.01 -;#pfa: 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] -;Acquisition_1C.pfa=0.00001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C.doppler_max=8000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C.doppler_step=500 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] (should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_1C.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_1C.max_dwells=1 - - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1C.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1C.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1C.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1C.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1C.pll_bw_hz=30.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1C.dll_bw_hz=4.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1C.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1C.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_1C.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C.dump=false -;#decimation factor -TelemetryDecoder_1C.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_GPS_L1_USRP_realtime.conf b/conf/gnss-sdr_GPS_L1_USRP_realtime.conf deleted file mode 100644 index fd2032f35..000000000 --- a/conf/gnss-sdr_GPS_L1_USRP_realtime.conf +++ /dev/null @@ -1,386 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=UHD_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/media/DATALOGGER/Agilent GPS Generator/cap2/agilent_cap2.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=2000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=A:0 - -;#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 -SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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 - -;#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.sampling_frequency=2000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=8000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=2000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=6 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### CHANNEL 0 CONFIG ############ - -Channel0.system=GPS -Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -Channel0.satellite=11 - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=GPS -Channel1.signal=1C -Channel1.satellite=18 - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_GPS.threshold=0.01 -;#pfa: 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] -;Acquisition_GPS.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=500 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] (should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_GPS.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_GPS.max_dwells=1 - - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Optim_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=50.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_GPS.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_GPS_L1_acq_QuickSync.conf b/conf/gnss-sdr_GPS_L1_acq_QuickSync.conf deleted file mode 100644 index 986ae9a47..000000000 --- a/conf/gnss-sdr_GPS_L1_acq_QuickSync.conf +++ /dev/null @@ -1,385 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] or [Rtlsdr_Signal_Source] -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=../data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat - - -;#item_type: Type and resolution for each of the signal samples. -;#Use gr_complex for 32 bits float I/Q or short for I/Q interleaved short integer. -;#If short is selected you should have to instantiate the Ishort_To_Complex data_type_adapter. - -SignalSource.item_type=short - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#AGC_enabled: RTLSDR AGC enabled [true or false] - -SignalSource.AGC_enabled=true - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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. Please disable it in this version. -;#implementation: Use [Ishort_To_Complex] or [Pass_Through] -DataTypeAdapter.implementation=Ishort_To_Complex -;#dump: Dump the filtered data to a file. -DataTypeAdapter.dump=false -;#dump_filename: Log path and filename. -DataTypeAdapter.dump_filename=../data/data_type_adapter.dat - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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.8 -InputFilter.band1_end=0.85 -InputFilter.band2_begin=0.90 -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 - -;#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.sampling_frequency=4000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=4000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available satellite channels. -Channels_GPS.count=5 -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring -Channels.in_acquisition=1 - -;######### CHANNEL 0 CONFIG ############ -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel0.system=GPS - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A - - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search - -;######### CHANNEL 0 CONFIG ############ -Channel0.system=GPS -Channel0.signal=1C -Channel0.satellite=1 -Channel0.repeat_satellite=false - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=GPS -Channel1.signal=1C -Channel1.satellite=11 -Channel1.repeat_satellite=false - -;######### CHANNEL 2 CONFIG ############ - -Channel2.system=GPS -Channel2.signal=1C -Channel2.satellite=17 -Channel2.repeat_satellite=false - -;######### CHANNEL 3 CONFIG ############ - -Channel3.system=GPS -Channel3.signal=1C -Channel3.satellite=20 -Channel3.repeat_satellite=false - -;######### CHANNEL 4 CONFIG ############ - -Channel4.system=GPS -Channel4.signal=1C -Channel4.satellite=32 -Channel4.repeat_satellite=false - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=true -;#filename: Log path and filename -;Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.coherent-integration_time_ms=4 - -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_QuickSync_Acquisition - -;######### ACQUISITION CHANNELS CONFIG ###### -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] -Acquisition.implementation=GPS_L1_CA_PCPS_QuickSync_Acquisition -;#threshold: Acquisition threshold -Acquisition_GPS.threshold=0.4 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=250 -;#repeat_satellite: Use only jointly with the satellte PRN ID option. - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=50.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=4.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_GPS.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A. -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100; - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500; - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_GPS_L1_gr_complex.conf b/conf/gnss-sdr_GPS_L1_gr_complex.conf deleted file mode 100644 index 4b411a2ee..000000000 --- a/conf/gnss-sdr_GPS_L1_gr_complex.conf +++ /dev/null @@ -1,305 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/datalogger/signals/Agilent/New York/4msps.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#samples: Number of samples to be processed. Notice that 0 indicates the entire file. -SignalSource.samples=250000000 - -;#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 -SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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 - -;#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.sampling_frequency=4000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=8000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=8 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C - - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### CHANNEL 0 CONFIG ############ - -;Channel0.system=GPS -;Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -;Channel0.satellite=11 - -;######### CHANNEL 1 CONFIG ############ - -;Channel1.system=GPS -;Channel1.signal=1C -;Channel1.satellite=18 - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition_GPS.threshold=0.005 -;#pfa: 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] -;Acquisition_GPS.pfa=0.01 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=500 - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=../data/epl_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=45.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=100 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=false - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=10 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_GPS_L1_gr_complex_optim_trk.conf b/conf/gnss-sdr_GPS_L1_gr_complex_optim_trk.conf deleted file mode 100644 index 71fc30b25..000000000 --- a/conf/gnss-sdr_GPS_L1_gr_complex_optim_trk.conf +++ /dev/null @@ -1,335 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=../data/agilent_cap2.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#samples: Number of samples to be processed. Notice that 0 indicates the entire file. -SignalSource.samples=250000000 - -;#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 -SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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 - -;#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.sampling_frequency=4000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=8000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=8 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;#signal: -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C -Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -Channel0.satellite=15 -Channel0.repeat_satellite=false - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=GPS -Channel1.signal=1C -Channel1.satellite=18 -Channel1.repeat_satellite=false - -;######### CHANNEL 2 CONFIG ############ - -Channel2.system=GPS -Channel2.signal=1C -Channel2.satellite=16 -Channel2.repeat_satellite=false - -;######### CHANNEL 3 CONFIG ############ - -Channel3.system=GPS -Channel3.signal=1C -Channel3.satellite=21 -Channel3.repeat_satellite=false - -;######### CHANNEL 4 CONFIG ############ - -Channel4.system=GPS -Channel4.signal=1C -Channel4.satellite=3 -Channel4.repeat_satellite=false - -;######### CHANNEL 5 CONFIG ############ - -Channel5.system=GPS -Channel5.signal=1C -;Channel5.satellite=21 -;Channel5.repeat_satellite=false - - -;######### ACQUISITION GLOBAL CONFIG ############ - - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition_GPS.threshold=0.008 -;#pfa: 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] -;Acquisition_GPS.pfa=0.01 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=500 - - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Optim_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=50.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_GPS.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=100 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=false - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=10 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=true - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_GPS_L1_nsr.conf b/conf/gnss-sdr_GPS_L1_nsr.conf deleted file mode 100644 index af31a1696..000000000 --- a/conf/gnss-sdr_GPS_L1_nsr.conf +++ /dev/null @@ -1,307 +0,0 @@ -; Sample configuration file for IFEN SX-NSR software receiver front-end -; http://www.ifen.com/products/sx-scientific-gnss-solutions/nsr-software-receiver.html -; 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 -; - -[GNSS-SDR] - -;######### GLOBAL OPTIONS ################## -;internal_fs_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2560000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=false -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### 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=../data/E1L1_FE0_Band0.stream - -;#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 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=8000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=2048000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=8 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;#signal: -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C - - -;######### GPS ACQUISITION CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition_GPS.threshold=0.0075 -;#pfa: 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] -;Acquisition_GPS.pfa=0.01 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=500 - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### TRACKING GPS CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=../data/epl_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=45.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=100 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=false - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=10 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=true - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf b/conf/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf deleted file mode 100644 index e9e35e6bc..000000000 --- a/conf/gnss-sdr_GPS_L1_rtl_tcp_realtime.conf +++ /dev/null @@ -1,313 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -GNSS-SDR.internal_fs_hz=1200000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=false -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] [Osmosdr_Signal_Source] -SignalSource.implementation=RtlTcp_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/media/DATALOGGER_/signals/RTL-SDR/geo/pmt4.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -SignalSource.sampling_frequency=1200000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end overall gain Gain in [dB] -SignalSource.gain=40 - -;#rf_gain: Front-end RF stage gain in [dB] -SignalSource.rf_gain=40 - -;#rf_gain: Front-end IF stage gain in [dB] -SignalSource.if_gain=30 - -;#AGC_enabled: Front-end AGC enabled or disabled -SignalSource.AGC_enabled = false - -;#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 - -;#Address of the rtl_tcp server (IPv6 allowed) -SignalSource.address=127.0.0.1 - -;#Port of the rtl_tcp server -SignalSource.port=1234 - -;# Set to true if I/Q samples come swapped -SignalSource.swap_iq=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. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a 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=gr_complex - -;#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 - -;#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 -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter.sampling_frequency=1200000 -;# IF deviation due to front-end LO inaccuracies [HZ] -InputFilter.IF=80558 - -;######### RESAMPLER CONFIG ############ -;## Resamples the input data. -;# DISABLED IN THE RTL-SDR REALTIME -;#implementation: Use [Pass_Through] or [Direct_Resampler] -;#[Pass_Through] disables this block -Resampler.implementation=Pass_Through - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=4 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;#signal: -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C -Channel0.signal=1C - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler -;#threshold: Acquisition threshold -Acquisition_GPS.threshold=0.015 -;#pfa: 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] -;Acquisition_GPS.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_min=-10000 -;#doppler_step Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=500 -;#maximum dwells -Acquisition_GPS.max_dwells=15 - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;#repeat_satellite: Use only jointly with the satellite PRN ID option. The default value is false -;Acquisition0.repeat_satellite = false - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] [GPS_L1_CA_DLL_PLL_Optim_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Optim_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=40.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_GPS.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=true - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_GPS_L1_rtlsdr_realtime.conf b/conf/gnss-sdr_GPS_L1_rtlsdr_realtime.conf deleted file mode 100644 index 693059eaf..000000000 --- a/conf/gnss-sdr_GPS_L1_rtlsdr_realtime.conf +++ /dev/null @@ -1,305 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -GNSS-SDR.internal_fs_hz=1999898 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=false -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] [Osmosdr_Signal_Source] -SignalSource.implementation=Osmosdr_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/media/DATALOGGER_/signals/RTL-SDR/geo/pmt4.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -SignalSource.sampling_frequency=2000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end overall gain Gain in [dB] -SignalSource.gain=40 - -;#rf_gain: Front-end RF stage gain in [dB] -SignalSource.rf_gain=40 - -;#rf_gain: Front-end IF stage gain in [dB] -SignalSource.if_gain=30 - -;#AGC_enabled: Front-end AGC enabled or disabled -SignalSource.AGC_enabled = false - -;#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. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a 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=gr_complex - -;#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 - -;#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 -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter.sampling_frequency=1999898 -;# IF deviation due to front-end LO inaccuracies [HZ] -InputFilter.IF=80558 - -;######### RESAMPLER CONFIG ############ -;## Resamples the input data. -;# DISABLED IN THE RTL-SDR REALTIME -;#implementation: Use [Pass_Through] or [Direct_Resampler] -;#[Pass_Through] disables this block -Resampler.implementation=Pass_Through - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=4 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;#signal: -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C -Channel0.signal=1C - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition_Fine_Doppler -;#threshold: Acquisition threshold -Acquisition_GPS.threshold=0.015 -;#pfa: 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] -;Acquisition_GPS.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_min=-10000 -;#doppler_step Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=500 -;#maximum dwells -Acquisition_GPS.max_dwells=15 - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;#repeat_satellite: Use only jointly with the satellite PRN ID option. The default value is false -;Acquisition0.repeat_satellite = false - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] [GPS_L1_CA_DLL_PLL_Optim_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Optim_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=40.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_GPS.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=true - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex \ No newline at end of file diff --git a/conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf b/conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf deleted file mode 100644 index aa8ae401a..000000000 --- a/conf/gnss-sdr_GPS_L2C_USRP1_realtime.conf +++ /dev/null @@ -1,209 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -SignalSource.implementation=UHD_Signal_Source -SignalSource.item_type=gr_complex -SignalSource.sampling_frequency=2000000 -SignalSource.freq=1227600000 -SignalSource.gain=60 -SignalSource.subdevice=A:0 -SignalSource.samples=0 -SignalSource.repeat=false -SignalSource.dump=false -SignalSource.dump_filename=../data/signal_source.dat -SignalSource.enable_throttle_control=false - - -;######### SIGNAL_CONDITIONER CONFIG ############ -SignalConditioner.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER CONFIG ############ -DataTypeAdapter.implementation=Pass_Through -DataTypeAdapter.item_type=gr_complex - - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a 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=gr_complex - -;#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 - -;#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.sampling_frequency=20000000 - -InputFilter.IF=-1600000 - -;# Decimation factor after the frequency tranaslating block -InputFilter.decimation_factor=1 - -;######### RESAMPLER CONFIG ############ -Resampler.implementation=Pass_Through -Resampler.dump=false -Resampler.dump_filename=../data/resampler.dat -Resampler.item_type=gr_complex -Resampler.sample_freq_in=2000000 -Resampler.sample_freq_out=2000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_2S.count=1 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - -Channel.signal=2S - -Channel0.signal=2S -Channel1.signal=2S -Channel2.signal=2S -Channel3.signal=2S -Channel4.signal=2S -Channel5.signal=2S -Channel6.signal=2S -Channel7.signal=2S -;Channel8.signal=2S -;Channel9.signal=2S -;Channel10.signal=2S -;Channel11.signal=2S - - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;# GPS L2C M -Acquisition_2S.dump=false -Acquisition_2S.dump_filename=./acq_dump.dat -Acquisition_2S.item_type=gr_complex -Acquisition_2S.if=0 -Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S.threshold=0.0013 -;Acquisition_2S.pfa=0.001 -Acquisition_2S.doppler_max=10000 -Acquisition_2S.doppler_min=-10000 -Acquisition_2S.doppler_step=100 -Acquisition_2S.max_dwells=1 - -Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S.item_type=gr_complex -Tracking_2S.if=0 -Tracking_2S.dump=true -Tracking_2S.dump_filename=./tracking_ch_ -Tracking_2S.pll_bw_hz=1.5; -Tracking_2S.dll_bw_hz=0.3; -Tracking_2S.fll_bw_hz=2.0; -Tracking_2S.order=3; -Tracking_2S.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -TelemetryDecoder_2S.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S.dump=false -TelemetryDecoder_2S.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############. -Observables.implementation=GPS_L1_CA_Observables -Observables.dump=false -Observables.dump_filename=./observables.dat - - -;######### PVT CONFIG ############ -PVT.implementation=GPS_L1_CA_PVT -PVT.averaging_depth=10 -PVT.flag_averaging=true -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.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_Galileo_E1_acq_QuickSync.conf b/conf/gnss-sdr_Galileo_E1_acq_QuickSync.conf deleted file mode 100644 index 26f0b220f..000000000 --- a/conf/gnss-sdr_Galileo_E1_acq_QuickSync.conf +++ /dev/null @@ -1,362 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] or [Rtlsdr_Signal_Source] -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=../data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat - - -;#item_type: Type and resolution for each of the signal samples. -;#Use gr_complex for 32 bits float I/Q or short for I/Q interleaved short integer. -;#If short is selected you should have to instantiate the Ishort_To_Complex data_type_adapter. - -SignalSource.item_type=short - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#AGC_enabled: RTLSDR AGC enabled [true or false] - -SignalSource.AGC_enabled=true - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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. Please disable it in this version. -;#implementation: Use [Ishort_To_Complex] or [Pass_Through] -DataTypeAdapter.implementation=Ishort_To_Complex -;#dump: Dump the filtered data to a file. -DataTypeAdapter.dump=false -;#dump_filename: Log path and filename. -DataTypeAdapter.dump_filename=../data/data_type_adapter.dat - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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 - -#used for gps -InputFilter.band1_begin=0.0 -;InputFilter.band1_end=0.8 -InputFilter.band1_end=0.85 -InputFilter.band2_begin=0.90 -InputFilter.band2_end=1.0 - -#used for galileo -InputFilter.band1_begin=0.0 -;InputFilter.band1_end=0.8 -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 - -;#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.sampling_frequency=4000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=4000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available satellite channels. -Channels_Galileo.count=4 -Channels_GPS.count=0 -;#in_acquisition: Number of channels simultaneously acquiring -Channels.in_acquisition=1 - -;######### CHANNEL 0 CONFIG ############ -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=Galileo - -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1B - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A - - - - -;######### ACQUISITION GLOBAL CONFIG ############ -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_Galileo.dump=false -;#filename: Log path and filename -Acquisition_Galileo.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_Galileo.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_Galileo.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_Galileo.coherent_integration_time_ms=4 - -Acquisition_Galileo.implementation=Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition - -;#threshold: Acquisition threshold -Acquisition_Galileo.threshold=0.05 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_Galileo.doppler_max=15000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_Galileo.doppler_step=125 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms]; -Acquisition_Galileo.coherent_integration_time_ms=8 - -Acquisition_Galileo.cboc=false - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_Galileo.implementation=Galileo_E1_DLL_PLL_VEML_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_Galileo.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_Galileo.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_Galileo.dump=true - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_Galileo.dump_filename=../data/veml_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_Galileo.pll_bw_hz=20.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_Galileo.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_Galileo.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_Galileo.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] for GPS and [0.15] for Galileo -Tracking_Galileo.early_late_space_chips=0.15; - -;#very_early_late_space_chips: only for [Galileo_E1_DLL_PLL_VEML_Tracking], correlator very early-late space [chips]. Use [0.6] -Tracking_Galileo.very_early_late_space_chips=0.6; - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A or [Galileo_E1B_Telemetry_Decoder] for Galileo E1B -TelemetryDecoder_Galileo.implementation=Galileo_E1B_Telemetry_Decoder -TelemetryDecoder_Galileo.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=Galileo_E1B_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GALILEO_E1_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=100 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100; - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500; - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_Galileo_E1_nsr.conf b/conf/gnss-sdr_Galileo_E1_nsr.conf deleted file mode 100644 index 5c48b9a36..000000000 --- a/conf/gnss-sdr_Galileo_E1_nsr.conf +++ /dev/null @@ -1,368 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -;GNSS-SDR.internal_fs_hz=6826700 -GNSS-SDR.internal_fs_hz=2560000 -;GNSS-SDR.internal_fs_hz=4096000 -;GNSS-SDR.internal_fs_hz=5120000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false -;######### 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=../data/E1L1_FE0_Band0.stream - -;#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 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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_GPS.count=0 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=8 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=Galileo - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1B - - - -;Galileo FM3 -> PRN 19 -;Galileo FM4 -> PRN 20 -;######### CHANNEL 0 CONFIG ############ - -;Channel0.system=Galileo -;Channel0.signal=1B -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -;Channel0.satellite=20 - -;######### CHANNEL 1 CONFIG ############ - -;Channel1.system=Galileo -;Channel1.signal=1B -;Channel1.satellite=12 - -;######### CHANNEL 2 CONFIG ############ - -;Channel2.system=Galileo -;Channel2.signal=1B -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -;Channel2.satellite=11 - -;######### CHANNEL 3 CONFIG ############ - -;Channel3.system=Galileo -;Channel3.signal=1B -;Channel3.satellite=19 - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition.dump=false -;#filename: Log path and filename -Acquisition_Galileo.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_Galileo.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_Galileo.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_Galileo.sampled_ms=4 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_Galileo.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition -;#threshold: Acquisition threshold -;Acquisition.threshold=0 -;#pfa: 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] -Acquisition_Galileo.pfa=0.0000008 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_Galileo.doppler_max=15000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_Galileo.doppler_step=125 - -;######### ACQUISITION CHANNELS CONFIG ###### - -;######### ACQUISITION CH 0 CONFIG ############ - -;#repeat_satellite: Use only jointly with the satellite PRN ID option. The default value is false -;Acquisition_Galileo0.repeat_satellite = true -;Acquisition_Galileo1.repeat_satellite = true -;Acquisition_Galileo2.repeat_satellite = true -;Acquisition_Galileo3.repeat_satellite = true - -;#cboc: Only for [Galileo_E1_PCPS_Ambiguous_Acquisition]. This option allows you to choose between acquiring with CBOC signal [true] or sinboc(1,1) signal [false]. -;#Use only if GNSS-SDR.internal_fs_hz is greater than or equal to 6138000 -Acquisition_Galileo0.cboc=false - - -;######### ACQUISITION CH 1 CONFIG ############ -Acquisition_Galileo1.cboc=false - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_Galileo.implementation=Galileo_E1_DLL_PLL_VEML_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_Galileo.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_Galileo.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_Galileo.dump=true - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_Galileo.dump_filename=../data/veml_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_Galileo.pll_bw_hz=20.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_Galileo.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_Galileo.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_Galileo.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] for GPS and [0.15] for Galileo -Tracking_Galileo.early_late_space_chips=0.15; - -;#very_early_late_space_chips: only for [Galileo_E1_DLL_PLL_VEML_Tracking], correlator very early-late space [chips]. Use [0.6] -Tracking_Galileo.very_early_late_space_chips=0.6; - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A or [Galileo_E1B_Telemetry_Decoder] for Galileo E1B -TelemetryDecoder_Galileo.implementation=Galileo_E1B_Telemetry_Decoder -TelemetryDecoder_Galileo.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=Galileo_E1B_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GALILEO_E1_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=false - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=10 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=true - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_Galileo_E1_short.conf b/conf/gnss-sdr_Galileo_E1_short.conf deleted file mode 100644 index df1dabe5a..000000000 --- a/conf/gnss-sdr_Galileo_E1_short.conf +++ /dev/null @@ -1,297 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=../../../Documents/workspace/code2/trunk/data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=short - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Ishort_To_Complex - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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 - -;#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.sampling_frequency=4000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=4000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=0 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=8 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=Galileo - -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1B - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_Galileo.dump=false -;#filename: Log path and filename -Acquisition_Galileo.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_Galileo.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_Galileo.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_Galileo.sampled_ms=4 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_Galileo.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition -;#threshold: Acquisition threshold -;Acquisition_Galileo.threshold=0 -;#pfa: 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] -Acquisition_Galileo.pfa=0.000002 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_Galileo.doppler_max=15000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_Galileo.doppler_step=125 - -;######### ACQUISITION CHANNELS CONFIG ###### - -;######### ACQUISITION CH 0 CONFIG ############ - -;#repeat_satellite: Use only jointly with the satellite PRN ID option. The default value is false -;Acquisition_Galileo0.repeat_satellite = true -;Acquisition_Galileo1.repeat_satellite = true -;Acquisition_Galileo2.repeat_satellite = true -;Acquisition_Galileo3.repeat_satellite = true - -;#cboc: Only for [Galileo_E1_PCPS_Ambiguous_Acquisition]. This option allows you to choose between acquiring with CBOC signal [true] or sinboc(1,1) signal [false]. -;#Use only if GNSS-SDR.internal_fs_hz is greater than or equal to 6138000 -Acquisition_Galileo0.cboc=false - - -;######### ACQUISITION CH 1 CONFIG ############ -Acquisition_Galileo1.cboc=false - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_Galileo.implementation=Galileo_E1_DLL_PLL_VEML_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_Galileo.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_Galileo.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_Galileo.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_Galileo.dump_filename=../data/veml_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_Galileo.pll_bw_hz=15.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_Galileo.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_Galileo.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_Galileo.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] for GPS and [0.15] for Galileo -Tracking_Galileo.early_late_space_chips=0.15; - -;#very_early_late_space_chips: only for [Galileo_E1_DLL_PLL_VEML_Tracking], correlator very early-late space [chips]. Use [0.6] -Tracking_Galileo.very_early_late_space_chips=0.6; - - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A or [Galileo_E1B_Telemetry_Decoder] for Galileo E1B -TelemetryDecoder_Galileo.implementation=Galileo_E1B_Telemetry_Decoder -TelemetryDecoder_Galileo.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=Galileo_E1B_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GALILEO_E1_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=100 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=false - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100; - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500; - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_Galileo_E5a.conf b/conf/gnss-sdr_Galileo_E5a.conf deleted file mode 100644 index 83849aa5d..000000000 --- a/conf/gnss-sdr_Galileo_E5a.conf +++ /dev/null @@ -1,414 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=32000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -;GNSS-SDR.SUPL_gps_enabled=false -;GNSS-SDR.SUPL_read_gps_assistance_xml=false -;GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -;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_LAC=0x59e2 -;GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -;SignalSource.filename=/home/marc/E5a_acquisitions/signal_source_5X_primary.dat -;SignalSource.filename=/home/marc/E5a_acquisitions/galileo_E5_8M_r2_upsampled_12.dat -;SignalSource.filename=/home/marc/E5a_acquisitions/Tiered_sim_4sat_stup4_2s_up.dat -;SignalSource.filename=/home/marc/E5a_acquisitions/signal_source_sec21M_long.dat -SignalSource.filename=../data/32MS_complex.dat; - - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=32000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1176450000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=50 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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 -SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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 - -;#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.sampling_frequency=32000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=8000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available satellite channels. -Channels_5X.count=1 -;#in_acquisition: Number of channels simultaneously acquiring -Channels.in_acquisition=1 -;#system: GPS, GLONASS, Galileo, SBAS or Compass -;#if the option is disabled by default is assigned GPS - - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=5X - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### CHANNEL 0 CONFIG ############ - -;Channel0.system=Galileo -Channel0.signal=5X - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -Channel0.satellite=19 -;Channel0.repeat_satellite=true - -;######### CHANNEL 1 CONFIG ############ - -;Channel1.system=Galileo -;Channel1.signal=5Q -;Channel1.satellite=12 - -;######### CHANNEL 2 CONFIG ############ - -;Channel2.system=Galileo -;Channel2.signal=5Q -;Channel2.satellite=11 - -;######### CHANNEL 3 CONFIG ############ - -;Channel3.system=Galileo -;Channel3.signal=5Q -;Channel3.satellite=20 - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_5X.dump=true -;#filename: Log path and filename -Acquisition_5X.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_5X.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_5X.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_5X.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_5X.implementation=Galileo_E5a_Noncoherent_IQ_Acquisition_CAF -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_5X.threshold=0.001 -;#pfa: 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] -Acquisition_5X.pfa=0.0003 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_5X.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_5X.doppler_step=250 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -;maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] (should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_5X.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_5X.max_dwells=1 - -;#CAF filter: **Only for E5a** Resolves doppler ambiguity averaging the specified BW in the winner code delay. If set to 0 CAF filter is desactivated. Recommended value 3000 Hz -Acquisition_5X.CAF_window_hz=0 -;#Zero_padding: **Only for E5a** Avoids power loss and doppler ambiguity in bit transitions by correlating one code with twice the input data length, ensuring that at least one full code is present without transitions. -;#If set to 1 it is ON, if set to 0 it is OFF. -Acquisition_5X.Zero_padding=0 - - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking_5X.implementation=Galileo_E5a_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_5X.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_5X.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_5X.dump=true - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_5X.dump_filename=./tracking_ch_ - -;#pll_bw_hz_init: **Only for E5a** PLL loop filter bandwidth during initialization [Hz] -Tracking_5X.pll_bw_hz_init=20.0; -;#dll_bw_hz_init: **Only for E5a** DLL loop filter bandwidth during initialization [Hz] -Tracking_5X.dll_bw_hz_init=20.0; -;#dll_ti_ms: **Only for E5a** loop filter integration time after initialization (secondary code delay search)[ms] -;Tracking_5X.ti_ms=3; -Tracking_5X.ti_ms=1; - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -;Tracking.pll_bw_hz=5.0; -Tracking_5X.pll_bw_hz=20.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -;Tracking.dll_bw_hz=2.0; -Tracking_5X.dll_bw_hz=20.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -;Tracking_5X.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_5X.order=2; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_5X.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A. -TelemetryDecoder_5X.implementation=Galileo_E5a_Telemetry_Decoder -TelemetryDecoder_5X.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -;Use [Galileo_E1B_Observables] for E5a also. -Observables.implementation=Galileo_E1B_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -;Use [GALILEO_E1_PVT] for E5a also. -PVT.implementation=GALILEO_E1_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=100 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=true; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf b/conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf deleted file mode 100644 index 651a95040..000000000 --- a/conf/gnss-sdr_Galileo_E5a_IFEN_CTTC.conf +++ /dev/null @@ -1,415 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=50000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -;GNSS-SDR.SUPL_gps_enabled=false -;GNSS-SDR.SUPL_read_gps_assistance_xml=false -;GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -;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_LAC=0x59e2 -;GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -;SignalSource.filename=/home/marc/E5a_acquisitions/signal_source_5X_primary.dat -;SignalSource.filename=/home/marc/E5a_acquisitions/galileo_E5_8M_r2_upsampled_12.dat -;SignalSource.filename=/home/marc/E5a_acquisitions/Tiered_sim_4sat_stup4_2s_up.dat -;SignalSource.filename=/home/marc/E5a_acquisitions/signal_source_sec21M_long.dat -SignalSource.filename=/datalogger/captures/Galileo_E5ab_IFEN_CTTC_run1.dat - - - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=50000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1176450000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=50 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -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=gr_complex - -;#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 - -;#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.sampling_frequency=50000000 -InputFilter.IF=-15345000 - -;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=1 - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=8000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available satellite channels. -Channels_5X.count=4 -;#in_acquisition: Number of channels simultaneously acquiring -Channels.in_acquisition=1 -;#system: GPS, GLONASS, Galileo, SBAS or Compass -;#if the option is disabled by default is assigned GPS -;Channel.system=Galileo - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=5X - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### CHANNEL 0 CONFIG ############ - -Channel0.system=Galileo -Channel0.signal=5X - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -Channel0.satellite=19 -;Channel0.repeat_satellite=true - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=Galileo -Channel1.signal=5X -Channel1.satellite=12 - -;######### CHANNEL 2 CONFIG ############ - -Channel2.system=Galileo -Channel2.signal=5X -Channel2.satellite=11 - -;######### CHANNEL 3 CONFIG ############ - -Channel3.system=Galileo -Channel3.signal=5X -Channel3.satellite=20 - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_5X.dump=false -;#filename: Log path and filename -Acquisition_5X.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_5X.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_5X.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_5X.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_5X.implementation=Galileo_E5a_Noncoherent_IQ_Acquisition_CAF -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_5X.threshold=0.002 -;#pfa: 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] -;Acquisition_5X.pfa=0.0003 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_5X.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_5X.doppler_step=250 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -;maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] (should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_5X.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_5X.max_dwells=1 - -;#CAF filter: **Only for E5a** Resolves doppler ambiguity averaging the specified BW in the winner code delay. If set to 0 CAF filter is desactivated. Recommended value 3000 Hz -Acquisition_5X.CAF_window_hz=0 -;#Zero_padding: **Only for E5a** Avoids power loss and doppler ambiguity in bit transitions by correlating one code with twice the input data length, ensuring that at least one full code is present without transitions. -;#If set to 1 it is ON, if set to 0 it is OFF. -Acquisition_5X.Zero_padding=0 - - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking_5X.implementation=Galileo_E5a_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_5X.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_5X.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_5X.dump=true - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_5X.dump_filename=./tracking_ch_ - -;#pll_bw_hz_init: **Only for E5a** PLL loop filter bandwidth during initialization [Hz] -Tracking_5X.pll_bw_hz_init=20.0; -;#dll_bw_hz_init: **Only for E5a** DLL loop filter bandwidth during initialization [Hz] -Tracking_5X.dll_bw_hz_init=20.0; -;#dll_ti_ms: **Only for E5a** loop filter integration time after initialization (secondary code delay search)[ms] -;Tracking_5X.ti_ms=3; -Tracking_5X.ti_ms=1; - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -;Tracking.pll_bw_hz=5.0; -Tracking_5X.pll_bw_hz=20.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -;Tracking.dll_bw_hz=2.0; -Tracking_5X.dll_bw_hz=20.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -;Tracking_5X.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_5X.order=2; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_5X.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A. -TelemetryDecoder_5X.implementation=Galileo_E5a_Telemetry_Decoder -TelemetryDecoder_5X.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -;Use [Galileo_E1B_Observables] for E5a also. -Observables.implementation=Galileo_E1B_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -;Use [GALILEO_E1_PVT] for E5a also. -PVT.implementation=GALILEO_E1_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=100 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=true; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_Hybrid_byte.conf b/conf/gnss-sdr_Hybrid_byte.conf deleted file mode 100644 index da8a27786..000000000 --- a/conf/gnss-sdr_Hybrid_byte.conf +++ /dev/null @@ -1,352 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=20000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/Users/javier/signals/fraunhofer/L125_III1b_210s_L1.bin - -;#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=20000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=A:0 - -;#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. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Ibyte_To_Complex - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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 - -;#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.sampling_frequency=20000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=20000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=20000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_1C.count=8 -;#count: Number of available Galileo satellite channels. -Channels_1B.count=8 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - -;#signal: -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel1.signal=1C -Channel2.signal=1C -Channel3.signal=1C -Channel4.signal=1C -Channel5.signal=1C -Channel6.signal=1C -Channel7.signal=1C -Channel8.signal=1B -Channel9.signal=1B -Channel10.signal=1B -Channel11.signal=1B -Channel12.signal=1B -Channel13.signal=1B -Channel14.signal=1B -Channel15.signal=1B - - -;######### GPS ACQUISITION CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C.dump=false -;#filename: Log path and filename -Acquisition_1C.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition_1C.threshold=0.0060 -;#pfa: 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] -;Acquisition_1C.pfa=0.01 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C.doppler_step=500 - - -;######### GALILEO ACQUISITION CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1B.dump=false -;#filename: Log path and filename -Acquisition_1B.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1B.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1B.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1B.sampled_ms=4 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition -;#threshold: Acquisition threshold -;Acquisition_1B.threshold=0 -;#pfa: 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] -Acquisition_1B.pfa=0.0000008 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1B.doppler_max=15000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1B.doppler_step=125 - -;######### TRACKING GPS CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1C.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1C.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1C.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1C.dump_filename=../data/epl_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1C.pll_bw_hz=45.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1C.dll_bw_hz=4.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1C.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1C.order=3; - -;######### TRACKING GALILEO CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1B.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1B.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1B.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1B.dump_filename=../data/veml_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1B.pll_bw_hz=15.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1B.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1B.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1B.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] for GPS and [0.15] for Galileo -Tracking_1B.early_late_space_chips=0.15; - -;#very_early_late_space_chips: only for [Galileo_E1_DLL_PLL_VEML_Tracking], correlator very early-late space [chips]. Use [0.6] -Tracking_1B.very_early_late_space_chips=0.6; - - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C.dump=false -;#decimation factor -TelemetryDecoder_1C.decimation_factor=4; - -;######### TELEMETRY DECODER GALILEO CONFIG ############ -;#implementation: Use [Galileo_E1B_Telemetry_Decoder] for Galileo E1B -TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder -TelemetryDecoder_1B.dump=false -TelemetryDecoder_1B.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=Hybrid_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=false - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100; - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500; - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_Hybrid_nsr.conf b/conf/gnss-sdr_Hybrid_nsr.conf deleted file mode 100644 index f5bfc5551..000000000 --- a/conf/gnss-sdr_Hybrid_nsr.conf +++ /dev/null @@ -1,345 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -;GNSS-SDR.internal_fs_hz=6826700 -GNSS-SDR.internal_fs_hz=2560000 -;GNSS-SDR.internal_fs_hz=4096000 -;GNSS-SDR.internal_fs_hz=5120000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false -;######### 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=/datalogger/signals/ifen/E1L1_FE0_Band0.stream - -;#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 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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 -;#count: Number of available Galileo satellite channels. -Channels_1B.count=8 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - -;#signal: -;# "1C" GPS L1 C/A -;# "2S" GPS L2 L2C (M) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "5X" GALILEO E5a I+Q - -;#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 -Channel4.signal=1C -Channel5.signal=1C -Channel6.signal=1C -Channel7.signal=1C -Channel8.signal=1B -Channel9.signal=1B -Channel10.signal=1B -Channel11.signal=1B -Channel12.signal=1B -Channel13.signal=1B -Channel14.signal=1B -Channel15.signal=1B - - -;######### GPS ACQUISITION CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C.dump=false -;#filename: Log path and filename -Acquisition_1C.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition_1C.threshold=0.0075 -;#pfa: 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] -;Acquisition_1C.pfa=0.01 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C.doppler_step=500 - - -;######### GALILEO ACQUISITION CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1B.dump=false -;#filename: Log path and filename -Acquisition_1B.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1B.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1B.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1B.sampled_ms=4 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition -;#threshold: Acquisition threshold -;Acquisition_1B.threshold=0 -;#pfa: 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] -Acquisition_1B.pfa=0.0000002 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1B.doppler_max=15000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1B.doppler_step=125 - -;######### TRACKING GPS CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1C.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1C.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1C.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1C.dump_filename=../data/epl_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1C.pll_bw_hz=45.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1C.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1C.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1C.order=3; - -;######### TRACKING GALILEO CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1B.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1B.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1B.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1B.dump_filename=../data/veml_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1B.pll_bw_hz=15.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1B.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1B.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1B.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] for GPS and [0.15] for Galileo -Tracking_1B.early_late_space_chips=0.15; - -;#very_early_late_space_chips: only for [Galileo_E1_DLL_PLL_VEML_Tracking], correlator very early-late space [chips]. Use [0.6] -Tracking_1B.very_early_late_space_chips=0.6; - - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C.dump=false -;#decimation factor -TelemetryDecoder_1C.decimation_factor=4; - -;######### TELEMETRY DECODER GALILEO CONFIG ############ -;#implementation: Use [Galileo_E1B_Telemetry_Decoder] for Galileo E1B -TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder -TelemetryDecoder_1B.dump=false -TelemetryDecoder_1B_factor=4; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=Hybrid_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=false - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=10; - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500; - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_Hybrid_short.conf b/conf/gnss-sdr_Hybrid_short.conf deleted file mode 100644 index cb954b132..000000000 --- a/conf/gnss-sdr_Hybrid_short.conf +++ /dev/null @@ -1,363 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=../../../Documents/workspace/code2/trunk/data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=short - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Ishort_To_Complex - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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 - -;#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.sampling_frequency=4000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signalq -Resampler.sample_freq_in=4000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_1C.count=3 -;#count: Number of available Galileo satellite channels. -Channels_1B.count=3 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - -;#signal: -;# "1C" GPS L1 C/A -;# "2S" GPS L2 L2C (M) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "5X" GALILEO E5a I+Q -Channel0.signal=1B -Channel1.signal=1C -Channel2.signal=1B -Channel3.signal=1C -Channel4.signal=1B -Channel5.signal=1C -;Channel6.signal=1B -;Channel7.signal=1C - - - -;######### GPS ACQUISITION CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C.dump=false -;#filename: Log path and filename -Acquisition_1C.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition_1C.threshold=0.0075 -;#pfa: 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] -;Acquisition_1C.pfa=0.01 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C.doppler_step=500 - - -;######### GALILEO ACQUISITION CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1B.dump=false -;#filename: Log path and filename -Acquisition_1B.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1B.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1B.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1B.sampled_ms=4 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition -;#threshold: Acquisition threshold -;Acquisition_1B.threshold=0 -;#pfa: 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] -Acquisition_1B.pfa=0.0000008 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1B.doppler_max=15000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1B.doppler_step=125 - -;######### TRACKING GPS CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1C.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1C.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1C.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1C.dump_filename=../data/epl_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1C.pll_bw_hz=45.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1C.dll_bw_hz=4.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1C.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1C.order=3; - -;######### TRACKING GALILEO CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1B.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1B.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1B.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1B.dump_filename=../data/veml_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1B.pll_bw_hz=15.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1B.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1B.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1B.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] for GPS and [0.15] for Galileo -Tracking_1B.early_late_space_chips=0.15; - -;#very_early_late_space_chips: only for [Galileo_E1_DLL_PLL_VEML_Tracking], correlator very early-late space [chips]. Use [0.6] -Tracking_1B.very_early_late_space_chips=0.6; - - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C.dump=false -;#decimation factor -TelemetryDecoder_1C.decimation_factor=4; - -;######### TELEMETRY DECODER GALILEO CONFIG ############ -;#implementation: Use [Galileo_E1B_Telemetry_Decoder] for Galileo E1B -TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder -TelemetryDecoder_1B.dump=false -TelemetryDecoder_1B.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=Hybrid_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=false - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100; - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500; - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_SBAS_short.conf b/conf/gnss-sdr_SBAS_short.conf deleted file mode 100644 index 8bb6aa5f6..000000000 --- a/conf/gnss-sdr_SBAS_short.conf +++ /dev/null @@ -1,338 +0,0 @@ -; configuration file for SBAS -; invoke it by doing -; gnss-sdr --config_file=../conf/gnss-sdr_sbas.conf -; - -[GNSS-SDR] - -;######### GLOBAL OPTIONS ################## -;#internal_fs_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] or [Rtlsdr_Signal_Source] -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=../data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat - -;#item_type: Type and resolution for each of the signal samples. -;#Use gr_complex for 32 bits float I/Q or short for I/Q interleaved short integer. -;#If short is selected you should have to instantiate the Ishort_To_Complex data_type_adapter. - -SignalSource.item_type=short - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#AGC_enabled: RTLSDR AGC enabled [true or false] - -SignalSource.AGC_enabled=true - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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. Please disable it in this version. -;#implementation: Use [Ishort_To_Complex] or [Pass_Through] -DataTypeAdapter.implementation=Ishort_To_Complex -;#dump: Dump the filtered data to a file. -DataTypeAdapter.dump=false -;#dump_filename: Log path and filename. -DataTypeAdapter.dump_filename=../data/data_type_adapter.dat - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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.8 -InputFilter.band1_end=0.85 -InputFilter.band2_begin=0.90 -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 - -;#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.sampling_frequency=4000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=4000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=6 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS, SBAS - -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### CHANNEL 0 CONFIG ############ - -Channel0.system=SBAS -Channel0.signal=1C -Channel0.satellite=124 ;#satellite: Satellite PRN ID for this channel. Disable this option to random search -Channel0.repeat_satellite=true - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=SBAS -Channel1.signal=1C -Channel1.satellite=120 -Channel1.repeat_satellite=true - -;######### CHANNEL 2 CONFIG ############ - -Channel2.system=SBAS -Channel2.signal=1C -Channel2.satellite=126 -Channel2.repeat_satellite=true - -;######### CHANNEL 3 CONFIG ############ - -Channel3.system=GPS -Channel3.signal=1C -Channel3.satellite=21 -Channel3.repeat_satellite=false - -;######### CHANNEL 4 CONFIG ############ - -Channel4.system=GPS -Channel4.signal=1C -Channel4.satellite=3 -Channel4.repeat_satellite=false - -;######### CHANNEL 5 CONFIG ############ - -Channel5.system=GPS -Channel5.signal=1C -;Channel5.satellite=21 -;Channel5.repeat_satellite=false - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=../data/acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition_GPS.threshold=0.005 -;#pfa: 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] -Acquisition_GPS.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=500 - - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=../data/epl_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=45.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=3.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=2; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100; - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500; - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=../data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf deleted file mode 100644 index d412bb82d..000000000 --- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_bin_file_III_1a.conf +++ /dev/null @@ -1,346 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2500000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=Flexiband_Signal_Source - -SignalSource.flag_read_file=true -SignalSource.signal_file=/datalogger/captures/eclipse/eclipse_IIIa_2.bin - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;# FPGA firmware file -SignalSource.firmware_file=flexiband_III-1a.bit - -;#RF_channels: Number of RF channels present in the frontend device, must agree the FPGA firmware file -SignalSource.RF_channels=1 - -;#frontend channels gain. Not usable yet! -SignalSource.gain1=0 -SignalSource.gain2=0 -SignalSource.gain3=0 - -;#frontend channels AGC -SignalSource.AGC=true - -;# USB 3.0 packet buffer size (number of SuperSpeed packets) -SignalSource.usb_packet_buffer=128 - -;######### SIGNAL_CONDITIONER 0 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner0.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 0 CONFIG ############ -DataTypeAdapter0.implementation=Pass_Through -DataTypeAdapter0.item_type=gr_complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter0.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter0.dump=false - -;#dump_filename: Log path and filename. -InputFilter0.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. -InputFilter0.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter0.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter0.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter0.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter0.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 - -InputFilter0.band1_begin=0.0 -InputFilter0.band1_end=0.45 -InputFilter0.band2_begin=0.55 -InputFilter0.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 - -InputFilter0.ampl1_begin=1.0 -InputFilter0.ampl1_end=1.0 -InputFilter0.ampl2_begin=0.0 -InputFilter0.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 -InputFilter0.band1_error=1.0 -InputFilter0.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter0.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. -InputFilter0.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter0.sampling_frequency=20000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -InputFilter0.IF=-205000 - -;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=8 - -;######### RESAMPLER CONFIG 0 ############ -;## Resamples the input data. -Resampler0.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 1 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner1.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 1 CONFIG ############ -DataTypeAdapter1.implementation=Pass_Through -DataTypeAdapter1.item_type=gr_complex - -;######### INPUT_FILTER 1 CONFIG ############ -InputFilter1.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter1.dump=false - -;#dump_filename: Log path and filename. -InputFilter1.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter1.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter1.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 1 ############ -;## Resamples the input data. -Resampler1.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 2 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner2.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 2 CONFIG ############ -DataTypeAdapter2.implementation=Pass_Through -DataTypeAdapter2.item_type=gr_complex - -;######### INPUT_FILTER 2 CONFIG ############ -InputFilter2.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter2.dump=false - -;#dump_filename: Log path and filename. -InputFilter2.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter2.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter2.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 2 ############ -;## Resamples the input data. -Resampler2.implementation=Pass_Through - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=8 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;# CHANNEL CONNECTION -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 - -;#signal: -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_GPS.threshold=0.012 -;#pfa: 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] -;Acquisition_GPS.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=250 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -;#maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] -;#(should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_GPS.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_GPS.max_dwells=1 - - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=40.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=3.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_GPS.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf deleted file mode 100644 index 8324faee6..000000000 --- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1a.conf +++ /dev/null @@ -1,354 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2500000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=Flexiband_Signal_Source - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;# FPGA firmware file -SignalSource.firmware_file=flexiband_III-1a.bit - -;#RF_channels: Number of RF channels present in the frontend device, must agree the FPGA firmware file -SignalSource.RF_channels=1 - -;#frontend channels gain. Not usable yet! -SignalSource.gain1=0 -SignalSource.gain2=0 -SignalSource.gain3=0 - -;#frontend channels AGC -SignalSource.AGC=true - -;# USB 3.0 packet buffer size (number of SuperSpeed packets) -SignalSource.usb_packet_buffer=128 - -;######### SIGNAL_CONDITIONER 0 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner0.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 0 CONFIG ############ -DataTypeAdapter0.implementation=Pass_Through -DataTypeAdapter0.item_type=gr_complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter0.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter0.dump=false - -;#dump_filename: Log path and filename. -InputFilter0.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. -InputFilter0.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter0.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter0.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter0.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter0.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 - -InputFilter0.band1_begin=0.0 -InputFilter0.band1_end=0.45 -InputFilter0.band2_begin=0.55 -InputFilter0.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 - -InputFilter0.ampl1_begin=1.0 -InputFilter0.ampl1_end=1.0 -InputFilter0.ampl2_begin=0.0 -InputFilter0.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 -InputFilter0.band1_error=1.0 -InputFilter0.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter0.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. -InputFilter0.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter0.sampling_frequency=20000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -InputFilter0.IF=-205000 - -;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=8 - -;######### RESAMPLER CONFIG 0 ############ -;## Resamples the input data. -Resampler0.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 1 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner1.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 1 CONFIG ############ -DataTypeAdapter1.implementation=Pass_Through -DataTypeAdapter1.item_type=gr_complex - -;######### INPUT_FILTER 1 CONFIG ############ -InputFilter1.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter1.dump=false - -;#dump_filename: Log path and filename. -InputFilter1.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter1.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter1.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 1 ############ -;## Resamples the input data. -Resampler1.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 2 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner2.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 2 CONFIG ############ -DataTypeAdapter2.implementation=Pass_Through -DataTypeAdapter2.item_type=gr_complex - -;######### INPUT_FILTER 2 CONFIG ############ -InputFilter2.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter2.dump=false - -;#dump_filename: Log path and filename. -InputFilter2.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter2.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter2.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 2 ############ -;## Resamples the input data. -Resampler2.implementation=Pass_Through - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_1C.count=8 - -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - - -;#signal: -;# "1C" GPS L1 C/A -;# "2S" GPS L2 L2C (M) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "5X" GALILEO E5a I+Q - -;# CHANNEL CONNECTION -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 - -;#signal: -;#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 -Channel4.signal=1C -Channel5.signal=1C -Channel6.signal=1C -Channel7.signal=1C - - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C.dump=false -;#filename: Log path and filename -Acquisition_1C.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_1C.threshold=0.012 -;#pfa: 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] -;Acquisition_1C.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C.doppler_step=250 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -;#maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] -;#(should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_1C.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_1C.max_dwells=1 - - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1C.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1C.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1C.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1C.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1C.pll_bw_hz=40.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1C.dll_bw_hz=3.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1C.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1C.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_1C.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C.dump=false -;#decimation factor -TelemetryDecoder_1C.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf deleted file mode 100644 index eff9ec2a2..000000000 --- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_III_1b.conf +++ /dev/null @@ -1,352 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2500000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=Flexiband_Signal_Source - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;# FPGA firmware file -SignalSource.firmware_file=flexiband_III-1b.bit - -;#RF_channels: Number of RF channels present in the frontend device, must agree the FPGA firmware file -SignalSource.RF_channels=1 - -;#frontend channels gain. Not usable yet! -SignalSource.gain1=0 -SignalSource.gain2=0 -SignalSource.gain3=0 - -;#frontend channels AGC -SignalSource.AGC=true - -;# USB 3.0 packet buffer size (number of SuperSpeed packets) -SignalSource.usb_packet_buffer=128 - -;######### SIGNAL_CONDITIONER 0 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner0.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 0 CONFIG ############ -DataTypeAdapter0.implementation=Pass_Through -DataTypeAdapter0.item_type=gr_complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter0.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter0.dump=false - -;#dump_filename: Log path and filename. -InputFilter0.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. -InputFilter0.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter0.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter0.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter0.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter0.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 - -InputFilter0.band1_begin=0.0 -InputFilter0.band1_end=0.45 -InputFilter0.band2_begin=0.55 -InputFilter0.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 - -InputFilter0.ampl1_begin=1.0 -InputFilter0.ampl1_end=1.0 -InputFilter0.ampl2_begin=0.0 -InputFilter0.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 -InputFilter0.band1_error=1.0 -InputFilter0.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter0.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. -InputFilter0.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter0.sampling_frequency=20000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -InputFilter0.IF=-205000 - -;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=8 - -;######### RESAMPLER CONFIG 0 ############ -;## Resamples the input data. -Resampler0.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 1 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner1.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 1 CONFIG ############ -DataTypeAdapter1.implementation=Pass_Through -DataTypeAdapter1.item_type=gr_complex - -;######### INPUT_FILTER 1 CONFIG ############ -InputFilter1.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter1.dump=false - -;#dump_filename: Log path and filename. -InputFilter1.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter1.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter1.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 1 ############ -;## Resamples the input data. -Resampler1.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 2 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner2.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 2 CONFIG ############ -DataTypeAdapter2.implementation=Pass_Through -DataTypeAdapter2.item_type=gr_complex - -;######### INPUT_FILTER 2 CONFIG ############ -InputFilter2.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter2.dump=false - -;#dump_filename: Log path and filename. -InputFilter2.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter2.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter2.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 2 ############ -;## Resamples the input data. -Resampler2.implementation=Pass_Through - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_1C.count=8 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - - -;#signal: -;# "1C" GPS L1 C/A -;# "2S" GPS L2 L2C (M) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "5X" GALILEO E5a I+Q - -;# CHANNEL CONNECTION -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 - -;#signal: -;#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 -Channel4.signal=1C -Channel5.signal=1C -Channel6.signal=1C -Channel7.signal=1C - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C.dump=false -;#filename: Log path and filename -Acquisition_1C.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_1C.threshold=0.012 -;#pfa: 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] -;Acquisition_1C.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C.doppler_step=250 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -;#maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] -;#(should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_1C.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_1C.max_dwells=1 - - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1C.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1C.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1C.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1C.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1C.pll_bw_hz=40.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1C.dll_bw_hz=3.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1C.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1C.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_1C.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C.dump=false -;#decimation factor -TelemetryDecoder_1C.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf deleted file mode 100644 index eb9ff143d..000000000 --- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_II_3b.conf +++ /dev/null @@ -1,353 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2500000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=Flexiband_Signal_Source - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;# FPGA firmware file -SignalSource.firmware_file=flexiband_II-3b.bit - -;#RF_channels: Number of RF channels present in the frontend device, must agree the FPGA firmware file -SignalSource.RF_channels=1 - -;#frontend channels gain. Not usable yet! -SignalSource.gain1=0 -SignalSource.gain2=0 -SignalSource.gain3=0 - -;#frontend channels AGC -SignalSource.AGC=true - -;# USB 3.0 packet buffer size (number of SuperSpeed packets) -SignalSource.usb_packet_buffer=128 - -;######### SIGNAL_CONDITIONER 0 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner0.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 0 CONFIG ############ -DataTypeAdapter0.implementation=Pass_Through -DataTypeAdapter0.item_type=gr_complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter0.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter0.dump=false - -;#dump_filename: Log path and filename. -InputFilter0.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. -InputFilter0.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter0.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter0.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter0.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter0.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 - -InputFilter0.band1_begin=0.0 -InputFilter0.band1_end=0.45 -InputFilter0.band2_begin=0.55 -InputFilter0.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 - -InputFilter0.ampl1_begin=1.0 -InputFilter0.ampl1_end=1.0 -InputFilter0.ampl2_begin=0.0 -InputFilter0.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 -InputFilter0.band1_error=1.0 -InputFilter0.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter0.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. -InputFilter0.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter0.sampling_frequency=40000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -InputFilter0.IF=-205000 - -;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=16 - -;######### RESAMPLER CONFIG 0 ############ -;## Resamples the input data. -Resampler0.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 1 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner1.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 1 CONFIG ############ -DataTypeAdapter1.implementation=Pass_Through -DataTypeAdapter1.item_type=gr_complex - -;######### INPUT_FILTER 1 CONFIG ############ -InputFilter1.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter1.dump=false - -;#dump_filename: Log path and filename. -InputFilter1.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter1.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter1.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 1 ############ -;## Resamples the input data. -Resampler1.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 2 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner2.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 2 CONFIG ############ -DataTypeAdapter2.implementation=Pass_Through -DataTypeAdapter2.item_type=gr_complex - -;######### INPUT_FILTER 2 CONFIG ############ -InputFilter2.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter2.dump=false - -;#dump_filename: Log path and filename. -InputFilter2.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter2.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter2.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 2 ############ -;## Resamples the input data. -Resampler2.implementation=Pass_Through - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=8 - -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - -;# signal: -;# "1C" GPS L1 C/A -;# "2S" GPS L2 L2C (M) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "5X" GALILEO E5a I+Q - -;# CHANNEL CONNECTION -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 - -;#signal: -;#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 -Channel4.signal=1C -Channel5.signal=1C -Channel6.signal=1C -Channel7.signal=1C - - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_GPS.threshold=0.012 -;#pfa: 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] -;Acquisition_GPS.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=250 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -;#maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] -;#(should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_GPS.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_GPS.max_dwells=1 - - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=40.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=3.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_GPS.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf b/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf deleted file mode 100644 index fa3d09601..000000000 --- a/conf/gnss-sdr_multichannel_GPS_L1_Flexiband_realtime_I_1b.conf +++ /dev/null @@ -1,348 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=5000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=Flexiband_Signal_Source - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;# FPGA firmware file -SignalSource.firmware_file=flexiband_I-1b.bit - -;#RF_channels: Number of RF channels present in the frontend device, must agree the FPGA firmware file -SignalSource.RF_channels=1 - -;#frontend channels gain. Not usable yet! -SignalSource.gain1=0 -SignalSource.gain2=0 -SignalSource.gain3=0 - -;#frontend channels AGC -SignalSource.AGC=true - -;# USB 3.0 packet buffer size (number of SuperSpeed packets) -SignalSource.usb_packet_buffer=128 - -;######### SIGNAL_CONDITIONER 0 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner0.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 0 CONFIG ############ -DataTypeAdapter0.implementation=Pass_Through -DataTypeAdapter0.item_type=gr_complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter0.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter0.dump=false - -;#dump_filename: Log path and filename. -InputFilter0.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. -InputFilter0.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter0.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter0.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter0.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter0.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 - -InputFilter0.band1_begin=0.0 -InputFilter0.band1_end=0.45 -InputFilter0.band2_begin=0.55 -InputFilter0.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 - -InputFilter0.ampl1_begin=1.0 -InputFilter0.ampl1_end=1.0 -InputFilter0.ampl2_begin=0.0 -InputFilter0.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 -InputFilter0.band1_error=1.0 -InputFilter0.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter0.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. -InputFilter0.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter0.sampling_frequency=40000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -InputFilter0.IF=-205000 - -;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=8 - -;######### RESAMPLER CONFIG 0 ############ -;## Resamples the input data. -Resampler0.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 1 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner1.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 1 CONFIG ############ -DataTypeAdapter1.implementation=Pass_Through -DataTypeAdapter1.item_type=gr_complex - -;######### INPUT_FILTER 1 CONFIG ############ -InputFilter1.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter1.dump=false - -;#dump_filename: Log path and filename. -InputFilter1.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter1.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter1.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 1 ############ -;## Resamples the input data. -Resampler1.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 2 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner2.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 2 CONFIG ############ -DataTypeAdapter2.implementation=Pass_Through -DataTypeAdapter2.item_type=gr_complex - -;######### INPUT_FILTER 2 CONFIG ############ -InputFilter2.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter2.dump=false - -;#dump_filename: Log path and filename. -InputFilter2.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter2.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter2.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 2 ############ -;## Resamples the input data. -Resampler2.implementation=Pass_Through - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_1C.count=4 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - - -;#signal: -;# "1C" GPS L1 C/A -;# "2S" GPS L2 L2C (M) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "5X" GALILEO E5a I+Q - -;# CHANNEL CONNECTION -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 - -;#signal: -;#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 - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C.dump=false -;#filename: Log path and filename -Acquisition_1C.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_1C.threshold=0.011 -;#pfa: 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] -;Acquisition_1C.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C.doppler_step=250 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -;#maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] -;#(should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_1C.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_1C.max_dwells=1 - - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1C.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1C.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1C.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1C.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1C.pll_bw_hz=40.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1C.dll_bw_hz=3.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1C.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1C.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_1C.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C.dump=false -;#decimation factor -TelemetryDecoder_1C.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf b/conf/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf deleted file mode 100644 index e7ca792c4..000000000 --- a/conf/gnss-sdr_multichannel_GPS_L1_L2_Flexiband_realtime_III_1b.conf +++ /dev/null @@ -1,497 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2500000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=Flexiband_Signal_Source - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;# FPGA firmware file -SignalSource.firmware_file=flexiband_III-1b.bit - -;#RF_channels: Number of RF channels present in the frontend device, must agree the FPGA firmware file -SignalSource.RF_channels=2 - -;#frontend channels gain. Not usable yet! -SignalSource.gain1=0 -SignalSource.gain2=0 -SignalSource.gain3=0 - -;#frontend channels AGC -SignalSource.AGC=true - -;# USB 3.0 packet buffer size (number of SuperSpeed packets) -SignalSource.usb_packet_buffer=128 - -;###################################################### -;######### RF CHANNEL 0 SIGNAL CONDITIONER ############ -;###################################################### - -;######### SIGNAL_CONDITIONER 0 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner0.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 0 CONFIG ############ -DataTypeAdapter0.implementation=Pass_Through -DataTypeAdapter0.item_type=gr_complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter0.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter0.dump=false - -;#dump_filename: Log path and filename. -InputFilter0.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. -InputFilter0.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter0.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter0.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter0.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter0.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 - -InputFilter0.band1_begin=0.0 -InputFilter0.band1_end=0.45 -InputFilter0.band2_begin=0.55 -InputFilter0.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 - -InputFilter0.ampl1_begin=1.0 -InputFilter0.ampl1_end=1.0 -InputFilter0.ampl2_begin=0.0 -InputFilter0.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 -InputFilter0.band1_error=1.0 -InputFilter0.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter0.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. -InputFilter0.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter0.sampling_frequency=20000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -;# WARNING: Fraunhofer front-end hardwareconfigurations can difer. Signals available on http://www.iis.fraunhofer.de/de/ff/lok/leist/test/flexiband.html are centered on 0 Hz, ALL BANDS. -InputFilter0.IF=-205000 -;#InputFilter0.IF=0 - -;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=8 - -;######### RESAMPLER CONFIG 0 ############ -;## Resamples the input data. -Resampler0.implementation=Pass_Through - -;###################################################### -;######### RF CHANNEL 1 SIGNAL CONDITIONER ############ -;###################################################### - -;######### SIGNAL_CONDITIONER 1 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner1.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 1 CONFIG ############ -DataTypeAdapter1.implementation=Pass_Through -DataTypeAdapter1.item_type=gr_complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter1.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter1.dump=false - -;#dump_filename: Log path and filename. -InputFilter1.dump_filename=../data/input_filter_ch1.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. -InputFilter1.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter1.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter1.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter1.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter1.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 - -InputFilter1.band1_begin=0.0 -InputFilter1.band1_end=0.45 -InputFilter1.band2_begin=0.55 -InputFilter1.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 - -InputFilter1.ampl1_begin=1.0 -InputFilter1.ampl1_end=1.0 -InputFilter1.ampl2_begin=0.0 -InputFilter1.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 -InputFilter1.band1_error=1.0 -InputFilter1.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter1.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. -InputFilter1.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter1.sampling_frequency=20000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -;# WARNING: Fraunhofer front-end hardwareconfigurations can difer. Signals available on http://www.iis.fraunhofer.de/de/ff/lok/leist/test/flexiband.html are centered on 0 Hz, ALL BANDS. -InputFilter1.IF=100000 -;#InputFilter1.IF=0 - -;# Decimation factor after the frequency tranaslating block -InputFilter1.decimation_factor=8 - - -;######### RESAMPLER CONFIG 1 ############ -;## Resamples the input data. -Resampler1.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 2 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner2.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 2 CONFIG ############ -DataTypeAdapter2.implementation=Pass_Through -DataTypeAdapter2.item_type=gr_complex - -;######### INPUT_FILTER 2 CONFIG ############ -InputFilter2.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter2.dump=false - -;#dump_filename: Log path and filename. -InputFilter2.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter2.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter2.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 2 ############ -;## Resamples the input data. -Resampler2.implementation=Pass_Through - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_1C.count=8 -Channels_2S.count=8 -;#count: Number of available Galileo satellite channels. -;Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - - -;#signal: -;# "1C" GPS L1 C/A -;# "2S" GPS L2 L2C (M) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "5X" GALILEO E5a I+Q - - -;# CHANNEL CONNECTION -Channel0.RF_channel_ID=0 -Channel0.signal=1C - -Channel1.RF_channel_ID=0 -Channel1.signal=1C - -Channel2.RF_channel_ID=0 -Channel2.signal=1C - -Channel3.RF_channel_ID=0 -Channel3.signal=1C - -Channel4.RF_channel_ID=0 -Channel4.signal=1C - -Channel5.RF_channel_ID=0 -Channel5.signal=1C - -Channel6.RF_channel_ID=0 -Channel6.signal=1C - -Channel7.RF_channel_ID=0 -Channel7.signal=1C - - -Channel8.RF_channel_ID=1 -Channel8.signal=2S - -Channel9.RF_channel_ID=1 -Channel9.signal=2S - -Channel10.RF_channel_ID=1 -Channel10.signal=2S - -Channel11.RF_channel_ID=1 -Channel11.signal=2S - -Channel12.RF_channel_ID=1 -Channel12.signal=2S - -Channel13.RF_channel_ID=1 -Channel13.signal=2S - -Channel14.RF_channel_ID=1 -Channel14.signal=2S - -Channel15.RF_channel_ID=1 -Channel15.signal=2S - -Channel8.RF_channel_ID=1 -Channel8.signal=2S - -Channel9.RF_channel_ID=1 -Channel9.signal=2S - -Channel10.RF_channel_ID=1 -Channel10.signal=2S - -Channel11.RF_channel_ID=1 -Channel11.signal=2S - -Channel12.RF_channel_ID=1 -Channel12.signal=2S - -Channel13.RF_channel_ID=1 -Channel13.signal=2S - -Channel14.RF_channel_ID=1 -Channel14.signal=2S - -Channel15.RF_channel_ID=1 -Channel15.signal=2S - - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C.dump=false -;#filename: Log path and filename -Acquisition_1C.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_1C.threshold=0.008 -;#pfa: 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] -;Acquisition_1C.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C.doppler_max=5000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C.doppler_step=250 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -;#maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] -;#(should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_1C.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_1C.max_dwells=1 - - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] - -Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking -Tracking_1C.item_type=gr_complex -Tracking_1C.if=0 -Tracking_1C.dump=true -Tracking_1C.dump_filename=./tracking_ch_ -Tracking_1C.pll_bw_hz=40.0; -Tracking_1C.dll_bw_hz=3.0; -Tracking_1C.fll_bw_hz=10.0; -Tracking_1C.order=3; -Tracking_1C.early_late_space_chips=0.5; - -;# GPS L2C M -Acquisition_2S.dump=false -Acquisition_2S.dump_filename=./acq_dump.dat -Acquisition_2S.item_type=gr_complex -Acquisition_2S.if=0 -Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S.threshold=0.0005 -;Acquisition_2S.pfa=0.001 -Acquisition_2S.doppler_max=5000 -Acquisition_2S.doppler_min=-5000 -Acquisition_2S.doppler_step=30 -Acquisition_2S.max_dwells=1 - -Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S.item_type=gr_complex -Tracking_2S.if=0 -Tracking_2S.dump=true -Tracking_2S.dump_filename=./tracking_ch_ -Tracking_2S.pll_bw_hz=1.5; -Tracking_2S.dll_bw_hz=0.3; -Tracking_2S.fll_bw_hz=2.0; -Tracking_2S.order=3; -Tracking_2S.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS L1 CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C.dump=false -TelemetryDecoder_1C.decimation_factor=20; - - -;######### TELEMETRY DECODER GPS L2 CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L2 M -TelemetryDecoder_2S.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S.dump=false -TelemetryDecoder_2S.decimation_factor=1; - - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.Mixed_Observables -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex \ No newline at end of file diff --git a/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_realtime_III_1b.conf b/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_realtime_III_1b.conf deleted file mode 100644 index ebaa60f0f..000000000 --- a/conf/gnss-sdr_multichannel_GPS_L1_L2_Galileo_E1B_Flexiband_realtime_III_1b.conf +++ /dev/null @@ -1,547 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2500000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=Flexiband_Signal_Source - -SignalSource.flag_read_file=false -#SignalSource.signal_file=/datalogger/signals/Fraunhofer/L125_III1b_210s.usb -SignalSource.signal_file=/datalogger/captures/flexiband_III_1b_cap1.usb - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;# FPGA firmware file -SignalSource.firmware_file=flexiband_III-1b.bit - -;#RF_channels: Number of RF channels present in the frontend device, must agree the FPGA firmware file -SignalSource.RF_channels=2 - -;#frontend channels gain. Not usable yet! -SignalSource.gain1=0 -SignalSource.gain2=0 -SignalSource.gain3=0 - -;#frontend channels AGC -SignalSource.AGC=true - -;# USB 3.0 packet buffer size (number of SuperSpeed packets) -SignalSource.usb_packet_buffer=128 - -;###################################################### -;######### RF CHANNEL 0 SIGNAL CONDITIONER ############ -;###################################################### - -;######### SIGNAL_CONDITIONER 0 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner0.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 0 CONFIG ############ -DataTypeAdapter0.implementation=Pass_Through -DataTypeAdapter0.item_type=gr_complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter0.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter0.dump=false - -;#dump_filename: Log path and filename. -InputFilter0.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. -InputFilter0.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter0.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter0.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter0.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter0.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 - -InputFilter0.band1_begin=0.0 -InputFilter0.band1_end=0.45 -InputFilter0.band2_begin=0.55 -InputFilter0.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 - -InputFilter0.ampl1_begin=1.0 -InputFilter0.ampl1_end=1.0 -InputFilter0.ampl2_begin=0.0 -InputFilter0.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 -InputFilter0.band1_error=1.0 -InputFilter0.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter0.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. -InputFilter0.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter0.sampling_frequency=20000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -;# WARNING: Fraunhofer front-end hardwareconfigurations can difer. Signals available on http://www.iis.fraunhofer.de/de/ff/lok/leist/test/flexiband.html are centered on 0 Hz, ALL BANDS. -InputFilter0.IF=-205000 -;#InputFilter0.IF=0 - -;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=8 - -;######### RESAMPLER CONFIG 0 ############ -;## Resamples the input data. -Resampler0.implementation=Pass_Through - -;###################################################### -;######### RF CHANNEL 1 SIGNAL CONDITIONER ############ -;###################################################### - -;######### SIGNAL_CONDITIONER 1 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner1.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 1 CONFIG ############ -DataTypeAdapter1.implementation=Pass_Through -DataTypeAdapter1.item_type=gr_complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter1.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter1.dump=false - -;#dump_filename: Log path and filename. -InputFilter1.dump_filename=../data/input_filter_ch1.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. -InputFilter1.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter1.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter1.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter1.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter1.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 - -InputFilter1.band1_begin=0.0 -InputFilter1.band1_end=0.45 -InputFilter1.band2_begin=0.55 -InputFilter1.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 - -InputFilter1.ampl1_begin=1.0 -InputFilter1.ampl1_end=1.0 -InputFilter1.ampl2_begin=0.0 -InputFilter1.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 -InputFilter1.band1_error=1.0 -InputFilter1.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter1.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. -InputFilter1.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter1.sampling_frequency=20000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -;# WARNING: Fraunhofer front-end hardwareconfigurations can difer. Signals available on http://www.iis.fraunhofer.de/de/ff/lok/leist/test/flexiband.html are centered on 0 Hz, ALL BANDS. -InputFilter1.IF=100000 -;#InputFilter1.IF=0 - -;# Decimation factor after the frequency tranaslating block -InputFilter1.decimation_factor=8 - - -;######### RESAMPLER CONFIG 1 ############ -;## Resamples the input data. -Resampler1.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 2 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner2.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 2 CONFIG ############ -DataTypeAdapter2.implementation=Pass_Through -DataTypeAdapter2.item_type=gr_complex - -;######### INPUT_FILTER 2 CONFIG ############ -InputFilter2.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter2.dump=false - -;#dump_filename: Log path and filename. -InputFilter2.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter2.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter2.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 2 ############ -;## Resamples the input data. -Resampler2.implementation=Pass_Through - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_1C.count=8 -Channels_1B.count=2 -Channels_2S.count=8 -;#count: Number of available Galileo satellite channels. -;Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - - -;#signal: -;# "1C" GPS L1 C/A -;# "2S" GPS L2 L2C (M) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "5X" GALILEO E5a I+Q - - -;# CHANNEL CONNECTION -Channel0.RF_channel_ID=0 -Channel0.signal=1C - -Channel1.RF_channel_ID=0 -Channel1.signal=1C - -Channel2.RF_channel_ID=0 -Channel2.signal=1C - -Channel3.RF_channel_ID=0 -Channel3.signal=1C - -Channel4.RF_channel_ID=0 -Channel4.signal=1C - -Channel5.RF_channel_ID=0 -Channel5.signal=1C - -Channel6.RF_channel_ID=0 -Channel6.signal=1C - -Channel7.RF_channel_ID=0 -Channel7.signal=1C - -Channel8.RF_channel_ID=0 -Channel8.signal=1B - -Channel9.RF_channel_ID=0 -Channel9.signal=1B - -Channel10.RF_channel_ID=1 -Channel10.signal=2S - -Channel11.RF_channel_ID=1 -Channel11.signal=2S - -Channel12.RF_channel_ID=1 -Channel12.signal=2S - -Channel13.RF_channel_ID=1 -Channel13.signal=2S - -Channel14.RF_channel_ID=1 -Channel14.signal=2S - -Channel15.RF_channel_ID=1 -Channel15.signal=2S - -Channel16.RF_channel_ID=1 -Channel16.signal=2S - -Channel17.RF_channel_ID=1 -Channel17.signal=2S - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C.dump=false -;#filename: Log path and filename -Acquisition_1C.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_1C.threshold=0.008 -;#pfa: 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] -;Acquisition_1C.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C.doppler_max=5000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C.doppler_step=250 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -;#maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] -;#(should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_1C.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_1C.max_dwells=1 - - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] - -Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking -Tracking_1C.item_type=gr_complex -Tracking_1C.if=0 -Tracking_1C.dump=true -Tracking_1C.dump_filename=./tracking_ch_ -Tracking_1C.pll_bw_hz=40.0; -Tracking_1C.dll_bw_hz=3.0; -Tracking_1C.fll_bw_hz=10.0; -Tracking_1C.order=3; -Tracking_1C.early_late_space_chips=0.5; - -;# GPS L2C M -Acquisition_2S.dump=false -Acquisition_2S.dump_filename=./acq_dump.dat -Acquisition_2S.item_type=gr_complex -Acquisition_2S.if=0 -Acquisition_2S.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S.threshold=0.0005 -;Acquisition_2S.pfa=0.001 -Acquisition_2S.doppler_max=5000 -Acquisition_2S.doppler_min=-5000 -Acquisition_2S.doppler_step=30 -Acquisition_2S.max_dwells=1 - -Tracking_2S.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S.item_type=gr_complex -Tracking_2S.if=0 -Tracking_2S.dump=true -Tracking_2S.dump_filename=./tracking_ch_ -Tracking_2S.pll_bw_hz=1.5; -Tracking_2S.dll_bw_hz=0.3; -Tracking_2S.fll_bw_hz=2.0; -Tracking_2S.order=3; -Tracking_2S.early_late_space_chips=0.5; - - -;# GALILEO E1B - - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1B.dump=false -;#filename: Log path and filename -Acquisition_1B.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1B.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1B.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1B.sampled_ms=4 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition -;#threshold: Acquisition threshold -;Acquisition_1B.threshold=0 -;#pfa: 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] -Acquisition_1B.pfa=0.0000005 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1B.doppler_max=5000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1B.doppler_step=125 - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1B.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1B.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1B.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1B.dump_filename=../data/veml_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1B.pll_bw_hz=15.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1B.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1B.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1B.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] for GPS and [0.15] for Galileo -Tracking_1B.early_late_space_chips=0.15; - -;#very_early_late_space_chips: only for [Galileo_E1_DLL_PLL_VEML_Tracking], correlator very early-late space [chips]. Use [0.6] -Tracking_1B.very_early_late_space_chips=0.6; - - - -;######### TELEMETRY DECODER GPS L1 CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C.dump=false -TelemetryDecoder_1C.decimation_factor=20; - - -;######### TELEMETRY DECODER GPS L2 CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L2 M -TelemetryDecoder_2S.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S.dump=false -TelemetryDecoder_2S.decimation_factor=1; - -;######### TELEMETRY DECODER GALILEO E1B CONFIG ############ -;#implementation: Use [Galileo_E1B_Telemetry_Decoder] for Galileo E1B -TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder -TelemetryDecoder_1B.dump=false -TelemetryDecoder_1B.decimation_factor=5; - - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.Mixed_Observables -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex \ No newline at end of file diff --git a/conf/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf b/conf/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf deleted file mode 100644 index e040c75ae..000000000 --- a/conf/gnss-sdr_multichannel_GPS_L1_USRP_X300_realtime.conf +++ /dev/null @@ -1,422 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_1C_enabled=false -GNSS-SDR.SUPL_read_1C_assistance_xml=true -GNSS-SDR.SUPL_1C_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=UHD_Signal_Source - -;#When left empty, the device discovery routines will search all vailable transports on the system (ethernet, usb...) -SignalSource.device_address=192.168.40.2 - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#RF_channels: Number of RF channels present in the frontend device (i.e. USRP with two frontends) -SignalSource.RF_channels=2 - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#subdevice: UHD subdevice specification (for USRP dual frontend use A:0 or B:0 or A:0 B:0) -SignalSource.subdevice=A:0 B:0 - -;######### RF Channels specific settings ###### - -;## RF CHANNEL 0 ## -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq0=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain0=50 - -;#samples: Number of samples to be processed. Notice that 0 indicates no limit -SignalSource.samples0=0 - -;#dump: Dump the Signal source RF channel data to a file. Disable this option in this version -SignalSource.dump0=false - -SignalSource.dump_filename0=../data/signal_source0.dat - -;## RF CHANNEL 1 ## -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq1=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain1=50 - -;#samples: Number of samples to be processed. Notice that 0 indicates no limit -SignalSource.samples1=0 - -;#dump: Dump the Signal source RF channel data to a file. Disable this option in this version -SignalSource.dump1=false - -SignalSource.dump_filename1=../data/signal_source1.dat - - -;######### SIGNAL_CONDITIONER 0 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 -SignalConditioner0.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 0 CONFIG ############ -;## Changes the type of input data. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter0.implementation=Pass_Through -DataTypeAdapter0.item_type=gr_complex - -;######### INPUT_FILTER 0 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. - -InputFilter0.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter0.dump=false - -;#dump_filename: Log path and filename. -InputFilter0.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. -InputFilter0.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter0.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter0.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter0.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter0.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 - -InputFilter0.band1_begin=0.0 -InputFilter0.band1_end=0.45 -InputFilter0.band2_begin=0.55 -InputFilter0.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 - -InputFilter0.ampl1_begin=1.0 -InputFilter0.ampl1_end=1.0 -InputFilter0.ampl2_begin=0.0 -InputFilter0.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 -InputFilter0.band1_error=1.0 -InputFilter0.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter0.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. -InputFilter0.grid_density=16 - -;# Original sampling frequency stored in the signal file -InputFilter0.sampling_frequency=20480000 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz - -InputFilter0.IF=5499998.47412109 - -;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=8 - -;######### RESAMPLER CONFIG 0 ############ -;## 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 -Resampler0.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 1 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 -SignalConditioner1.implementation=Pass_Through - -;######### INPUT_FILTER 1 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. - -InputFilter1.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter1.dump=false - -;#dump_filename: Log path and filename. -InputFilter1.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. -InputFilter1.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter1.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter1.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter1.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter1.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 - -InputFilter1.band1_begin=0.0 -InputFilter1.band1_end=0.45 -InputFilter1.band2_begin=0.55 -InputFilter1.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 - -InputFilter1.ampl1_begin=1.0 -InputFilter1.ampl1_end=1.0 -InputFilter1.ampl2_begin=0.0 -InputFilter1.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 -InputFilter1.band1_error=1.0 -InputFilter1.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter1.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. -InputFilter1.grid_density=16 - -;# Original sampling frequency stored in the signal file -InputFilter1.sampling_frequency=20480000 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter1.IF is the intermediate frequency (in Hz) shifted down to zero Hz - -InputFilter1.IF=5499998.47412109 - -;# Decimation factor after the frequency tranaslating block -InputFilter1.decimation_factor=8 - - -;######### RESAMPLER CONFIG 1 ############ -;## 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 -Resampler1.implementation=Pass_Through - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_1C.count=4 - -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - -;#signal: -;# "1C" GPS L1 C/A -;# "2S" GPS L2 L2C (M) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "5X" GALILEO E5a I+Q - -;# CHANNEL CONNECTION -Channel0.RF_channel_ID=0 -Channel1.RF_channel_ID=1 -Channel2.RF_channel_ID=0 -Channel3.RF_channel_ID=1 - - -;#signal: -;#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 - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C.dump=false -;#filename: Log path and filename -Acquisition_1C.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_1C.threshold=0.01 -;#pfa: 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] -;Acquisition_1C.pfa=0.01 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C.doppler_max=8000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C.doppler_step=500 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -;#maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] -;#(should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_1C.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_1C.max_dwells=1 - - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1C.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1C.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1C.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1C.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1C.pll_bw_hz=40.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1C.dll_bw_hz=4.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1C.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1C.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_1C.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C.dump=false -;#decimation factor -TelemetryDecoder_1C.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1a.conf b/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1a.conf deleted file mode 100644 index 4b26ea9e4..000000000 --- a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1a.conf +++ /dev/null @@ -1,444 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=5000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=Flexiband_Signal_Source - -SignalSource.flag_read_file=false -;SignalSource.signal_file=/datalogger/captures/eclipse/eclipse_IIIa_2.bin -SignalSource.signal_file=/datalogger/signals/Fraunhofer/L125_III1b_210s.usb - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;# FPGA firmware file -SignalSource.firmware_file=flexiband_III-1b.bit - -;#RF_channels: Number of RF channels present in the frontend device, must agree the FPGA firmware file -SignalSource.RF_channels=2 - -;#frontend channels gain. Not usable yet! -SignalSource.gain1=0 -SignalSource.gain2=0 -SignalSource.gain3=0 - -;#frontend channels AGC -SignalSource.AGC=true - -;# USB 3.0 packet buffer size (number of SuperSpeed packets) -SignalSource.usb_packet_buffer=128 - -;###################################################### -;######### RF CHANNEL 0 SIGNAL CONDITIONER ############ -;###################################################### - -;######### SIGNAL_CONDITIONER 0 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner0.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 0 CONFIG ############ -DataTypeAdapter0.implementation=Pass_Through -DataTypeAdapter0.item_type=gr_complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter0.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter0.dump=true - -;#dump_filename: Log path and filename. -InputFilter0.dump_filename=../data/input_filter_ch0.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. -InputFilter0.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter0.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter0.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter0.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter0.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 - -InputFilter0.band1_begin=0.0 -InputFilter0.band1_end=0.45 -InputFilter0.band2_begin=0.55 -InputFilter0.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 - -InputFilter0.ampl1_begin=1.0 -InputFilter0.ampl1_end=1.0 -InputFilter0.ampl2_begin=0.0 -InputFilter0.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 -InputFilter0.band1_error=1.0 -InputFilter0.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter0.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. -InputFilter0.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter0.sampling_frequency=20000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -InputFilter0.IF=-205000 - -;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=4 - -;######### RESAMPLER CONFIG 0 ############ -;## Resamples the input data. -Resampler0.implementation=Pass_Through - -;###################################################### -;######### RF CHANNEL 1 SIGNAL CONDITIONER ############ -;###################################################### - -;######### SIGNAL_CONDITIONER 1 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner1.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 1 CONFIG ############ -DataTypeAdapter1.implementation=Pass_Through -DataTypeAdapter1.item_type=gr_complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter1.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter1.dump=true - -;#dump_filename: Log path and filename. -InputFilter1.dump_filename=../data/input_filter_ch1.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. -InputFilter1.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter1.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter1.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter1.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter1.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 - -InputFilter1.band1_begin=0.0 -InputFilter1.band1_end=0.45 -InputFilter1.band2_begin=0.55 -InputFilter1.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 - -InputFilter1.ampl1_begin=1.0 -InputFilter1.ampl1_end=1.0 -InputFilter1.ampl2_begin=0.0 -InputFilter1.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 -InputFilter1.band1_error=1.0 -InputFilter1.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter1.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. -InputFilter1.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter1.sampling_frequency=20000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -InputFilter1.IF=-100000 - -;# Decimation factor after the frequency tranaslating block -InputFilter1.decimation_factor=4 - - -;######### RESAMPLER CONFIG 1 ############ -;## Resamples the input data. -Resampler1.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 2 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner2.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 2 CONFIG ############ -DataTypeAdapter2.implementation=Pass_Through -DataTypeAdapter2.item_type=gr_complex - -;######### INPUT_FILTER 2 CONFIG ############ -InputFilter2.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter2.dump=false - -;#dump_filename: Log path and filename. -InputFilter2.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter2.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter2.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 2 ############ -;## Resamples the input data. -Resampler2.implementation=Pass_Through - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_1C.count=1 -Channels_2S.count=1 - -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - -;# signal: -;# "1C" GPS L1 C/A -;# "2S" GPS L2 L2C (M) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "5X" GALILEO E5a I+Q - -;# CHANNEL CONNECTION -Channel0.RF_channel_ID=0 -Channel0.signal=1C - -Channel1.RF_channel_ID=1 -Channel1.signal=2S - -;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 - - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C0.dump=false -;#filename: Log path and filename -Acquisition_1C0.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C0.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C0.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C0.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: -Acquisition_1C0.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_1C0.threshold=0.002 -;#pfa: 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] -;Acquisition_1C0.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C0.doppler_max=5000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C0.doppler_step=250 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -;#maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] -;#(should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_1C0.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_1C0.max_dwells=1 - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_2S1.dump=false -;#filename: Log path and filename -Acquisition_2S1.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_2S1.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_2S1.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_2S1.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: -Acquisition_2S1.implementation=GPS_L2_M_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_2S1.threshold=0.0005 -;#pfa: 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] -;Acquisition_2S1.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_2S1.doppler_max=5000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_2S1.doppler_step=100 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -;#maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] -;#(should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_2S1.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_2S1.max_dwells=1 - - - - -;######### TRACKING CONFIG ############ - -;######### TRACKING CHANNEL 0 CONFIG ############ -Tracking_1C0.implementation=GPS_L1_CA_DLL_PLL_Tracking -Tracking_1C0.item_type=gr_complex -Tracking_1C0.if=0 -Tracking_1C0.dump=false -Tracking_1C0.dump_filename=./tracking_ch_ -Tracking_1C0.pll_bw_hz=40.0; -Tracking_1C0.dll_bw_hz=3.0; -Tracking_1C0.fll_bw_hz=10.0; -Tracking_1C0.order=3; -Tracking_1C0.early_late_space_chips=0.5; - - -;######### TRACKING CHANNEL 11 CONFIG ############ -Tracking_2S1.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S1.item_type=gr_complex -Tracking_2S1.if=0 -Tracking_2S1.dump=false -Tracking_2S1.dump_filename=./tracking_ch_ -Tracking_2S1.pll_bw_hz=2.0; -Tracking_2S1.dll_bw_hz=0.5; -Tracking_2S1.fll_bw_hz=2.0; -Tracking_2S1.order=2; -Tracking_2S1.early_late_space_chips=0.5; - - -;######### TELEMETRY DECODER CONFIG ############ -TelemetryDecoder_1C0.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C0.dump=false -TelemetryDecoder_1C0.decimation_factor=20; - -TelemetryDecoder_2S1.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S1.dump=false -TelemetryDecoder_2S1.decimation_factor=1; - - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf b/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf deleted file mode 100644 index 598a958f9..000000000 --- a/conf/gnss-sdr_multichannel_GPS_L2_M_Flexiband_bin_file_III_1b.conf +++ /dev/null @@ -1,659 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2500000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=Flexiband_Signal_Source - -SignalSource.flag_read_file=true -#SignalSource.signal_file=/datalogger/signals/Fraunhofer/L125_III1b_210s.usb -SignalSource.signal_file=/datalogger/captures/test.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;# FPGA firmware file -SignalSource.firmware_file=flexiband_III-1b.bit - -;#RF_channels: Number of RF channels present in the frontend device, must agree the FPGA firmware file -SignalSource.RF_channels=2 - -;#frontend channels gain. Not usable yet! -SignalSource.gain1=0 -SignalSource.gain2=0 -SignalSource.gain3=0 - -;#frontend channels AGC -SignalSource.AGC=true - -;# USB 3.0 packet buffer size (number of SuperSpeed packets) -SignalSource.usb_packet_buffer=128 - -;###################################################### -;######### RF CHANNEL 0 SIGNAL CONDITIONER ############ -;###################################################### - -;######### SIGNAL_CONDITIONER 0 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner0.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 0 CONFIG ############ -DataTypeAdapter0.implementation=Pass_Through -DataTypeAdapter0.item_type=gr_complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter0.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter0.dump=false - -;#dump_filename: Log path and filename. -InputFilter0.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. -InputFilter0.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter0.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter0.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter0.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter0.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 - -InputFilter0.band1_begin=0.0 -InputFilter0.band1_end=0.45 -InputFilter0.band2_begin=0.55 -InputFilter0.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 - -InputFilter0.ampl1_begin=1.0 -InputFilter0.ampl1_end=1.0 -InputFilter0.ampl2_begin=0.0 -InputFilter0.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 -InputFilter0.band1_error=1.0 -InputFilter0.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter0.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. -InputFilter0.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter0.sampling_frequency=20000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -;# WARNING: Fraunhofer front-end hardwareconfigurations can difer. Signals available on http://www.iis.fraunhofer.de/de/ff/lok/leist/test/flexiband.html are centered on 0 Hz, ALL BANDS. -InputFilter0.IF=-205000 -;#InputFilter0.IF=0 - -;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=8 - -;######### RESAMPLER CONFIG 0 ############ -;## Resamples the input data. -Resampler0.implementation=Pass_Through - -;###################################################### -;######### RF CHANNEL 1 SIGNAL CONDITIONER ############ -;###################################################### - -;######### SIGNAL_CONDITIONER 1 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner1.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 1 CONFIG ############ -DataTypeAdapter1.implementation=Pass_Through -DataTypeAdapter1.item_type=gr_complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter1.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter1.dump=false - -;#dump_filename: Log path and filename. -InputFilter1.dump_filename=../data/input_filter_ch1.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. -InputFilter1.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter1.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter1.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter1.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter1.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 - -InputFilter1.band1_begin=0.0 -InputFilter1.band1_end=0.45 -InputFilter1.band2_begin=0.55 -InputFilter1.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 - -InputFilter1.ampl1_begin=1.0 -InputFilter1.ampl1_end=1.0 -InputFilter1.ampl2_begin=0.0 -InputFilter1.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 -InputFilter1.band1_error=1.0 -InputFilter1.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter1.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. -InputFilter1.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz -;FOR USE GNSS-SDR WITH RTLSDR DONGLES USER MUST SET THE CALIBRATED SAMPLE RATE HERE -; i.e. using front-end-cal as reported here:http://www.cttc.es/publication/turning-a-television-into-a-gnss-receiver/ -InputFilter1.sampling_frequency=20000000 -;# IF deviation due to front-end LO inaccuracies [HZ] -InputFilter1.IF=0 - -;# Decimation factor after the frequency tranaslating block -InputFilter1.decimation_factor=8 - - -;######### RESAMPLER CONFIG 1 ############ -;## Resamples the input data. -Resampler1.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 2 CONFIG ############ -;## It holds blocks to change data type, filter and resample input data. -SignalConditioner2.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER 2 CONFIG ############ -DataTypeAdapter2.implementation=Pass_Through -DataTypeAdapter2.item_type=gr_complex - -;######### INPUT_FILTER 2 CONFIG ############ -InputFilter2.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter2.dump=false - -;#dump_filename: Log path and filename. -InputFilter2.dump_filename=../data/input_filter.dat - -;#input_item_type: Type and resolution for input signal samples. Use only gr_complex in this version. -InputFilter2.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter2.output_item_type=gr_complex - -;######### RESAMPLER CONFIG 2 ############ -;## Resamples the input data. -Resampler2.implementation=Pass_Through - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_1C.count=1 -Channels_2S.count=1 -;#count: Number of available Galileo satellite channels. -;Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - - -;#signal: -;# "1C" GPS L1 C/A -;# "2S" GPS L2 L2C (M) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "5X" GALILEO E5a I+Q - - -;# CHANNEL CONNECTION -Channel0.RF_channel_ID=0 -Channel0.signal=1C - -Channel1.RF_channel_ID=1 -Channel1.signal=2S - -Channel2.RF_channel_ID=1 -Channel2.signal=2S - -Channel3.RF_channel_ID=1 -Channel3.signal=2S - -Channel4.RF_channel_ID=1 -Channel4.signal=2S - -Channel5.RF_channel_ID=1 -Channel5.signal=2S - -Channel6.RF_channel_ID=1 -Channel6.signal=2S - -Channel7.RF_channel_ID=1 -Channel7.signal=2S - - -Channel8.RF_channel_ID=1 -Channel8.signal=2S - -Channel9.RF_channel_ID=1 -Channel9.signal=2S - -Channel10.RF_channel_ID=1 -Channel10.signal=2S - -Channel11.RF_channel_ID=1 -Channel11.signal=2S - -Channel12.RF_channel_ID=1 -Channel12.signal=2S - -Channel13.RF_channel_ID=1 -Channel13.signal=2S - -Channel14.RF_channel_ID=1 -Channel14.signal=2S - -Channel15.RF_channel_ID=1 -Channel15.signal=2S - - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C.dump=false -;#filename: Log path and filename -Acquisition_1C.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition_1C.threshold=0.012 -;#pfa: 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] -;Acquisition_1C.pfa=0.0001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C.doppler_step=250 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -;#maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] -;#(should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition_1C.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition_1C.max_dwells=1 - - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;# GPS L2C M -Acquisition_2S1.dump=false -Acquisition_2S1.dump_filename=./acq_dump.dat -Acquisition_2S1.item_type=gr_complex -Acquisition_2S1.if=0 -Acquisition_2S1.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S1.threshold=0.0001 -;Acquisition_2S1.pfa=0.001 -Acquisition_2S1.doppler_max=5000 -Acquisition_2S1.doppler_min=-5000 -Acquisition_2S1.doppler_step=30 -Acquisition_2S1.max_dwells=1 - -Acquisition_2S2.dump=false -Acquisition_2S2.dump_filename=./acq_dump.dat -Acquisition_2S2.item_type=gr_complex -Acquisition_2S2.if=0 -Acquisition_2S2.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S2.threshold=0.0003 -;Acquisition_2S2.pfa=0.001 -Acquisition_2S2.doppler_max=5000 -Acquisition_2S2.doppler_min=-5000 -Acquisition_2S2.doppler_step=30 -Acquisition_2S2.max_dwells=1 - -Acquisition_2S3.dump=false -Acquisition_2S3.dump_filename=./acq_dump.dat -Acquisition_2S3.item_type=gr_complex -Acquisition_2S3.if=0 -Acquisition_2S3.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S3.threshold=0.0003 -;Acquisition_2S3.pfa=0.001 -Acquisition_2S3.doppler_max=5000 -Acquisition_2S3.doppler_min=-5000 -Acquisition_2S3.doppler_step=30 -Acquisition_2S3.max_dwells=1 - -Acquisition_2S4.dump=false -Acquisition_2S4.dump_filename=./acq_dump.dat -Acquisition_2S4.item_type=gr_complex -Acquisition_2S4.if=0 -Acquisition_2S4.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S4.threshold=0.0003 -;Acquisition_2S4.pfa=0.001 -Acquisition_2S4.doppler_max=5000 -Acquisition_2S4.doppler_min=-5000 -Acquisition_2S4.doppler_step=30 -Acquisition_2S4.max_dwells=1 - -Acquisition_2S5.dump=false -Acquisition_2S5.dump_filename=./acq_dump.dat -Acquisition_2S5.item_type=gr_complex -Acquisition_2S5.if=0 -Acquisition_2S5.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S5.threshold=0.0003 -;Acquisition_2S5.pfa=0.001 -Acquisition_2S5.doppler_max=5000 -Acquisition_2S5.doppler_min=-5000 -Acquisition_2S5.doppler_step=30 -Acquisition_2S5.max_dwells=1 - -Acquisition_2S6.dump=false -Acquisition_2S6.dump_filename=./acq_dump.dat -Acquisition_2S6.item_type=gr_complex -Acquisition_2S6.if=0 -Acquisition_2S6.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S6.threshold=0.0003 -;Acquisition_2S6.pfa=0.001 -Acquisition_2S6.doppler_max=5000 -Acquisition_2S6.doppler_min=-5000 -Acquisition_2S6.doppler_step=30 -Acquisition_2S6.max_dwells=1 - -Acquisition_2S7.dump=false -Acquisition_2S7.dump_filename=./acq_dump.dat -Acquisition_2S7.item_type=gr_complex -Acquisition_2S7.if=0 -Acquisition_2S7.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S7.threshold=0.0003 -;Acquisition_2S7.pfa=0.001 -Acquisition_2S7.doppler_max=5000 -Acquisition_2S7.doppler_min=-5000 -Acquisition_2S7.doppler_step=100 -Acquisition_2S7.max_dwells=1 - -Acquisition_2S8.dump=false -Acquisition_2S8.dump_filename=./acq_dump.dat -Acquisition_2S8.item_type=gr_complex -Acquisition_2S8.if=0 -Acquisition_2S8.implementation=GPS_L2_M_PCPS_Acquisition -Acquisition_2S8.threshold=0.0003 -;Acquisition_2S8.pfa=0.001 -Acquisition_2S8.doppler_max=5000 -Acquisition_2S8.doppler_min=-5000 -Acquisition_2S8.doppler_step=100 -Acquisition_2S8.max_dwells=1 - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1C.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1C.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1C.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1C.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1C.pll_bw_hz=40.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1C.dll_bw_hz=3.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1C.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1C.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking_1C.early_late_space_chips=0.5; - - -;######### TRACKING CHANNEL 8 CONFIG ############ -Tracking_2S1.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S1.item_type=gr_complex -Tracking_2S1.if=0 -Tracking_2S1.dump=true -Tracking_2S1.dump_filename=./tracking_ch_ -Tracking_2S1.pll_bw_hz=2.0; -Tracking_2S1.dll_bw_hz=0.5; -Tracking_2S1.fll_bw_hz=2.0; -Tracking_2S1.order=3; -Tracking_2S1.early_late_space_chips=0.5; -;######### TRACKING CHANNEL 9 CONFIG ############ -Tracking_2S2.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S2.item_type=gr_complex -Tracking_2S2.if=0 -Tracking_2S2.dump=true -Tracking_2S2.dump_filename=./tracking_ch_ -Tracking_2S2.pll_bw_hz=2.0; -Tracking_2S2.dll_bw_hz=0.5; -Tracking_2S2.fll_bw_hz=2.0; -Tracking_2S2.order=3; -Tracking_2S2.early_late_space_chips=0.5; -;######### TRACKING CHANNEL 10 CONFIG ############ -Tracking_2S3.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S3.item_type=gr_complex -Tracking_2S3.if=0 -Tracking_2S3.dump=true -Tracking_2S3.dump_filename=./tracking_ch_ -Tracking_2S3.pll_bw_hz=2.0; -Tracking_2S3.dll_bw_hz=0.5; -Tracking_2S3.fll_bw_hz=2.0; -Tracking_2S3.order=3; -Tracking_2S3.early_late_space_chips=0.5; -;######### TRACKING CHANNEL 11 CONFIG ############ -Tracking_2S4.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S4.item_type=gr_complex -Tracking_2S4.if=0 -Tracking_2S4.dump=true -Tracking_2S4.dump_filename=./tracking_ch_ -Tracking_2S4.pll_bw_hz=2.0; -Tracking_2S4.dll_bw_hz=0.3; -Tracking_2S4.fll_bw_hz=2.0; -Tracking_2S4.order=3; -Tracking_2S4.early_late_space_chips=0.5; - -;######### TRACKING CHANNEL 12 CONFIG ############ -Tracking_2S5.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S5.item_type=gr_complex -Tracking_2S5.if=0 -Tracking_2S5.dump=true -Tracking_2S5.dump_filename=./tracking_ch_ -Tracking_2S5.pll_bw_hz=2.0; -Tracking_2S5.dll_bw_hz=0.3; -Tracking_2S5.fll_bw_hz=2.0; -Tracking_2S5.order=3; -Tracking_2S5.early_late_space_chips=0.5; -;######### TRACKING CHANNEL 13 CONFIG ############ -Tracking_2S6.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S6.item_type=gr_complex -Tracking_2S6.if=0 -Tracking_2S6.dump=true -Tracking_2S6.dump_filename=./tracking_ch_ -Tracking_2S6.pll_bw_hz=2.0; -Tracking_2S6.dll_bw_hz=0.3; -Tracking_2S6.fll_bw_hz=2.0; -Tracking_2S6.order=3; -Tracking_2S6.early_late_space_chips=0.5; -;######### TRACKING CHANNEL 14 CONFIG ############ -Tracking_2S7.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S7.item_type=gr_complex -Tracking_2S7.if=0 -Tracking_2S7.dump=true -Tracking_2S7.dump_filename=./tracking_ch_ -Tracking_2S7.pll_bw_hz=2.0; -Tracking_2S7.dll_bw_hz=0.3; -Tracking_2S7.fll_bw_hz=2.0; -Tracking_2S7.order=3; -Tracking_2S7.early_late_space_chips=0.5; -;######### TRACKING CHANNEL 15 CONFIG ############ -Tracking_2S8.implementation=GPS_L2_M_DLL_PLL_Tracking -Tracking_2S8.item_type=gr_complex -Tracking_2S8.if=0 -Tracking_2S8.dump=true -Tracking_2S8.dump_filename=./tracking_ch_ -Tracking_2S8.pll_bw_hz=2.0; -Tracking_2S8.dll_bw_hz=0.3; -Tracking_2S8.fll_bw_hz=2.0; -Tracking_2S8.order=3; -Tracking_2S8.early_late_space_chips=0.5; - - -;######### TELEMETRY DECODER GPS L1 CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C.dump=false -;#decimation factor -TelemetryDecoder_1C.decimation_factor=20; - - -;######### TELEMETRY DECODER GPS L2 CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L2 M -TelemetryDecoder_2S.implementation=GPS_L2_M_Telemetry_Decoder -TelemetryDecoder_2S.dump=false -;#decimation factor -TelemetryDecoder_2S.decimation_factor=1; - - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A.Mixed_Observables -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/gnss-sdr_multisource_Hybrid_nsr.conf b/conf/gnss-sdr_multisource_Hybrid_nsr.conf deleted file mode 100644 index fff399a5d..000000000 --- a/conf/gnss-sdr_multisource_Hybrid_nsr.conf +++ /dev/null @@ -1,493 +0,0 @@ -; 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] - -Receiver.sources_count=2 - -;######### GLOBAL OPTIONS ################## -;internal_fs_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -;GNSS-SDR.internal_fs_hz=6826700 -GNSS-SDR.internal_fs_hz=2560000 -;GNSS-SDR.internal_fs_hz=4096000 -;GNSS-SDR.internal_fs_hz=5120000 - -;#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 - -;#repeat: Repeat the processing file. Disable this option in this version -SignalSource.repeat=false - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE 0 CONFIG ############ -;#implementation: Use [File_Signal_Source] [Nsr_File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource0.implementation=Nsr_File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource0.filename=/datalogger/signals/ifen/E1L1_FE0_Band0.stream - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource0.item_type=byte - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource0.sampling_frequency=20480000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource0.freq=1575420000 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource0.subdevice=B:0 - -;#samples: Number of samples to be processed. Notice that 0 indicates the entire file. -SignalSource0.samples=0 - -;#dump: Dump the Signal source data to a file. Disable this option in this version -SignalSource0.dump=false - -SignalSource0.dump_filename=../data/signal_source.dat - -;######### SIGNAL_SOURCE 1 CONFIG ############ -;#implementation: Use [File_Signal_Source] [Nsr_File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource1.implementation=Nsr_File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource1.filename=/datalogger/signals/ifen/E1L1_FE0_Band0.stream - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource1.item_type=byte - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource1.sampling_frequency=20480000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource1.freq=1575420000 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource1.subdevice=B:0 - -;#samples: Number of samples to be processed. Notice that 0 indicates the entire file. -SignalSource1.samples=0 - -;#dump: Dump the Signal source data to a file. Disable this option in this version -SignalSource1.dump=false - -SignalSource1.dump_filename=../data/signal_source.dat - - -;######### SIGNAL_CONDITIONER 0 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 -SignalConditioner0.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 0 CONFIG ############ -;## Changes the type of input data. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter0.implementation=Pass_Through -DataTypeAdapter0.item_type=float - -;######### INPUT_FILTER 0 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. - -InputFilter0.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter0.dump=false - -;#dump_filename: Log path and filename. -InputFilter0.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. -InputFilter0.input_item_type=float - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter0.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter0.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter0.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter0.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 - -InputFilter0.band1_begin=0.0 -InputFilter0.band1_end=0.45 -InputFilter0.band2_begin=0.55 -InputFilter0.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 - -InputFilter0.ampl1_begin=1.0 -InputFilter0.ampl1_end=1.0 -InputFilter0.ampl2_begin=0.0 -InputFilter0.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 -InputFilter0.band1_error=1.0 -InputFilter0.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter0.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. -InputFilter0.grid_density=16 - -;# Original sampling frequency stored in the signal file -InputFilter0.sampling_frequency=20480000 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz - -InputFilter0.IF=5499998.47412109 - -;# Decimation factor after the frequency tranaslating block -InputFilter0.decimation_factor=8 - -;######### RESAMPLER CONFIG 0 ############ -;## 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 -Resampler0.implementation=Pass_Through - -;######### SIGNAL_CONDITIONER 1 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 -SignalConditioner1.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 1 CONFIG ############ -;## Changes the type of input data. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter1.implementation=Pass_Through -DataTypeAdapter1.item_type=float - -;######### INPUT_FILTER 1 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. - -InputFilter1.implementation=Freq_Xlating_Fir_Filter - -;#dump: Dump the filtered data to a file. -InputFilter1.dump=false - -;#dump_filename: Log path and filename. -InputFilter1.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. -InputFilter1.input_item_type=float - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter1.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter1.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter1.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter1.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 - -InputFilter1.band1_begin=0.0 -InputFilter1.band1_end=0.45 -InputFilter1.band2_begin=0.55 -InputFilter1.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 - -InputFilter1.ampl1_begin=1.0 -InputFilter1.ampl1_end=1.0 -InputFilter1.ampl2_begin=0.0 -InputFilter1.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 -InputFilter1.band1_error=1.0 -InputFilter1.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter1.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. -InputFilter1.grid_density=16 - -;# Original sampling frequency stored in the signal file -InputFilter1.sampling_frequency=20480000 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter1.IF is the intermediate frequency (in Hz) shifted down to zero Hz - -InputFilter1.IF=5499998.47412109 - -;# Decimation factor after the frequency tranaslating block -InputFilter1.decimation_factor=8 - - -;######### RESAMPLER CONFIG 1 ############ -;## 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 -Resampler1.implementation=Pass_Through - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_1C.count=8 -;#count: Number of available Galileo satellite channels. -Channels_1B.count=8 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 - -;#signal: -;# "1C" GPS L1 C/A -;# "2S" GPS L2 L2C (M) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "5X" GALILEO E5a I+Q - -;# SOURCE CONNECTION -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 -Channel10.RF_channel_ID=1 -Channel11.RF_channel_ID=1 -Channel12.RF_channel_ID=1 -Channel13.RF_channel_ID=1 -Channel14.RF_channel_ID=1 -Channel15.RF_channel_ID=1 - -;#signal: -;#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 -Channel4.signal=1C -Channel5.signal=1C -Channel6.signal=1C -Channel7.signal=1B -Channel8.signal=1B -Channel9.signal=1B -Channel10.signal=1B -Channel11.signal=1B -Channel12.signal=1B -Channel13.signal=1B -Channel14.signal=1B -Channel15.signal=1B - - -;######### GPS ACQUISITION CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1C.dump=false -;#filename: Log path and filename -Acquisition_1C.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1C.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1C.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1C.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition_1C.threshold=0.0075 -;#pfa: 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] -;Acquisition_1C.pfa=0.01 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1C.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1C.doppler_step=500 - - -;######### GALILEO ACQUISITION CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_1B.dump=false -;#filename: Log path and filename -Acquisition_1B.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_1B.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_1B.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_1B.sampled_ms=4 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_1B.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition -;#threshold: Acquisition threshold -;Acquisition_1B.threshold=0 -;#pfa: 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] -Acquisition_1B.pfa=0.0000002 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_1B.doppler_max=15000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_1B.doppler_step=125 - -;######### TRACKING GPS CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1C.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1C.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1C.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1C.dump_filename=../data/epl_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1C.pll_bw_hz=45.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1C.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1C.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1C.order=3; - -;######### TRACKING GALILEO CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_1B.implementation=Galileo_E1_DLL_PLL_VEML_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_1B.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_1B.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_1B.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_1B.dump_filename=../data/veml_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_1B.pll_bw_hz=15.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_1B.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_1B.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_1B.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] for GPS and [0.15] for Galileo -Tracking_1B.early_late_space_chips=0.15; - -;#very_early_late_space_chips: only for [Galileo_E1_DLL_PLL_VEML_Tracking], correlator very early-late space [chips]. Use [0.6] -Tracking_1B.very_early_late_space_chips=0.6; - - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_1C.dump=false -;#decimation factor -TelemetryDecoder_1C.decimation_factor=1; - -;######### TELEMETRY DECODER GALILEO CONFIG ############ -;#implementation: Use [Galileo_E1B_Telemetry_Decoder] for Galileo E1B -TelemetryDecoder_1B.implementation=Galileo_E1B_Telemetry_Decoder -TelemetryDecoder_1B.dump=false -TelemetryDecoder_1B.decimation_factor=4; - - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=Hybrid_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=false - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=10; - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500; - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex \ No newline at end of file diff --git a/conf/gnss-sdr_multisource_Hybrid_short.conf b/conf/gnss-sdr_multisource_Hybrid_short.conf deleted file mode 100644 index a0199b976..000000000 --- a/conf/gnss-sdr_multisource_Hybrid_short.conf +++ /dev/null @@ -1,479 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 -Receiver.sources_count=2 -;#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 - -;#repeat: Repeat the processing file. Disable this option in this version -SignalSource.repeat=false - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE 0 CONFIG ############ - -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource0.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource0.filename=../data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource0.item_type=short - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource0.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource0.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource0.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource0.subdevice=B:0 - -;#samples: Number of samples to be processed. Notice that 0 indicates the entire file. -SignalSource0.samples=0 - -;#dump: Dump the Signal source data to a file. Disable this option in this version -SignalSource0.dump=false - -SignalSource0.dump_filename=../data/signal_source.dat - -;######### SIGNAL_SOURCE 1 CONFIG ############ - -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource1.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource1.filename=../data/2013_04_04_GNSS_SIGNAL_at_CTTC_SPAIN.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource1.item_type=short - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource1.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource1.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource1.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource1.subdevice=B:0 - -;#samples: Number of samples to be processed. Notice that 0 indicates the entire file. -SignalSource1.samples=0 - -;#dump: Dump the Signal source data to a file. Disable this option in this version -SignalSource1.dump=false - -SignalSource1.dump_filename=../data/signal_source.dat - - -;######### SIGNAL_CONDITIONER 0 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 -SignalConditioner0.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 0 CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter0.implementation=Ishort_To_Complex - -;######### INPUT_FILTER 0 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter0.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter0.dump=false - -;#dump_filename: Log path and filename. -InputFilter0.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. -InputFilter0.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter0.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter0.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter0.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter0.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 - -InputFilter0.band1_begin=0.0 -InputFilter0.band1_end=0.45 -InputFilter0.band2_begin=0.55 -InputFilter0.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 - -InputFilter0.ampl1_begin=1.0 -InputFilter0.ampl1_end=1.0 -InputFilter0.ampl2_begin=0.0 -InputFilter0.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 -InputFilter0.band1_error=1.0 -InputFilter0.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter0.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. -InputFilter0.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter0.IF is the intermediate frequency (in Hz) shifted down to zero Hz - -InputFilter0.sampling_frequency=4000000 -InputFilter0.IF=0 - -;######### RESAMPLER 1 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 - -Resampler1.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler1.dump=false -;#dump_filename: Log path and filename. -Resampler1.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler1.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler1.sample_freq_in=4000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler1.sample_freq_out=4000000 - -;######### SIGNAL_CONDITIONER 1 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 -SignalConditioner1.implementation=Signal_Conditioner - -;######### DATA_TYPE_ADAPTER 1 CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter1.implementation=Ishort_To_Complex - -;######### INPUT_FILTER 1 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter1.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter1.dump=false - -;#dump_filename: Log path and filename. -InputFilter1.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. -InputFilter1.input_item_type=gr_complex - -;#outut_item_type: Type and resolution for output filtered signal samples. Use only gr_complex in this version. -InputFilter1.output_item_type=gr_complex - -;#taps_item_type: Type and resolution for the taps of the filter. Use only float in this version. -InputFilter1.taps_item_type=float - -;#number_of_taps: Number of taps in the filter. Increasing this parameter increases the processing time -InputFilter1.number_of_taps=5 - -;#number_of _bands: Number of frequency bands in the filter. -InputFilter1.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 - -InputFilter1.band1_begin=0.0 -InputFilter1.band1_end=0.45 -InputFilter1.band2_begin=0.55 -InputFilter1.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 - -InputFilter1.ampl1_begin=1.0 -InputFilter1.ampl1_end=1.0 -InputFilter1.ampl2_begin=0.0 -InputFilter1.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 -InputFilter1.band1_error=1.0 -InputFilter1.band2_error=1.0 - -;#filter_type: one of "bandpass", "hilbert" or "differentiator" -InputFilter1.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. -InputFilter1.grid_density=16 - -;#The following options are used only in Freq_Xlating_Fir_Filter implementation. -;#InputFilter1.IF is the intermediate frequency (in Hz) shifted down to zero Hz - -InputFilter1.sampling_frequency=4000000 -InputFilter1.IF=0 - -;######### RESAMPLER 1 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 - -Resampler1.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler1.dump=false -;#dump_filename: Log path and filename. -Resampler1.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler1.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler1.sample_freq_in=4000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler1.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=2 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=2 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS, Galileo - -;# CHANNEL CONNECTION -Channel0.RF_channel_ID=0 -Channel1.RF_channel_ID=0 -Channel2.RF_channel_ID=1 -Channel3.RF_channel_ID=1 -;#signal: -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1B - - -;######### GPS ACQUISITION CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition_GPS.threshold=0.0075 -;#pfa: 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] -;Acquisition_GPS.pfa=0.01 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=500 - - -;######### GALILEO ACQUISITION CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_Galileo.dump=false -;#filename: Log path and filename -Acquisition_Galileo.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_Galileo.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_Galileo.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_Galileo.sampled_ms=4 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_Galileo.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition -;#threshold: Acquisition threshold -;Acquisition_Galileo.threshold=0 -;#pfa: 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] -Acquisition_Galileo.pfa=0.0000008 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_Galileo.doppler_max=15000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_Galileo.doppler_step=125 - -;######### TRACKING GPS CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=../data/epl_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=45.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=4.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;######### TRACKING GALILEO CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_Galileo.implementation=Galileo_E1_DLL_PLL_VEML_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_Galileo.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_Galileo.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_Galileo.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_Galileo.dump_filename=../data/veml_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_Galileo.pll_bw_hz=15.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_Galileo.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_Galileo.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_Galileo.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] for GPS and [0.15] for Galileo -Tracking_Galileo.early_late_space_chips=0.15; - -;#very_early_late_space_chips: only for [Galileo_E1_DLL_PLL_VEML_Tracking], correlator very early-late space [chips]. Use [0.6] -Tracking_Galileo.very_early_late_space_chips=0.6; - - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=4; - -;######### TELEMETRY DECODER GALILEO CONFIG ############ -;#implementation: Use [Galileo_E1B_Telemetry_Decoder] for Galileo E1B -TelemetryDecoder_Galileo.implementation=Galileo_E1B_Telemetry_Decoder -TelemetryDecoder_Galileo.dump=false - - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=Hybrid_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=false - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100; - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500; - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/old/gnss-sdr_acq_CCCWSR.conf b/conf/old/gnss-sdr_acq_CCCWSR.conf deleted file mode 100644 index f7f4f4a57..000000000 --- a/conf/old/gnss-sdr_acq_CCCWSR.conf +++ /dev/null @@ -1,391 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/media/DATALOGGER/Agilent GPS Generator/cap2/agilent_cap2.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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 -SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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 - -;#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.sampling_frequency=4000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=8000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available satellite channels. -Channels.count=6 -;#in_acquisition: Number of channels simultaneously acquiring -Channels.in_acquisition=1 -;#system: GPS, GLONASS, Galileo, SBAS or Compass -;#if the option is disabled by default is assigned GPS -Channel.system=Galileo - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1B - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### CHANNEL 0 CONFIG ############ - -Channel0.system=Galileo -Channel0.signal=1B - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -Channel0.satellite=11 - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=Galileo -Channel1.signal=1B -Channel1.satellite=18 - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition.dump=false -;#filename: Log path and filename -Acquisition.dump_filename=./acq_dump.dat -;#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.coherent_integration_time_ms=4 -;#implementation: Acquisition algorithm selection for this channel: [Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition] -Acquisition.implementation=Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition -;#threshold: Acquisition threshold. -Acquisition.threshold=0.0025 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition.doppler_step=500 -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition.max_dwells=1 - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### ACQUISITION CH 0 CONFIG ############ -;Acquisition0.implementation=Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition -;Acquisition0.threshold=0.0025 -;Acquisition0.doppler_max=10000 -;Acquisition0.doppler_step=250 - -;#repeat_satellite: Use only jointly with the satellite PRN ID option. The default value is false -;Acquisition0.repeat_satellite = false - -;######### ACQUISITION CH 1 CONFIG ############ -;Acquisition1.implementation=Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition -;Acquisition1.threshold=0.0025 -;Acquisition1.doppler_max=10000 -;Acquisition1.doppler_step=250 -;Acquisition1.repeat_satellite = false - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking.implementation=GPS_L1_CA_DLL_PLL_Optim_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking.pll_bw_hz=50.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A. -TelemetryDecoder.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=true; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/old/gnss-sdr_acq_Tong.conf b/conf/old/gnss-sdr_acq_Tong.conf deleted file mode 100644 index 255cdb0af..000000000 --- a/conf/old/gnss-sdr_acq_Tong.conf +++ /dev/null @@ -1,393 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/media/DATALOGGER/Agilent GPS Generator/cap2/agilent_cap2.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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 -SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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 - -;#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.sampling_frequency=4000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=8000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available satellite channels. -Channels.count=6 -;#in_acquisition: Number of channels simultaneously acquiring -Channels.in_acquisition=1 -;#system: GPS, GLONASS, Galileo, SBAS or Compass -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### CHANNEL 0 CONFIG ############ - -Channel0.system=GPS -Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -Channel0.satellite=11 - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=GPS -Channel1.signal=1C -Channel1.satellite=18 - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition.dump=false -;#filename: Log path and filename -Acquisition.dump_filename=./acq_dump.dat -;#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.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Tong_Acquisition] or [Galileo_E1_PCPS_Tong_Ambiguous_Acquisition] -Acquisition.implementation=GPS_L1_CA_PCPS_Tong_Acquisition -;#threshold: Acquisition threshold. -Acquisition.threshold=0.004 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition.doppler_step=500 -;#tong_init_val: Initial value for the Tong counter. -Acquisition.tong_init_val=5 -;#tong_max_val: Maximum value for the Tong counter. -Acquisition.tong_max_val=10 - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### ACQUISITION CH 0 CONFIG ############ -;Acquisition0.implementation=GPS_L1_CA_PCPS_Tong_Acquisition -;Acquisition0.threshold=0.004 -;Acquisition0.doppler_max=10000 -;Acquisition0.doppler_step=250 - -;#repeat_satellite: Use only jointly with the satellite PRN ID option. The default value is false -;Acquisition0.repeat_satellite = false - -;######### ACQUISITION CH 1 CONFIG ############ -;Acquisition1.implementation=GPS_L1_CA_PCPS_Tong_Acquisition -;Acquisition1.threshold=0.004 -;Acquisition1.doppler_max=10000 -;Acquisition1.doppler_step=250 -;Acquisition1.repeat_satellite = false - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking.implementation=GPS_L1_CA_DLL_PLL_Optim_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking.pll_bw_hz=50.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A. -TelemetryDecoder.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=true; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/old/gnss-sdr_acq_assistance_test.conf b/conf/old/gnss-sdr_acq_assistance_test.conf deleted file mode 100644 index 83db08c8d..000000000 --- a/conf/old/gnss-sdr_acq_assistance_test.conf +++ /dev/null @@ -1,467 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=2045950 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=true -GNSS-SDR.SUPL_read_gps_assistance_xml=false -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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=214 -GNSS-SDR.SUPL_MNS=7 -GNSS-SDR.SUPL_LAC=861 -GNSS-SDR.SUPL_CI=40181 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -;SignalSource.implementation=UHD_Signal_Source -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/home/javier/signals/casa1_gn3s_d4.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=2045950 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=0 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=A:0 - -;#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 -SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter.dump=false -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=gr_complex - -;#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 - -;#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 - -; 8183800/5 = 1 636760 -; 8183800/4 = 2 045950 -; 8183800/3 = 2 727933.33333333 -InputFilter.sampling_frequency=8183800 -InputFilter.IF=-38400 - -InputFilter.decimation_factor=5 - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=8000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=2045950 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available satellite channels. -Channels.count=4 -;#in_acquisition: Number of channels simultaneously acquiring -Channels.in_acquisition=1 - -;######### CHANNEL 0 CONFIG ############ -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel0.system=GPS - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -Channel0.satellite=15 -Channel0.repeat_satellite=false - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=GPS -Channel1.signal=1C -Channel1.satellite=18 -Channel1.repeat_satellite=false - -;######### CHANNEL 2 CONFIG ############ - -Channel2.system=GPS -Channel2.signal=1C -Channel2.satellite=16 -Channel2.repeat_satellite=false - -;######### CHANNEL 3 CONFIG ############ - -Channel3.system=GPS -Channel3.signal=1C -Channel3.satellite=21 -Channel3.repeat_satellite=false - -;######### CHANNEL 4 CONFIG ############ - -Channel4.system=GPS -Channel4.signal=1C -Channel4.satellite=3 -Channel4.repeat_satellite=false - -;######### CHANNEL 5 CONFIG ############ - -Channel5.system=GPS -Channel5.signal=1C -;Channel5.satellite=21 -;Channel5.repeat_satellite=false - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition.dump=false -;#filename: Log path and filename -Acquisition.dump_filename=./acq_dump.dat -;#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 - -Acquisition.doppler_min=-5000; - -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition.sampled_ms=1 -;#maximum dwells -Acquisition.max_dwells=5 - -;######### ACQUISITION CHANNELS CONFIG ###### - -;######### ACQUISITION CH 0 CONFIG ############ -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] -Acquisition0.implementation=GPS_L1_CA_PCPS_Assisted_Acquisition -;#threshold: Acquisition threshold -Acquisition0.threshold=30 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition0.doppler_max=6000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition0.doppler_step=250 -;#repeat_satellite: Use only jointly with the satellte PRN ID option. - - -;######### ACQUISITION CH 1 CONFIG ############ -Acquisition1.implementation=GPS_L1_CA_PCPS_Assisted_Acquisition -Acquisition1.threshold=30 -Acquisition1.doppler_max=6000 -Acquisition1.doppler_step=250 - - -;######### ACQUISITION CH 2 CONFIG ############ -Acquisition2.implementation=GPS_L1_CA_PCPS_Assisted_Acquisition -Acquisition2.threshold=30 -Acquisition2.doppler_max=6000 -Acquisition2.doppler_step=250 - - -;######### ACQUISITION CH 3 CONFIG ############ -Acquisition3.implementation=GPS_L1_CA_PCPS_Assisted_Acquisition -Acquisition3.threshold=30 -Acquisition3.doppler_max=6000 -Acquisition3.doppler_step=250 - - -;######### ACQUISITION CH 4 CONFIG ############ -Acquisition4.implementation=GPS_L1_CA_PCPS_Assisted_Acquisition -Acquisition4.threshold=20 -Acquisition4.doppler_max=6000 -Acquisition4.doppler_step=250 - - -;######### ACQUISITION CH 5 CONFIG ############ -Acquisition5.implementation=GPS_L1_CA_PCPS_Assisted_Acquisition -Acquisition5.threshold=50 -Acquisition5.doppler_max=6000 -Acquisition5.doppler_step=250 - - -;######### ACQUISITION CH 6 CONFIG ############ -Acquisition6.implementation=GPS_L1_CA_PCPS_Assisted_Acquisition -Acquisition6.threshold=15 -Acquisition6.doppler_max=10000 -Acquisition6.doppler_step=250 - - -;######### ACQUISITION CH 7 CONFIG ############ -Acquisition7.implementation=GPS_L1_CA_PCPS_Assisted_Acquisition -Acquisition7.threshold=15 -Acquisition7.doppler_max=10000 -Acquisition7.doppler_step=250 - - -;######### ACQUISITION CH 8 CONFIG ############ -Acquisition8.implementation=GPS_L1_CA_PCPS_Assisted_Acquisition -Acquisition8.threshold=15 -Acquisition8.doppler_max=10000 -Acquisition8.doppler_step=250 - - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -;Tracking.implementation=GPS_L1_CA_DLL_PLL_Optim_Tracking -Tracking.implementation=GPS_L1_CA_DLL_PLL_Optim_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking.pll_bw_hz=50.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A. -TelemetryDecoder.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=true; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/old/gnss-sdr_array.conf b/conf/old/gnss-sdr_array.conf deleted file mode 100644 index 9a5b65418..000000000 --- a/conf/old/gnss-sdr_array.conf +++ /dev/null @@ -1,395 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=5000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] [Raw_Array_Signal_Source] - -SignalSource.implementation=Raw_Array_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed - -SignalSource.filename=/media/DATALOGGER/Agilent GPS Generator/cap2/agilent_cap2.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. - -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] - -SignalSource.sampling_frequency=5000000 - -;#gigabit ethernet device - -SignalSource.ethernet_dev=eth0 - -;#active array channles - -SignalSource.channels=8 - -;#Ethernet transport parameters - -SignalSource.snapshots_per_frame=80 - -SignalSource.inter_frame_delay=10 - - -;#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=Array_Signal_Conditioner - - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -InputFilter.implementation=Beamformer_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=gr_complex - -;#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 - -;#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.sampling_frequency=5000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=8000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available satellite channels. -Channels.count=8 -;#in_acquisition: Number of channels simultaneously acquiring -Channels.in_acquisition=1 -;#system: GPS, GLONASS, Galileo, SBAS or Compass -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C - -;######### SPECIFIC CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### CHANNEL 0 CONFIG ############ - -;Channel0.system=GPS -;Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -;Channel0.satellite=11 - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition.dump=false -;#filename: Log path and filename -Acquisition.dump_filename=./acq_dump.dat -;#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.coherent_integration_time_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold. It will be ignored if pfa is defined. -Acquisition.threshold=0.01 -;#pfa: 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] -;Acquisition.pfa=0.0000000001 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition.doppler_step=500 -;#bit_transition_flag: Enable or disable a strategy to deal with bit transitions in GPS signals: process two dwells and take -maximum test statistics. Only use with implementation: [GPS_L1_CA_PCPS_Acquisition] (should not be used for Galileo_E1_PCPS_Ambiguous_Acquisition]) -Acquisition.bit_transition_flag=false -;#max_dwells: Maximum number of consecutive dwells to be processed. It will be ignored if bit_transition_flag=true -Acquisition.max_dwells=1 - -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - -;######### ACQUISITION CH 0 CONFIG ############ -;Acquisition0.implementation=GPS_L1_CA_PCPS_Acquisition -;Acquisition0.threshold=0.005 -;Acquisition0.pfa=0.001 -;Acquisition0.doppler_max=10000 -;Acquisition0.doppler_step=250 - -;#repeat_satellite: Use only jointly with the satellite PRN ID option. The default value is false -;Acquisition0.repeat_satellite = false - -;######### ACQUISITION CH 1 CONFIG ############ -;Acquisition1.implementation=GPS_L1_CA_PCPS_Acquisition -;Acquisition1.threshold=0.005 -;Acquisition1.pfa=0.001 -;Acquisition1.doppler_max=10000 -;Acquisition1.doppler_step=250 -;Acquisition1.repeat_satellite = false - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking.implementation=GPS_L1_CA_DLL_PLL_Optim_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking.pll_bw_hz=50.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A. -TelemetryDecoder.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=true; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/old/gnss-sdr_galileo_e1_tcp_connector_tracking.conf b/conf/old/gnss-sdr_galileo_e1_tcp_connector_tracking.conf deleted file mode 100644 index fb561e8d2..000000000 --- a/conf/old/gnss-sdr_galileo_e1_tcp_connector_tracking.conf +++ /dev/null @@ -1,273 +0,0 @@ - -[GNSS-SDR] - -;######### GLOBAL OPTIONS ################## -;internal_fs_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use File_Signal_Source or UHD_Signal_Source or GN3S_Signal_Source (experimental) -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/home/engunit/workspace/cap2/cp_cttc_1_galileo_4Msps.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=50 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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: Pass_Through disables this block -SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: Pass_Through disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### INPUT_FILTER CONFIG ############ -;## Filter the input data. Can be combined with frequency translation for IF signals - -;#implementation: Pass_Through disables this block -;InputFilter.implementation=Fir_Filter -InputFilter.implementation=Pass_Through - -;#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 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=gr_complex - -;#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 - -;######### RESAMPLER CONFIG ############ -;## Resamples the input data. - -;#implementation: Pass_Through disables this block -Resampler.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter.dump=false -;#dump_filename: Log path and filename. -InputFilter.dump=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=4000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available satellite channels. -Channels.count=1 -Channels.in_acquisition=1 - -;######### CHANNEL 0 CONFIG ############ -Channel0.system=Galileo -Channel0.signal=1B -Channel0.satellite=12 -Channel0.repeat_satellite=true - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=Galileo -Channel1.signal=1B -Channel1.satellite=11 -Channel1.repeat_satellite=true - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition.dump=false -;#filename: Log path and filename -Acquisition.dump_filename=./acq_dump.dat -;#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=4 - -;######### ACQUISITION CHANNELS CONFIG ###### - -;######### ACQUISITION CH 0 CONFIG ############ -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition0.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition -;#threshold: Acquisition threshold -Acquisition0.threshold=50 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition0.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition0.doppler_step=125 -;#cboc: Only for [Galileo_E1_PCPS_Ambiguous_Acquisition]. This option allows you to choose between acquiring with CBOC signal [true] or sinboc(1,1) signal [false] -Acquisition0.cboc=true - -;######### ACQUISITION CH 1 CONFIG ############ -Acquisition1.implementation=Galileo_E1_PCPS_Ambiguous_Acquisition -Acquisition1.threshold=50 -Acquisition1.doppler_max=10000 -Acquisition1.doppler_step=125 -Acquisition1.cboc=true - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] or [Galileo_E1_TCP_CONNECTOR_Tracking] -Tracking.implementation=Galileo_E1_TCP_CONNECTOR_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking.dump_filename=../data/veml_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking.pll_bw_hz=30.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] for GPS and [0.15] for Galileo -Tracking.early_late_space_chips=0.15; - -;#very_early_late_space_chips: only for [Galileo_E1_DLL_PLL_VEML_Tracking], correlator very early-late space [chips]. Use [0.6] -Tracking.very_early_late_space_chips=0.6; - -;#port_ch0: local TCP port for channel 0 -Tracking.port_ch0=2070; - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A. -TelemetryDecoder.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=100 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100; - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500; - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex \ No newline at end of file diff --git a/conf/old/gnss-sdr_ishort_file_read.conf b/conf/old/gnss-sdr_ishort_file_read.conf deleted file mode 100644 index a81ccc6d3..000000000 --- a/conf/old/gnss-sdr_ishort_file_read.conf +++ /dev/null @@ -1,445 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=5000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] or [Rtlsdr_Signal_Source] -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/media/DATALOGGER_/signals/CTTC captures/cap_fs_5MHz_antenna_suelta_and_front_end_tejado_cttc.dat - -;#item_type: Type and resolution for each of the signal samples. -;#Use gr_complex for 32 bits float I/Q or short for I/Q interleaved short integer. -;#If short is selected you should have to instantiate the Ishort_To_Complex data_type_adapter. - -SignalSource.item_type=short - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=5000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#AGC_enabled: RTLSDR AGC enabled [true or false] - -SignalSource.AGC_enabled=true - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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 -;SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: Use [Ishort_To_Complex] or [Pass_Through] -DataTypeAdapter.implementation=Ishort_To_Complex -;#dump: Dump the filtered data to a file. -DataTypeAdapter.dump=false -;#dump_filename: Log path and filename. -DataTypeAdapter.dump_filename=../data/data_type_adapter.dat - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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.8 -InputFilter.band1_end=0.85 -InputFilter.band2_begin=0.90 -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 - -;#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.sampling_frequency=5000000 -InputFilter.IF=14821 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=5000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=5000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available satellite channels. -Channels.count=5 -;#in_acquisition: Number of channels simultaneously acquiring -Channels.in_acquisition=1 - -;######### CHANNEL 0 CONFIG ############ -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel0.system=GPS - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -Channel0.satellite=15 -Channel0.repeat_satellite=false - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=GPS -Channel1.signal=1C -Channel1.satellite=18 -Channel1.repeat_satellite=false - -;######### CHANNEL 2 CONFIG ############ - -Channel2.system=GPS -Channel2.signal=1C -Channel2.satellite=16 -Channel2.repeat_satellite=false - -;######### CHANNEL 3 CONFIG ############ - -Channel3.system=GPS -Channel3.signal=1C -Channel3.satellite=21 -Channel3.repeat_satellite=false - -;######### CHANNEL 4 CONFIG ############ - -Channel4.system=GPS -Channel4.signal=1C -Channel4.satellite=3 -Channel4.repeat_satellite=false - -;######### CHANNEL 5 CONFIG ############ - -Channel5.system=GPS -Channel5.signal=1C -;Channel5.satellite=21 -;Channel5.repeat_satellite=false - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition.dump=false -;#filename: Log path and filename -Acquisition.dump_filename=./acq_dump.dat -;#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 - -;######### ACQUISITION CHANNELS CONFIG ###### - -;######### ACQUISITION CH 0 CONFIG ############ -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] -Acquisition0.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition0.threshold=70 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition0.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition0.doppler_step=250 -;#repeat_satellite: Use only jointly with the satellte PRN ID option. - - -;######### ACQUISITION CH 1 CONFIG ############ -Acquisition1.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition1.threshold=70 -Acquisition1.doppler_max=10000 -Acquisition1.doppler_step=250 - - -;######### ACQUISITION CH 2 CONFIG ############ -Acquisition2.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition2.threshold=70 -Acquisition2.doppler_max=10000 -Acquisition2.doppler_step=250 - - -;######### ACQUISITION CH 3 CONFIG ############ -Acquisition3.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition3.threshold=70 -Acquisition3.doppler_max=10000 -Acquisition3.doppler_step=250 - - -;######### ACQUISITION CH 4 CONFIG ############ -Acquisition4.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition4.threshold=70 -Acquisition4.doppler_max=10000 -Acquisition4.doppler_step=250 - - -;######### ACQUISITION CH 5 CONFIG ############ -Acquisition5.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition5.threshold=50 -Acquisition5.doppler_max=10000 -Acquisition5.doppler_step=250 - - -;######### ACQUISITION CH 6 CONFIG ############ -Acquisition6.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition6.threshold=70 -Acquisition6.doppler_max=10000 -Acquisition6.doppler_step=250 - - -;######### ACQUISITION CH 7 CONFIG ############ -Acquisition7.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition7.threshold=70 -Acquisition7.doppler_max=10000 -Acquisition7.doppler_step=250 - - -;######### ACQUISITION CH 8 CONFIG ############ -Acquisition8.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition8.threshold=70 -Acquisition8.doppler_max=10000 -Acquisition8.doppler_step=250 - - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking.pll_bw_hz=50.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking.dll_bw_hz=4.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A. -TelemetryDecoder.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100; - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500; - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/old/gnss-sdr_nmea_tty_output.conf b/conf/old/gnss-sdr_nmea_tty_output.conf deleted file mode 100644 index aa3135d03..000000000 --- a/conf/old/gnss-sdr_nmea_tty_output.conf +++ /dev/null @@ -1,458 +0,0 @@ -; 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_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=5000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] or [Rtlsdr_Signal_Source] -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/media/DATALOGGER_/signals/CTTC captures/cap_fs_5MHz_antenna_suelta_and_front_end_tejado_cttc.dat - -;#item_type: Type and resolution for each of the signal samples. -;#Use gr_complex for 32 bits float I/Q or short for I/Q interleaved short integer. -;#If short is selected you should have to instantiate the Ishort_To_Complex data_type_adapter. - -SignalSource.item_type=short - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=5000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#AGC_enabled: RTLSDR AGC enabled [true or false] - -SignalSource.AGC_enabled=true - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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 -;SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: Use [Ishort_To_Complex] or [Pass_Through] -DataTypeAdapter.implementation=Ishort_To_Complex -;#dump: Dump the filtered data to a file. -DataTypeAdapter.dump=false -;#dump_filename: Log path and filename. -DataTypeAdapter.dump_filename=../data/data_type_adapter.dat - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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.8 -InputFilter.band1_end=0.85 -InputFilter.band2_begin=0.90 -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 - -;#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.sampling_frequency=5000000 -InputFilter.IF=14821 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=5000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=5000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available satellite channels. -Channels.count=5 -;#in_acquisition: Number of channels simultaneously acquiring -Channels.in_acquisition=1 - -;######### CHANNEL 0 CONFIG ############ -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel0.system=GPS - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -Channel0.satellite=15 -Channel0.repeat_satellite=false - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=GPS -Channel1.signal=1C -Channel1.satellite=18 -Channel1.repeat_satellite=false - -;######### CHANNEL 2 CONFIG ############ - -Channel2.system=GPS -Channel2.signal=1C -Channel2.satellite=16 -Channel2.repeat_satellite=false - -;######### CHANNEL 3 CONFIG ############ - -Channel3.system=GPS -Channel3.signal=1C -Channel3.satellite=21 -Channel3.repeat_satellite=false - -;######### CHANNEL 4 CONFIG ############ - -Channel4.system=GPS -Channel4.signal=1C -Channel4.satellite=3 -Channel4.repeat_satellite=false - -;######### CHANNEL 5 CONFIG ############ - -Channel5.system=GPS -Channel5.signal=1C -;Channel5.satellite=21 -;Channel5.repeat_satellite=false - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition.dump=false -;#filename: Log path and filename -Acquisition.dump_filename=./acq_dump.dat -;#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 - -;######### ACQUISITION CHANNELS CONFIG ###### - -;######### ACQUISITION CH 0 CONFIG ############ -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] -Acquisition0.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition0.threshold=70 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition0.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition0.doppler_step=250 -;#repeat_satellite: Use only jointly with the satellte PRN ID option. - - -;######### ACQUISITION CH 1 CONFIG ############ -Acquisition1.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition1.threshold=70 -Acquisition1.doppler_max=10000 -Acquisition1.doppler_step=250 - - -;######### ACQUISITION CH 2 CONFIG ############ -Acquisition2.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition2.threshold=70 -Acquisition2.doppler_max=10000 -Acquisition2.doppler_step=250 - - -;######### ACQUISITION CH 3 CONFIG ############ -Acquisition3.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition3.threshold=70 -Acquisition3.doppler_max=10000 -Acquisition3.doppler_step=250 - - -;######### ACQUISITION CH 4 CONFIG ############ -Acquisition4.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition4.threshold=70 -Acquisition4.doppler_max=10000 -Acquisition4.doppler_step=250 - - -;######### ACQUISITION CH 5 CONFIG ############ -Acquisition5.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition5.threshold=50 -Acquisition5.doppler_max=10000 -Acquisition5.doppler_step=250 - - -;######### ACQUISITION CH 6 CONFIG ############ -Acquisition6.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition6.threshold=70 -Acquisition6.doppler_max=10000 -Acquisition6.doppler_step=250 - - -;######### ACQUISITION CH 7 CONFIG ############ -Acquisition7.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition7.threshold=70 -Acquisition7.doppler_max=10000 -Acquisition7.doppler_step=250 - - -;######### ACQUISITION CH 8 CONFIG ############ -Acquisition8.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition8.threshold=70 -Acquisition8.doppler_max=10000 -Acquisition8.doppler_step=250 - - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] -Tracking.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking.pll_bw_hz=50.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking.dll_bw_hz=4.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking.order=3; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking.early_late_space_chips=0.5; - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A. -TelemetryDecoder.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=10 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=true; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/conf/old/gnss-sdr_tcp_connector_tracking.conf b/conf/old/gnss-sdr_tcp_connector_tracking.conf deleted file mode 100644 index 318d7a457..000000000 --- a/conf/old/gnss-sdr_tcp_connector_tracking.conf +++ /dev/null @@ -1,416 +0,0 @@ - -[GNSS-SDR] - -;######### GLOBAL OPTIONS ################## -;internal_fs_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use File_Signal_Source or UHD_Signal_Source or GN3S_Signal_Source (experimental) -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -SignalSource.filename=/home/engunit/workspace/cap2/agilent_cap2.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 -;SignalSource.sampling_frequency=100000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=50 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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 - -SignalSource.dump_filename=../data/SignalSource.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: Pass_Through disables this block -SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: Pass_Through disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### INPUT_FILTER CONFIG ############ -;## Filter the input data. Can be combined with frequency translation for IF signals - -;#implementation: Pass_Through disables this block -;InputFilter.implementation=Fir_Filter -InputFilter.implementation=Pass_Through - -;#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 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=gr_complex - -;#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 - -;######### RESAMPLER CONFIG ############ -;## Resamples the input data. - -;#implementation: Pass_Through disables this block -Resampler.implementation=Direct_Resampler -;Resampler.implementation=Pass_Through - -;#dump: Dump the filtered data to a file. -InputFilter.dump=false -;#dump_filename: Log path and filename. -InputFilter.dump=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=4000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available satellite channels. -Channels.count=4 -Channels.in_acquisition=4 - -;######### CHANNEL 0 CONFIG ############ -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel0.system=GPS - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -;Channel0.satellite=15 -;Channel0.repeat_satellite=true - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=GPS -Channel1.signal=1C -;Channel1.satellite=18 -;Channel1.repeat_satellite=true - -;######### CHANNEL 2 CONFIG ############ - -Channel2.system=GPS -Channel2.signal=1C -;Channel2.satellite=16 -;Channel2.repeat_satellite=true - -;######### CHANNEL 3 CONFIG ############ - -Channel3.system=GPS -Channel3.signal=1C -;Channel3.satellite=23 -;Channel3.repeat_satellite=true - -;######### CHANNEL 4 CONFIG ############ - -Channel4.system=GPS -Channel4.signal=1C -;Channel4.satellite=3 -;Channel4.repeat_satellite=true - -;######### CHANNEL 3 CONFIG ############ - -Channel5.system=GPS -Channel5.signal=1C -;Channel5.satellite=21 -;Channel5.repeat_satellite=true - - -;######### ACQUISITION GLOBAL CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition.dump=false -;#filename: Log path and filename -Acquisition.dump_filename=./acq_dump.dat -;#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 - -;######### ACQUISITION CHANNELS CONFIG ###### - -;######### ACQUISITION CH 0 CONFIG ############ -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] -Acquisition0.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition0.threshold=100 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition0.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition0.doppler_step=250 -;#repeat_satellite: Use only jointly with the satellite PRN ID option. - - -;######### ACQUISITION CH 1 CONFIG ############ -Acquisition1.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition1.threshold=100 -Acquisition1.doppler_max=10000 -Acquisition1.doppler_step=250 - - -;######### ACQUISITION CH 2 CONFIG ############ -Acquisition2.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition2.threshold=100 -Acquisition2.doppler_max=10000 -Acquisition2.doppler_step=250 - - -;######### ACQUISITION CH 3 CONFIG ############ -Acquisition3.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition3.threshold=100 -Acquisition3.doppler_max=10000 -Acquisition3.doppler_step=250 - - -;######### ACQUISITION CH 4 CONFIG ############ -Acquisition4.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition4.threshold=100 -Acquisition4.doppler_max=10000 -Acquisition4.doppler_step=250 - - -;######### ACQUISITION CH 5 CONFIG ############ -Acquisition5.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition5.threshold=100 -Acquisition5.doppler_max=10000 -Acquisition5.doppler_step=250 - - -;######### ACQUISITION CH 6 CONFIG ############ -Acquisition6.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition6.threshold=100 -Acquisition6.doppler_max=10000 -Acquisition6.doppler_step=250 - - -;######### ACQUISITION CH 7 CONFIG ############ -Acquisition7.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition7.threshold=100 -Acquisition7.doppler_max=10000 -Acquisition7.doppler_step=250 - - -;######### ACQUISITION CH 8 CONFIG ############ -Acquisition8.implementation=GPS_L1_CA_PCPS_Acquisition -Acquisition8.threshold=100 -Acquisition8.doppler_max=10000 -Acquisition8.doppler_step=250 - - - -;######### TRACKING GLOBAL CONFIG ############ - -;#implementatiion: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking], [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] -Tracking.implementation= GPS_L1_CA_TCP_CONNECTOR_Tracking -;Tracking.implementation=GPS_L1_CA_DLL_FLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking.dump_filename=./tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking.pll_bw_hz=50.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking.order=2; - -;#early_late_space_chips: correlator early-late space [chips]. Use [0.5] -Tracking.early_late_space_chips=0.5; - -;#port_ch0: local TCP port for channel 0 -Tracking.port_ch0=2070; - -;######### TELEMETRY DECODER CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A. -TelemetryDecoder.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder.dump=false - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -;PVT.averaging_depth=100 -PVT.averaging_depth=2 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=true - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=100; - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500; - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex \ No newline at end of file diff --git a/conf/old/master.conf b/conf/old/master.conf deleted file mode 100644 index 8489756cf..000000000 --- a/conf/old/master.conf +++ /dev/null @@ -1,408 +0,0 @@ -; MASTER configuration file -; This file should be updated with the latest changes in the configuration parameters, as a sample configuration file. -; use RELATIVE file path in this configuration file -; Sample for a configuration file for GNSS-SDR - -[GNSS-SDR] - -;######### GLOBAL OPTIONS ################## -;internal_fs_hz: Internal signal sampling frequency after the signal conditioning stage [Hz]. -GNSS-SDR.internal_fs_hz=4000000 - -;######### CONTROL_THREAD CONFIG ############ -ControlThread.wait_for_flowgraph=false - -;######### SUPL RRLP GPS assistance configuration ##### -GNSS-SDR.SUPL_gps_enabled=false -GNSS-SDR.SUPL_read_gps_assistance_xml=true -GNSS-SDR.SUPL_gps_ephemeris_server=supl.nokia.com -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_LAC=0x59e2 -GNSS-SDR.SUPL_CI=0x31b0 - -;######### SIGNAL_SOURCE CONFIG ############ -;#implementation: Use [File_Signal_Source] or [UHD_Signal_Source] or [GN3S_Signal_Source] (experimental) -SignalSource.implementation=File_Signal_Source - -;#filename: path to file with the captured GNSS signal samples to be processed -;SignalSource.filename=../data/my_capture.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -SignalSource.item_type=gr_complex - -;#sampling_frequency: Original Signal sampling frequency in [Hz] -SignalSource.sampling_frequency=4000000 - -;#freq: RF front-end center frequency in [Hz] -SignalSource.freq=1575420000 - -;#gain: Front-end Gain in [dB] -SignalSource.gain=60 - -;#subdevice: UHD subdevice specification (for USRP1 use A:0 or B:0) -SignalSource.subdevice=B:0 - -;#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 -SignalConditioner.implementation=Pass_Through - -;######### DATA_TYPE_ADAPTER CONFIG ############ -;## Changes the type of input data. Please disable it in this version. -;#implementation: [Pass_Through] disables this block -DataTypeAdapter.implementation=Pass_Through - -;######### 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] -;#[Pass_Through] disables this block -;#[Fir_Filter] enables a FIR Filter -;#[Freq_Xlating_Fir_Filter] enables FIR filter and a composite frequency translation that shifts IF down to zero Hz. - -;InputFilter.implementation=Fir_Filter -;InputFilter.implementation=Freq_Xlating_Fir_Filter -InputFilter.implementation=Pass_Through - -;#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=gr_complex - -;#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 - -;#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.sampling_frequency=4000000 -InputFilter.IF=0 - - - -;######### 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=Direct_Resampler -Resampler.implementation=Pass_Through - -;#dump: Dump the resamplered data to a file. -Resampler.dump=false -;#dump_filename: Log path and filename. -Resampler.dump_filename=../data/resampler.dat - -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Resampler.item_type=gr_complex - -;#sample_freq_in: the sample frequency of the input signal -Resampler.sample_freq_in=8000000 - -;#sample_freq_out: the desired sample frequency of the output signal -Resampler.sample_freq_out=4000000 - - -;######### CHANNELS GLOBAL CONFIG ############ -;#count: Number of available GPS satellite channels. -Channels_GPS.count=8 -;#count: Number of available Galileo satellite channels. -Channels_Galileo.count=0 -;#in_acquisition: Number of channels simultaneously acquiring for the whole receiver -Channels.in_acquisition=1 -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel.system=GPS - -;#signal: -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel.signal=1C - -;######### CHANNEL 0 CONFIG ############ -;#system: GPS, GLONASS, GALILEO, SBAS or COMPASS -;#if the option is disabled by default is assigned GPS -Channel0.system=GPS - -;#signal: -;# "1C" GPS L1 C/A -;# "1P" GPS L1 P -;# "1W" GPS L1 Z-tracking and similar (AS on) -;# "1Y" GPS L1 Y -;# "1M" GPS L1 M -;# "1N" GPS L1 codeless -;# "2C" GPS L2 C/A -;# "2D" GPS L2 L1(C/A)+(P2-P1) semi-codeless -;# "2S" GPS L2 L2C (M) -;# "2L" GPS L2 L2C (L) -;# "2X" GPS L2 L2C (M+L) -;# "2P" GPS L2 P -;# "2W" GPS L2 Z-tracking and similar (AS on) -;# "2Y" GPS L2 Y -;# "2M" GPS GPS L2 M -;# "2N" GPS L2 codeless -;# "5I" GPS L5 I -;# "5Q" GPS L5 Q -;# "5X" GPS L5 I+Q -;# "1C" GLONASS G1 C/A -;# "1P" GLONASS G1 P -;# "2C" GLONASS G2 C/A (Glonass M) -;# "2P" GLONASS G2 P -;# "1A" GALILEO E1 A (PRS) -;# "1B" GALILEO E1 B (I/NAV OS/CS/SoL) -;# "1C" GALILEO E1 C (no data) -;# "1X" GALILEO E1 B+C -;# "1Z" GALILEO E1 A+B+C -;# "5I" GALILEO E5a I (F/NAV OS) -;# "5Q" GALILEO E5a Q (no data) -;# "5X" GALILEO E5a I+Q -;# "7I" GALILEO E5b I -;# "7Q" GALILEO E5b Q -;# "7X" GALILEO E5b I+Q -;# "8I" GALILEO E5 I -;# "8Q" GALILEO E5 Q -;# "8X" GALILEO E5 I+Q -;# "6A" GALILEO E6 A -;# "6B" GALILEO E6 B -;# "6C" GALILEO E6 C -;# "6X" GALILEO E6 B+C -;# "6Z" GALILEO E6 A+B+C -;# "1C" SBAS L1 C/A -;# "5I" SBAS L5 I -;# "5Q" SBAS L5 Q -;# "5X" SBAS L5 I+Q -;# "2I" COMPASS E2 I -;# "2Q" COMPASS E2 Q -;# "2X" COMPASS E2 IQ -;# "7I" COMPASS E5b I -;# "7Q" COMPASS E5b Q -;# "7X" COMPASS E5b IQ -;# "6I" COMPASS E6 I -;# "6Q" COMPASS E6 Q -;# "6X" COMPASS E6 IQ -;#if the option is disabled by default is assigned "1C" GPS L1 C/A -Channel0.signal=1C - -;#satellite: Satellite PRN ID for this channel. Disable this option to random search -Channel0.satellite=15 -Channel0.repeat_satellite=false - -;######### CHANNEL 1 CONFIG ############ - -Channel1.system=GPS -Channel1.signal=1C -Channel1.satellite=18 -Channel1.repeat_satellite=false - -;######### CHANNEL 2 CONFIG ############ - -Channel2.system=GPS -Channel2.signal=1C -Channel2.satellite=16 -Channel2.repeat_satellite=false - -;######### CHANNEL 3 CONFIG ############ - -Channel3.system=GPS -Channel3.signal=1C -Channel3.satellite=21 -Channel3.repeat_satellite=false - -;######### CHANNEL 4 CONFIG ############ - -Channel4.system=GPS -Channel4.signal=1C -Channel4.satellite=3 -Channel4.repeat_satellite=false - -;######### CHANNEL 5 CONFIG ############ - -Channel5.system=GPS -Channel5.signal=1C -;Channel5.satellite=21 -;Channel5.repeat_satellite=false - - -;######### ACQUISITION GLOBAL CONFIG ############ -;######### GPS ACQUISITION CONFIG ############ - -;#dump: Enable or disable the acquisition internal data file logging [true] or [false] -Acquisition_GPS.dump=false -;#filename: Log path and filename -Acquisition_GPS.dump_filename=./acq_dump.dat -;#item_type: Type and resolution for each of the signal samples. Use only gr_complex in this version. -Acquisition_GPS.item_type=gr_complex -;#if: Signal intermediate frequency in [Hz] -Acquisition_GPS.if=0 -;#sampled_ms: Signal block duration for the acquisition signal detection [ms] -Acquisition_GPS.sampled_ms=1 -;#implementation: Acquisition algorithm selection for this channel: [GPS_L1_CA_PCPS_Acquisition] or [Galileo_E1_PCPS_Ambiguous_Acquisition] -Acquisition_GPS.implementation=GPS_L1_CA_PCPS_Acquisition -;#threshold: Acquisition threshold -Acquisition_GPS.threshold=0.0075 -;#pfa: 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] -;Acquisition_GPS.pfa=0.01 -;#doppler_max: Maximum expected Doppler shift [Hz] -Acquisition_GPS.doppler_max=10000 -;#doppler_max: Doppler step in the grid search [Hz] -Acquisition_GPS.doppler_step=500 -;######### ACQUISITION CHANNELS CONFIG ###### -;#The following options are specific to each channel and overwrite the generic options - - -;######### TRACKING GPS CONFIG ############ - -;#implementation: Selected tracking algorithm: [GPS_L1_CA_DLL_PLL_Tracking] or [GPS_L1_CA_DLL_FLL_PLL_Tracking] or [GPS_L1_CA_TCP_CONNECTOR_Tracking] or [Galileo_E1_DLL_PLL_VEML_Tracking] -Tracking_GPS.implementation=GPS_L1_CA_DLL_PLL_Tracking -;#item_type: Type and resolution for each of the signal samples. Use only [gr_complex] in this version. -Tracking_GPS.item_type=gr_complex - -;#sampling_frequency: Signal Intermediate Frequency in [Hz] -Tracking_GPS.if=0 - -;#dump: Enable or disable the Tracking internal binary data file logging [true] or [false] -Tracking_GPS.dump=false - -;#dump_filename: Log path and filename. Notice that the tracking channel will add "x.dat" where x is the channel number. -Tracking_GPS.dump_filename=../data/epl_tracking_ch_ - -;#pll_bw_hz: PLL loop filter bandwidth [Hz] -Tracking_GPS.pll_bw_hz=45.0; - -;#dll_bw_hz: DLL loop filter bandwidth [Hz] -Tracking_GPS.dll_bw_hz=2.0; - -;#fll_bw_hz: FLL loop filter bandwidth [Hz] -Tracking_GPS.fll_bw_hz=10.0; - -;#order: PLL/DLL loop filter order [2] or [3] -Tracking_GPS.order=3; - -;######### TELEMETRY DECODER GPS CONFIG ############ -;#implementation: Use [GPS_L1_CA_Telemetry_Decoder] for GPS L1 C/A -TelemetryDecoder_GPS.implementation=GPS_L1_CA_Telemetry_Decoder -TelemetryDecoder_GPS.dump=false -;#decimation factor -TelemetryDecoder_GPS.decimation_factor=1; - -;######### OBSERVABLES CONFIG ############ -;#implementation: Use [GPS_L1_CA_Observables] for GPS L1 C/A. -Observables.implementation=GPS_L1_CA_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 ############ -;#implementation: Position Velocity and Time (PVT) implementation algorithm: Use [GPS_L1_CA_PVT] in this version. -PVT.implementation=GPS_L1_CA_PVT - -;#averaging_depth: Number of PVT observations in the moving average algorithm -PVT.averaging_depth=100 - -;#flag_average: Enables the PVT averaging between output intervals (arithmetic mean) [true] or [false] -PVT.flag_averaging=false - -;#output_rate_ms: Period between two PVT outputs. Notice that the minimum period is equal to the tracking integration time (for GPS CA L1 is 1ms) [ms] -PVT.output_rate_ms=10 - -;#display_rate_ms: Position console print (std::out) interval [ms]. Notice that output_rate_ms<=display_rate_ms. -PVT.display_rate_ms=500 - -;# RINEX, KML, and NMEA output configuration - -;#dump_filename: Log path and filename without extension. Notice that PVT will add ".dat" to the binary dump and ".kml" to GoogleEarth dump. -PVT.dump_filename=./PVT - -;#nmea_dump_filename: NMEA log path and filename -PVT.nmea_dump_filename=./gnss_sdr_pvt.nmea; - -;#flag_nmea_tty_port: Enable or disable the NMEA log to a serial TTY port (Can be used with real hardware or virtual one) -PVT.flag_nmea_tty_port=false; - -;#nmea_dump_devname: serial device descriptor for NMEA logging -PVT.nmea_dump_devname=/dev/pts/4 - - -;#dump: Enable or disable the PVT internal binary data file logging [true] or [false] -PVT.dump=false - -;######### OUTPUT_FILTER CONFIG ############ -;# Receiver output filter: Leave this block disabled in this version -OutputFilter.implementation=Null_Sink_Output_Filter -OutputFilter.filename=data/gnss-sdr.dat -OutputFilter.item_type=gr_complex diff --git a/data/.gitignore b/data/.gitignore deleted file mode 100644 index 86d0cb272..000000000 --- a/data/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore \ No newline at end of file diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md new file mode 100644 index 000000000..5654ecf6b --- /dev/null +++ b/docs/CHANGELOG.md @@ -0,0 +1,1825 @@ + +[comment]: # ( +SPDX-License-Identifier: GPL-3.0-or-later +) + +[comment]: # ( +SPDX-FileCopyrightText: 2011-2024 Carles Fernandez-Prades +) + + +# Changelog + +All notable changes to GNSS-SDR will be documented in this file. + +## [Unreleased](https://github.com/gnss-sdr/gnss-sdr/tree/next) + +### Improvements in Interoperability: + +- Improved error handling in UDP connections. +- Make it possible to receive multiple constellations using a single channel + wideband device (HackRF/LimeSDR/USRP). Demonstration: + https://www.youtube.com/watch?v=ZQs2sFchJ6w + https://www.youtube.com/watch?v=HnZkKj9a-QM +- Add the following signal sources for use when GNSS-SDR is operating on SoC + FPGA boards (`-DENABLE_FPGA=ON`): + + - `ADRV9361_Z7035_Signal_Source_FPGA`: Analog Devices ADRV9361-Z7035 board. + - `FMCOMMS5_Signal_Source_FPGA`: FMCOMMS5 analog front-end. + - `MAX2771_EVKIT_Signal_Source_FPGA`: MAX2771 evaluation kit analog front-end. + - `DMA_Signal_Source_FPGA`: FPGA DMA working in post-processing mode. + + When building GNSS-SDR for the SoC FPGA, the following options can be passed + to CMake with possible values of `ON` or `OFF`, and their default value is + `OFF`: + + - `-DENABLE_AD9361`: Checks if the IIO driver is installed and builds the + `ADRV9361_Z7035_Signal_Source_FPGA` and the `FMCOMMS5_Signal_Source_FPGA` + sources. + - `-DENABLE_MAX2771`: Checks if the SPIdev driver is installed and builds the + `MAX2771_EVKIT_Signal_Source_FPGA` source. + - `-DENABLE_DMA_PROXY`: Checks if the DMA proxy driver is installed for + controlling the DMA in the FPGA and enables its usage. + +- Add the `ION_GSMS_Signal_Source`, which is able to process raw data files + described with the + [ION GNSS Software Defined Receiver Metadata Standard](https://sdr.ion.org/). + It requires the `-DENABLE_ION=ON` building configuration option. +- The `Monitor` and `PVT` blocks are now able to send data to multiple UDP + ports. +- Add experimental decoding of Galileo's I/NAV ARAIM Integrity Support Message + (ISM) as defined in the OS SIS ICD v2.1. Values, if received, are only logged + but not used. +- Added new + [`Cshort_To_Gr_Complex`](https://gnss-sdr.org/docs/sp-blocks/data-type-adapter/#implementation-cshort_to_gr_complex) + Data Type Adapter implementation. +- The + [Osmosdr_Signal_Source](https://gnss-sdr.org/docs/sp-blocks/signal-source/#implementation-osmosdr_signal_source) + has gained two new optional configuration parameters: `iq_balance_mode` and + `dc_offset_mode`, both of which are set to Automatic by default. + +### Improvements in Maintainability: + +- Updated GSL implementation to v0.42.0. See the + [gsl-lite release](https://github.com/gsl-lite/gsl-lite/releases/tag/v0.42.0). +- Code formatting now based on clang-format 19. + +### Improvements in Portability: + +- Fix building against google-glog 0.7.x. +- Find dependencies in the loongarch64 architecture. +- Soft transition from [GFlags](https://github.com/gflags/gflags) and + [Google Logging (glog)](https://github.com/google/glog) to Abseil + [Logging](https://abseil.io/docs/cpp/guides/logging) and + [Flags](https://abseil.io/docs/cpp/guides/flags) libraries. While gflags and + glog have dutifully served GNSS-SDR for over a decade, they are now showing + signs of aging. The latest version of gflags dates back six years now, with + its last commit in the master branch occurring two years ago. Glog remains + well maintained, with its latest version v0.7.0 released in February 2024, but + with no active development of new features and stuck at C++14. Abseil, on the + other hand, represents a contemporary evolution in software development, + supports C++17 and C++20, and has absorbed the functionalities of flags and + logging from its predecessors. Furthermore, as Abseil has become a + prerequisite for the latest versions of Protocol Buffers, its eventual + inclusion in GNSS-SDR's indirect dependencies is inevitable. Leveraging Abseil + allows for eliminating the need for gflags and glog, thereby reducing the + number of mandatory dependencies for GNSS-SDR in forthcoming GNU/Linux + distributions. For seamless integration, GNSS-SDR requires a quite recent + minimum version of Abseil, v20240116. If an older version is detected, the + library will not be utilized, and GNSS-SDR will fall back to using gflags and + glog, which still can be used and are fully supported. A new CMake + configuration option `-DENABLE_GLOG_AND_GFLAGS=ON` is available to force the + usage of glog and gflags instead of Abseil, even if a valid version of that + library is present. If the Abseil version installed in your system is too old + but you still want to try it, you can also force the downloading and building + of a recent version with the new CMake configuration flag + `-DENABLE_OWN_ABSEIL=ON` (requires CMake >= 3.24, otherwise it has no effect). + This change has a downside in maintainability, since the source code becomes + plagued with preprocessor directives required to maintain compatibility both + with gflags and glog, and with Abseil. +- Historically, GNSS-SDR linked against the GnuTLS library for cryptographic + functions. If GnuTLS was not found, then the building system looked for and + linked against OpenSSL as a fallback. This was due to the OpenSSL 1.x dual + license scheme, which was incompatible with GPL v3.0 license, preventing it + from being a mandatory dependency for GNSS-SDR in most GNU/Linux + distributions. This issue was solved with the release of OpenSSL 3.0.0, which + transitioned to the Apache License 2.0, fully compatible with GPL v3.0. + Accordingly, the GNSS-SDR building system now looks for OpenSSL in the first + place and, if not found, then it looks for GnuTLS as a fallback. +- Allow linking against Boost 1.87.0. +- Replace the System V queues by boost::interprocess, improving portability. + +### Reliability + +- Implementation of the Galileo Open Service Navigation Message Authentication + (OSNMA), a data authentication function for the Galileo Open Service worldwide + users, freely accessible to all. OSNMA provides receivers with the assurance + that the received Galileo navigation message is coming from the system itself + and has not been modified. OSNMA is enabled by default if the receiver + configuration defines Galileo E1 OS channels. More details can be found in + [Introducing GNSS Navigation Message Authentication](https://gnss-sdr.org/osnma). + +### Improvements in Usability: + +- Tidy up the `conf/` folder. +- Add `install` and `uninstall` targets to the `nav_msg_listener` utility. +- **Potential Breaking Change**: The source tree has been refactored to follow a + more conventional folder structure. This may disrupt user pipelines that + relied on the previous structure and could break development branches that + were branched off from `next` before this change. The key changes are: + + - The `tests` and `utils` directories have been moved from the `src` folder to + the root of the source tree. + - The empty `build` and `data` folders have been removed. Users can create a + building folder using `mkdir build` or by having CMake handle it: + `cmake -S . -B build`. + - All default names for dump or input files starting with `../data/` + have been changed to `./`. + +See the definitions of concepts and metrics at +https://gnss-sdr.org/design-forces/ + +  + +## [GNSS-SDR v0.0.19.1](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.19.1) - 2024-01-26 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.10579595.svg)](https://doi.org/10.5281/zenodo.10579595) + +- Fix formatting of the `CITATION.cff` file. + +## [GNSS-SDR v0.0.19](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.19) - 2024-01-23 + +### Improvements in Efficiency: + +- Fixed some performance inefficiencies detected by Coverity Scan. + +### Improvements in Interoperability: + +- Added a new PVT configuration boolean flag (`flag_geohash_log_out`) that + enables or disables the Position Geohash tag output in INFO log files. Set to + `false` by default. +- New fields have been added to the custom output stream defined by + `monitor_pvt.proto`: + - `utc_time` (a [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339) datetime + string), + - velocity in the local ENU frame (`vel_e`, `vel_n`, and `vel_u`), in m/s, + - the course over ground, `cog`, in degrees, + - the status of the Galileo's High Accuracy Service, `galhas_status`: + - 0: HAS data not available + - 1: HAS Corrections applied + - `geohash`, an + [encoded geographic location](https://en.wikipedia.org/wiki/Geohash). + +### Improvements in Maintainability + +- Removed useless casts and shadowed variables, improving source code + readability. + +### Improvements in Portability: + +- Updated local `cpu_features` library to v0.9.0. +- `volk_gnsssdr`: fix syntax for Python 3.12 without breaking backward + compatibility with Python 2.7. +- Fixed linking against GNU Radio v3.10.9.1. +- Make use of new API if linking against VOLK >= 3.1. +- Fixed undefined behaviour in `volk_gnsssdr` arising from incompatibility + between complex numbers in C and C++. +- Now build system paths are not leaked when cross-compiling. +- Enabled building using macOS Sonoma and `arm64` processor architecture. + +### Improvements in Repeatability: + +- A Kalman filter is now available in the PVT block, smoothing the outputs of a + simple Least Squares solution and improving the precision of delivered fixes. + It can be enabled by setting `PVT.enable_pvt_kf=true` in the configuration + file. The user can set values for the measurement and process noise + covariances with the following optional parameters (here with their default + values): `PVT.kf_measures_ecef_pos_sd_m=1.0`, in [m]; + `PVT.kf_measures_ecef_vel_sd_ms=0.1`, in [m/s]; + `PVT.kf_system_ecef_pos_sd_m=2.0`, in [m]; and + `PVT.kf_system_ecef_vel_sd_ms=0.5`, in [m/s]. + +### Improvements in Scalability: + +- Fixed some potential data race conditions detected by Coverity Scan. + +### Improvements in Usability: + +- The Galileo E1B Reduced CED parameters usage has been set to `false` by + default. You can activate its usage with `Galileo_E1B_Telemetry_Decoder=true` + in your configuration file. +- The generation of Galileo E6B observables has been disabled if the user sets + `PVT.use_e6_for_pvt=false`, fixing the PVT computation in some multi-band + configurations. +- Fix bug in the custom binary output (`PVT.enable_monitor=true`) output rate. + Before this fix, it was outputting data every 20 ms, instead of observing the + `PVT.output_rate_ms` setting. +- Now the program exits properly if a SIGINT signal is received (_e.g._, the + user pressing Ctrl+C, or another user application sending an interruption + signal). +- The estimated CN0 value is now printed in the terminal when navigation data is + succesfully decoded. +- Fixed GPS navigation message satellite validation. +- Latitude and longitude are now reported in the terminal with six decimal + places (the sixth decimal place worths up to 0.11 m), instead of the + overkilling nine (the ninth decimal place worths up to 110 microns). + Similarly, height in meters is now reported with two decimal places instead of + three, and velocity in m/s also with two decimal places instead of three. +- Fixed the rate at which KML, GPX, GeoJSON, and NMEA annotations are made. The + rate is now set by `PVT.output_rate_ms` (`500` ms by default), and can be + particularized by `PVT.kml_rate_ms`, `PVT.gpx_rate_ms`, `PVT.geojson_rate_ms`, + and `PVT.nmea_rate_ms`. Those values should be multiples of + `PVT.output_rate_ms`, or the least common multiple will be taken. + +See the definitions of concepts and metrics at +https://gnss-sdr.org/design-forces/ + +  + +## [GNSS-SDR v0.0.18](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.18) - 2023-04-06 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7805514.svg)](https://doi.org/10.5281/zenodo.7805514) + +### Improvements in Accuracy: + +- Processing and application of the corrections provided by the Galileo High + Accuracy Service (HAS) to the PVT solution. It requires at least a Galileo E1 + (or E5a) + Galileo E6B configuration. A new configuration parameter + `PVT.use_has_corrections`, set to `true` by default, can be used to deactivate + the application of HAS corrections but still retrieve the HAS data if set to + `false`. + +### Improvements in Availability: + +- Fixed bug that made the PVT block to not resolve position anymore after a loss + of samples event. +- Improved non-coherent acquisition when `Acquisition_XX.blocking=false`. +- Implemented processing of BeiDou PRN 34 up to PRN 63 signals. +- Implemented Hamming code correction for Glonass navigation message. +- Now the first iteration of the PVT computation is initialized by the Bancroft + method. This allows to get PVT fixes in some unusual geometries (_e.g._, + GNSS-like signals transmitted by LEO satellites). This initialization is + performed by default. You can opt-out by setting `PVT.bancroft_init=false` in + your configuration file. + +### Improvements in Interoperability: + +- Enabled PVT computation in the Galileo E5a + E5b receiver. Observables + reported in the RINEX file. +- Fixed PVT computation in the Galileo E5b-only receiver. +- Get E6B observables and PVT solutions in the Galileo E1B + E6B receiver. + Decoding of HAS messages as described in the + [HAS SIS ICD v1.0](https://www.gsc-europa.eu/sites/default/files/sites/all/files/Galileo_HAS_SIS_ICD_v1.0.pdf). + Generation of RTCM 3.2 messages from the received HAS messages in the + [IGS State Space Representation (SSR) Format](https://files.igs.org/pub/data/format/igs_ssr_v1.pdf). + Specifically, it generates messages of type IGM01 (SSR Orbit Correction), + IGM02 (SSR Clock Correction), IGM03 (SSR Combined Orbit and Clock Correction), + and IGM05 (SSR Code Bias). +- Added a `ZMQ_Signal_Source` for working with streams of samples published via + [ZeroMQ](https://zeromq.org/). +- Fixed register unpacking for Labsat3W files in `Labsat_Signal_Source`. This + fix is only available if gnss-sdr is linked against Boost >= 1.58.0. + +### Improvements in Maintainability: + +- The now archived [GPSTk toolkit](https://github.com/SGL-UT/GPSTk), used in + some optional tests and applications, has been replaced by the new + [GNSSTk](https://github.com/SGL-UT/gnsstk) C++ Library. Compatibility with the + former GPSTk toolkit is maintained. + +### Improvements in Portability: + +- Improved detection of the BLAS library under macOS / Macports (the `lapack` + port dependency installed with the `+openblas` variant does not install `blas` + but `openblas`, which is used as a replacement if `blas` is not found). +- Removed duplicated files in the Secure User Plane Location implementation, + which caused issues when linking with some compilers. +- Added support for Xilinx's Zynq UltraScale+ devices (requires the + `-DENABLE_FPGA=ON` building option). +- Fixed running time error if the `gnss-sdr` binary and/or the GNU Radio + libraries were built with the `-D_GLIBCXX_ASSERTIONS` compiler option. This is + added by default in some GNU/Linux distributions (e.g., ArchLinux and Fedora). +- Fixed linking against libunwind when the glog library is built locally. +- The configuration options at building time `-DENABLE_OWN_GLOG`, + `-DENABLE_OWN_ARMADILLO`, and `-DENABLE_OWN_GNSSTK` can now be switched `ON` + and `OFF` without the need to start from an empty buiding folder. +- Improved CMake handling of the spdlog library used by GNU Radio >= 3.10. +- Make use of the C++20 standard if the environment allows for it. +- Improved passing of compiler flags to `volk_gnsssdr` if the corresponding + environment variables are defined. This fixes warnings in some packaging + systems. +- Improved support for the RISC-V architecture. +- Test files are now donwloaded at configuration time instead of being included + in the source tree. This allows for a smaller package and fixes Lintian + `very-long-line-length-in-source-file` warnings since those files were not + recognized as binaries. The configuration flag `-DENABLE_PACKAGING=ON` passed + to CMake deactivates file downloading. +- The `ENABLE_GENERIC_ARCH` building option was removed, simplifying the process + of buiding the software in non-x86 processor architectures. +- If the Protocol Buffers dependency is not found, it is downloaded, built and + statically linked at buiding time. If CMake >= 3.13 and the + [Abseil C++ libraries](https://github.com/abseil/abseil-cpp) >= 20230117 are + installed on your system, Protocol Buffers v22.2 will be used. If those + requirements are not met, Protocol Buffers v21.4 will be used instead + (requires autotools). +- Since Debian 8 "Jessie", which enjoyed Long Term Support until the end of June + 2020, is not anymore in the Debian official repositories, we drop its support. +- Fixes for GCC 13 and Clang 16. + +### Improvements in Usability: + +- Fixed large GLONASS velocity errors and the extended correlator when using the + `GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking` and + `GLONASS_L2_CA_DLL_PLL_C_Aid_Tracking` implementations. +- The `UHD_Signal_Source` learned a new parameter `otw_format` for setting the + [over-the-wire data format](https://files.ettus.com/manual/page_configuration.html#config_stream_args_otw_format) + (that is, the format used between the device and the UHD) in some devices, + thus allowing to select the `sc8` format instead of the default `sc16`. This + would reduce the dynamic range and increase quantization noise, but also + reduce the load on the data link and thus allow more bandwidth. +- The `UHD_Signal_Source` learned another two optional parameters: + `device_recv_frame_size` and `device_num_recv_frames` for overriding + [transport layer defaults](https://files.ettus.com/manual/page_transport.html). +- Added gain setting and reading for the XTRX board when using the + `Osmosdr_Signal_Source` implementation of a `SignalSource`. +- The `Osmosdr_Signal_Source` implementation learned a new parameter `if_bw` to + manually set the bandwidth of the bandpass filter on the radio frontend. +- The new configuration parameter `Channels_XX.RF_channel_ID` allows to specify + the signal source per channel group. +- New configuration parameter `PVT.use_unhealthy_sats`, set by default to + `false`, allows processing observables of satellites that report an unhealthy + status in the navigation message if set to `true`. +- Added the [Geohash](https://en.wikipedia.org/wiki/Geohash) of the PVT solution + in the internal logs. +- Allowed the CMake project to be a sub-project. + +See the definitions of concepts and metrics at +https://gnss-sdr.org/design-forces/ + +  + +## [GNSS-SDR v0.0.17](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.17) - 2022-04-20 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6473244.svg)](https://doi.org/10.5281/zenodo.6473244) + +### Improvements in Availability: + +- Compute PVT solutions when using GPS L5 signals even if the satellite is + reported as not healthy in the CNAV message. + +### Improvements in Portability: + +- Updated `cpu_features` library to v0.7.0. The building option + `ENABLE_OWN_CPUFEATURES` has been replaced by `ENABLE_CPUFEATURES`, defaulting + to `ON`. +- Fixed building against GNU Radio v3.10.2.0. + +### Improvements in Reliability: + +- Fix some defects detected by Coverity Scan 2021.12.1. + +### Improvements in Usability: + +- Added a script at `src/utils/scripts/download-galileo-almanac.sh` that + downloads an XML file with the latest Galileo almanac published by the + European GNSS Service Centre at https://www.gsc-europa.eu/gsc-products/almanac + +See the definitions of concepts and metrics at +https://gnss-sdr.org/design-forces/ + +  + +## [GNSS-SDR v0.0.16](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.16) - 2022-02-15 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6090349.svg)](https://doi.org/10.5281/zenodo.6090349) + +### Improvements in Availability: + +- Added the Galileo E5b receiving chain. The software is now able to compute PVT + solutions as a standalone Galileo E5b receiver. +- Improved Time-To-First-Fix when using GPS L1 C/A signals, fixing a bug that + was making the receiver to drop the satellite if the PLL got locked at 180 + degrees, and making some optimizations on bit transition detection. +- Fixed a bug that prevented from obtaining PVT fixes with Galileo E1 OS signals + if the I/NAV subframe type 0 was the first decoded subframe. + +### Improvements in Interoperability: + +- Fixed setting of the signal source gain if the AGC is enabled when using the + AD9361 front-end. +- Fixed the regeneration of Galileo ephemeris from the reduced clock and + ephemeris data (CED) defined in the Galileo E1B INAV message introduced in + Galileo OS SIS ICD Issue 2.0. +- Added a `Limesdr_Signal_Source` for interoperability with LimeSDR (requires + [gr-limesdr](https://github.com/myriadrf/gr-limesdr) and the + `-DENABLE_LIMESDR=ON` building flag). + +### Improvements in Maintainability: + +- Rewritten Viterbi decoder for Galileo navigation messages. Encapsulated in a + class instead of being implemented as free inline functions. This improves + memory management and source code readability. +- Prefer initialization to assignment in constructors. This improves the + readability of the code, could potentially increase performance, and allows + for easier detection of unused data members (see the + [CppCoreGuidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md/#Rc-initialize)). + Added the `cppcoreguidelines-prefer-member-initializer` clang-tidy check to + enforce this policy. +- Non-functional change: Fixed formatting defects detected by clang-format 13.0. +- Non-functional change: Simplified flow graph disconnection. +- Updated GSL implementation to v0.40.0. See the + [gsl-lite release](https://github.com/gsl-lite/gsl-lite/releases/tag/v0.40.0). +- CI - `cpplint` job on GitHub: Added the `build/include_what_you_use` filter + for early detection of missing includes. +- CI - `clang-tidy` job on GitHub: More robust detection of LLVM paths installed + by homebrew. + +### Improvements in Portability: + +- Fixed building against the new API in the gr-iio component present in GNU + Radio v3.10.X.Y. +- Fixed building against GNU Radio v3.10.X.Y, which does not support the C++20 + standard. +- Fixed building against GNU Radio v3.10.X.Y, which replaced + [log4cpp](https://log4cpp.sourceforge.net/) by the + [spdlog](https://github.com/gabime/spdlog) and + [fmt](https://github.com/fmtlib/fmt) libraries. +- Updated `cpu_features` library for improved processor detection. + +### Improvements in Reliability: + +- Fixed some potential buffer overflows. +- Avoid source code lines longer than 512 characters. This was a warning raised + by Lintian (very-long-line-length-in-source-file). Long lines in source code + could be used to obfuscate the source code and to hide stuff like backdoors or + security problems. + +### Improvements in Usability: + +- Added a new monitor to extract the decoded data bits of the navigation + messages and send them elsewhere via UDP. Activated by setting + `NavDataMonitor.enable_monitor=true`, + `NavDataMonitor.client_addresses=127.0.0.1` and `NavDataMonitor.port=1237` in + the configuration file. Format described in the `nav_message.proto` file. A + simple listener application written in C++ is included in + `src/utils/nav-listener` as an example. +- Extract successful rate of the CRC check in the decoding of navigation + messages. This can be enabled by setting + `TelemetryDecoder_XX.dump_crc_stats=true` and, optionally, + `TelemetryDecoder_XX.dump_crc_stats_filename=./crc_stats` in the configuration + file. At the end of the processing (or exiting with `q` + `[Enter]`), the CRC + check success rate will be reported in a file. +- The `UHD_Signal_Source` learned to dump data in folders that do not exist, + _e.g._, if `SignalSource.dump=true`, + `SignalSource.dump_filename=./non-existing/data.dat`, and the `non-existing` + folder does not exist, it will be created if the running user has writing + permissions. This also works for absolute paths. +- Added a new configuration parameter `PVT.rtk_trace_level` that sets the + logging verbosity level of the RTKLIB library. +- Added a new output parameter `Flag_PLL_180_deg_phase_locked` in the monitor + output that indicates if the PLL got locked at 180 degrees, so the symbol sign + is reversed. +- Fixed a bug in the satellite selection algorithm for configurations with a + large number of channels. The maximum number of channels per signal is now + limited to the number of available satellites per system minus one. The number + of channels performing concurrent acquisition, `Channels.in_acquisition`, + cannot be larger than the total number of channels. The program will stop if + those requirements are not met in the configuration file. +- Fixed program termination when using `File_Signal_Source` and extended + integration times. +- The `Fifo_Signal_Source` Signal Source implementation learned to handle the + `ibyte` type. +- Added a `CITATION.cff` file. +- Updated version of the Contributor Covenant to version 2.1. + +See the definitions of concepts and metrics at +https://gnss-sdr.org/design-forces/ + +  + +## [GNSS-SDR v0.0.15](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.15) - 2021-08-23 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5242839.svg)](https://doi.org/10.5281/zenodo.5242839) + +### Improvements in Availability: + +- Added the reading of reduced clock and ephemeris data (CED) in the Galileo E1B + INAV message introduced in Galileo OS SIS ICD Issue 2.0. If the reduced CED is + available before the full ephemeris set, it is used for PVT computation until + the full set has not yet been received. This can contribute to shortening the + Time-To-First-Fix. Still experimental. +- Added the exploitation of the FEC2 Erasure Correction in the Galileo E1B INAV + message introduced in Galileo OS SIS ICD Issue 2.0. This can contribute to + shortening the Time-To-First-Fix. Since the added computational cost could + break some real-time configurations, this feature is disabled by default. It + can be activated from the configuration file by adding + `TelemetryDecoder_1B.enable_reed_solomon=true`. +- Reduction of the TTFF in GPS L1 and Galileo E1 by improving the frame + synchronization mechanism. + +### Improvements in Maintainability: + +- The Contributor License Agreement (CLA) signing for new contributors has been + replaced by a + [Developer's Certificate of Origin (DCO)](https://github.com/gnss-sdr/gnss-sdr/blob/next/.github/DCO.txt), + which implies that contributed commits in a pull request need to be signed as + a manifestation that contributors have the right to submit their work under + the open source license indicated in the contributed file(s) (instead of + asking them to sign the CLA document). +- Improved handling of changes in GNU Radio 3.9 FFT API. +- Improved handling of the filesystem library. +- Added an abstract class `SignalSourceInterface` and a common base class + `SignalSourceBase`, which allow removing a lot of duplicated code in Signal + Source blocks, and further abstract file-based interfaces behind them. +- Do not apply clang-tidy fixes to protobuf-generated headers. +- Refactored private implementation of flow graph connection and disconnection + for improved source code readability. +- Added a base class for GNSS ephemeris, saving some duplicated code and + providing a common nomenclature for ephemeris' parameters. New generated XML + files make use of the new parameters' names. +- Update GSL implementation to 0.38.1. See + https://github.com/gsl-lite/gsl-lite/releases/tag/v0.38.1 +- Update references to the latest GPS ICDs (IS-GPS-200M, IS-GPS-800H, + IS-GPS-705H) published in May, 2021. + +### Improvements in Portability: + +- Avoid collision of the `cpu_features` library when installing the + `volk_gnsssdr` library on its own, and VOLK has already installed its version. + Added a new building option `ENABLE_OWN_CPUFEATURES`, defaulting to `ON` when + building `gnss-sdr` but defaulting to `OFF` when building a stand-alone + version of `volk_gnsssdr`. When this building option is set to `ON`, it forces + the building of the local version of the `cpu_features` library, regardless of + whether it is already installed or not. +- CMake's `` version bumped to 3.21. The minimum CMake version is + 2.8.12. +- Fix building when using the Xcode generator, Xcode >= 12 and CMake >= 3.19. +- Fix building of FPGA blocks when linking against GNU Radio >= 3.9 and/or + Boost >= 1.74. +- Fix linking of the `` library when using GCC 8.x and GNU Radio >= + 3.8. +- If the Matio library is not found, now it is configured and built by CMake + instead of using autotools. +- Added support for Apple M1 AArch64 architecture processor and for FreeBSD on + x86, improved AMD microarchitecture detection. +- CMake now selects the C++23 standard if the environment allows for it. +- Improved detection of Gnuplot and `gnss_sim` when cross-compiling. +- NEON kernel implementations of the `volk_gnsssdr` library are now enabled in + aarch64 architectures. + +### Improvements in Reliability + +- Bug fix in the Galileo E1/E5 telemetry decoder that produced incorrect timing + information if a satellite is lost and then readquired. +- Check satellites' health status. If a satellite is marked as not healthy in + its navigation message, the corresponding observables are not used for + navigation. + +### Improvements in Usability: + +- Added a new `Fifo_Signal_Source` implementation that allows using a + [Unix FIFO](https://en.wikipedia.org/wiki/Named_pipe) as a signal source, thus + allowing to multiplex signal streams outside of `gnss-sdr`, letting another + program hold access to the receiver, or allowing signal sources that are not + supported by `gnss-sdr` but can dump the signal to a FIFO. +- Avoid segmentation faults in the flow graph connection and/or starting due to + some common inconsistencies in the configuration file. +- Provide hints to the user in case of failed flow graph connection due to + inconsistencies in the configuration file. +- Fix segmentation fault if the RINEX output was disabled. +- Added a feature that optionally enables the remote monitoring of GPS and + Galileo ephemeris using UDP and [Protocol Buffers](https://protobuf.dev/). +- Now building the software passing the `-DENABLE_FPGA=ON` to CMake does not + make the receiver unusable when running on non-FPGA-enabled platforms. On + FPGA-enabled platforms, now it is possible to run non-FPGA-enabled + configurations. +- Fix bug that made the Monitor block to always set to 0 the + `carrier_phase_rads` parameter value. +- The `Labsat_Signal_Source` implementation of the `SignalSource` block now can + read files in the LabSat 3 Wideband format (`.LS3W`). When using this format, + this source block can provide multiple RF chain outputs. +- Replace `Receiver.sources_count` configuration parameter name by + `GNSS-SDR.num_sources`. The former parameter name is still read to ensure + backward compatibility with configuration files using that nomenclature. +- Fix bug in searching for gr-iio when CMake was re-run several times with + different settings for the `-DENABLE_FMCOMMS2` or `-DENABLE_PLUTOSDR` building + options. +- Fix building when using UHD >= v4.0.0.0. +- Fix building for `-DENABLE_FMCOMMS2=ON` and/or `-DENABLE_PLUTOSDR=ON` when the + built-in gr-iio module introduced in GNU Radio 3.10 is found. This in-tree GNU + Radio module takes precedence over the gr-iio package provided at + https://github.com/analogdevicesinc/gr-iio. If the GNU Radio module is found, + the other one is ignored. +- File `changelog.md` renamed to the more usual `CHANGELOG.md` uppercase name. +- New global configuration parameter `GNSS-SDR.observable_interval_ms`, set by + default to 20 [ms], allows to control the internal rate at which computed + observables sets are processed (50 observables sets per second by default). +- Fix bug in the `Monitor.decimation_factor` parameter, which was not working + properly for other values than 1. + +See the definitions of concepts and metrics at +https://gnss-sdr.org/design-forces/ + +  + +## [GNSS-SDR v0.0.14](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.14) - 2021-01-08 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.4428100.svg)](https://doi.org/10.5281/zenodo.4428100) + +### Improvements in Availability: + +- Fixed bug in acquisition detection when the configuration parameter + `Acquisition_XX.threshold` was set but `Acquisition_XX.pfa` was not, causing + false locks. +- Fixed anti-jamming filters: `Pulse_Blanking_Filter`, `Notch_Filter`, and + `Notch_Filter_Lite`. + +### Improvements in Efficiency: + +- Faster `SignalConditioner` block when its implementation is set to + `Pass_Through`. + +### Improvements in Interoperability: + +- Added the Galileo E6 B/C signal structure based on E6-B/C Codes Technical + Note, Issue 1, January 2019, including Acquisition and Tracking blocks. The + Telemetry Decoder is still empty (only the CRC is checked, based on Galileo + High Accuracy Service E6-B Signal-In-Space Message Specification v1.2, April + 2020). + +### Improvements in Maintainability: + +- Added a common shared pointer definition `gnss_shared_ptr`, which allows + handling the `boost::shared_ptr` to `std::shared_ptr` transition in GNU Radio + 3.9 API more nicely. +- Support new FFT and firdes blocks' API in GNU Radio 3.9. +- Added detection of inconsistent function prototypes in `volk_gnsssdr` library + kernels at compile time. +- Fixed defects detected by clang-tidy check `bugprone-reserved-identifier`, and + added to the checks list. This check corresponds to CERT C Coding Standard + rule + [DCL37-C](https://wiki.sei.cmu.edu/confluence/display/c/DCL37-C.+Do+not+declare+or+define+a+reserved+identifier) + as well as its C++ counterpart, + [DCL51-CPP](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL51-CPP.+Do+not+declare+or+define+a+reserved+identifier). +- Applied and added more clang-tidy checks related to readability: + `readability-make-member-function-const` and `readability-qualified-auto`. + +### Improvements in Portability: + +- Fixed `-DENABLE_OWN_GLOG=ON` building option when gflags is installed and it + is older than v2.1.2 (_e.g._, in CentOS 7). +- Improved handling of old gflags versions, minimum version set to 2.1.2. + Replaced `google::` by `gflags::` namespace when using functions of the gflags + library. +- Replaced `git://` by `https://` as the used protocol when downloading Gflags, + so it can work through firewalls requiring authentication. +- Fixed static linking of the matio library when downloaded and built by CMake. +- Improved CPU feature detection by switching to Google's + [cpu_features](https://github.com/google/cpu_features) library: The + `volk_gnsssdr` library had its own CPU feature detection methods, which were + not totally reliable and difficult to implement across compilers and OSes. + This is now handled by the `cpu_features` library, thus building upon that + expertise. Since that library has higher dependency version requirements than + GNSS-SDR, the old method is still used in old development environments. No + extra dependency is needed. This change is transparent to the user, since + everything is managed by the CMake scripts. +- The `volk_gnsssdr` library can be built on Microsoft Windows and can execute + SIMD instructions on that OS. +- Removed all instances of `_mm256_zeroupper()` in the `volk_gnsssdr` library, + since they are not required and lead to miscompilation with GCC 10.2 and + optimization level `-O3`. +- Fixed building with `-DENABLE_CUDA=ON` for blocks implemented with CUDA. +- Fixed linking against the ORC library if it is present in the system. +- Fixed a bug introduced in v0.0.13 that prevented getting Galileo-only PVT + fixes in some environments. +- Fixed duplication of protobuf build tree if it was locally built and then + installed with `DESTDIR` variable set. + +### Improvements in Usability: + +- Fixed a bug when enabling pseudorange carrier smoothing in other bands than + L1. +- If `SignalConditioner.implementation=Pass_Through`, then all the configuration + parameters for the `DataTypeAdapter`, `InputFilter` and `Resampler` blocks are + ignored. This was the default behavior in GNSS-SDR v0.0.12, but it changed in + v0.0.13. This change recovers the old behavior. +- Fixed occasional segmentation fault when exiting with `q` + `[Enter]` keys if + `Acquisition_XX.blocking=false`. +- Fixed the termination of the receiver with `q` + `[Enter]` keys when using the + `Osmosdr_Signal_Source` implementation of the `SignalSource` block. +- The `Labsat_Signal_Source` implementation of the `SignalSource` block now can + be throttled with the new parameters `SignalSource.enable_throttle_control` + and `SignalSource.throttle_frequency_sps`, thus allowing the emulation of + real-time operation. +- Improved General Block diagram, both in content and in image resolution. +- The `Custom_UDP_Signal_Source` implementation now accepts + `SignalSource.sample_type=cfloat`, in addition to the existing 4 and 8-bit + length sample types. +- Fixed the `obsdiff` and `rinex2assist` utilities when installed if they were + built with a locally downloaded version of GPSTk. +- The generated HTML documentation now makes use of the Doxygen grouping + feature. +- Improved rendering of equations in HTML documentation generated by Doxygen. + Make use of MathJax for equation rendering. Added new building option + `ENABLE_EXTERNAL_MATHJAX`, set to `ON` by default. If set to `OFF`, it allows + using a local installation of MathJax 2. +- Improved dumps in Telemetry Decoding blocks. Now they include the raw + navigation message bits. If `TelemetryDecoder_XX.dump=true`, the resulting + `.dat` binary file is also delivered in `.mat` format, which is readable from + Matlab and Python. + +See the definitions of concepts and metrics at +https://gnss-sdr.org/design-forces/ + +  + +## [GNSS-SDR v0.0.13](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.13) - 2020-07-29 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3965566.svg)](https://doi.org/10.5281/zenodo.3965566) + +### Improvements in Efficiency: + +- Faster internal handling of `Gnss_Synchro` objects by reducing the amount of + copying via adding `noexcept` move constructor and move assignment operators, + so the move semantics are also used in STL containers. +- All `std::endl` have been replaced by the `'\n'` character, since there is no + need to always flush the stream. +- Performed a stack reordering of class members that seems to offer + statistically better performance in some processor architectures and/or + compilers. +- Add building option `ENABLE_STRIP` to generate stripped binaries (that is, + without debugging symbols), smaller in size and potentially providing better + performance than non-stripped counterparts. Only for GCC in Release build + mode. Set to `OFF` by default. + +### Improvements in Maintainability: + +- Improved usage of smart pointers to better express ownership of resources. +- Add definition of `std::make_unique` for buildings with C++11, and make use of + it through the source code. +- Private members in headers have been sorted by type and size, minimizing + padding space in the stack and making the files more readable for humans. +- Simpler, less error-prone design of the `GNSSBlockFactory` class public API + and internal implementation. +- Simpler API for the `Pvt_Solution` class. +- Improved system constant definition headers, numerical values are only written + once. +- Improved `const` correctness. +- The software can now be built against the GNU Radio 3.9 API that uses standard + library's smart pointers instead of Boost's. Minimum GNU Radio required + version still remains at 3.7.3. +- The software can now be built against Boost <= 1.73 (minimum version: 1.53). +- Fixed building with GCC 10 (gcc-10 and above flipped a default from `-fcommon` + to `-fno-common`, causing an error due to multiple defined lambda functions). +- Fixed warnings raised by GCC 10 and Clang 10. +- Various improvements in the CMake scripts: better decision on the C++ standard + to use; simplifications for various API dependency and environment versions + requirements, with more intuitive naming for variables; fixed the + `ENABLE_CLANG_TIDY` option; better GFORTRAN module; and broader adoption of + the modern per-target approach. + +### Improvements in Portability: + +- The software can now be cross-compiled on Petalinux environments. +- Removed python six module as a dependency if using Python 3.x. +- Make use of `std::span` if the compiler supports it, and use `gsl-lite` as a + fallback. The latter has been updated to version + [0.37.0](https://github.com/gsl-lite/gsl-lite/releases/tag/0.37.0). +- Improved finding of `libgfortran` in openSUSE and Fedora distributions. +- Improved interface for FPGA off-loading. +- Allow a random name for the build type. If not recognized, it is set to + `None`. This allows packaging in some distributions that pass an arbitrary + name as the build type (e.g., Gentoo) to avoid unexpected compiler flags. The + building option `ENABLE_PACKAGING` must be set to `ON` when packaging. +- Do not stop the receiver if SysV message queues cannot be created. + +### Improvements in Reliability: + +- Fixed a bug in GLONASS GNAV CRC computation. +- Fixed a bug in GLONASS time year. +- Fixed a possible buffer overflow in the generation of RTCM messages. +- Fixed bugs which could cause a random crash on receiver stopping. + +### Improvements in Reproducibility: + +- Improved reproducibility of the `volk_gnsssdr` library: Drop compile-time CPU + detection. + +### Improvements in Testability: + +- Add building option `ENABLE_BENCHMARKS`, which activates the building of + benchmarks for some code snippets, making it easier to developers to benchmark + different implementations for the same purpose. Set to `OFF` by default. + +### Improvements in Usability: + +- Do not pollute the source directory if the software is built from an + out-of-source-tree directory. Downloaded external sources and test raw files + are now stored in a `./thirdparty` folder under the building directory. In the + case of an out-of-source-tree build, the generated binaries are stored in an + `./install` folder, also under the building directory. The old behavior for + generated binaries is maintained if the building is done from any source tree + subfolder (for instance, `gnss-sdr/build`): in that case, binaries are stored + in the source tree (under `gnss-sdr/install`). +- Defined new `GNSS-SDR.GPS_banned_prns`, `GNSS-SDR.Galileo_banned_prns`, + `GNSS-SDR.Glonass_banned_prns` and `GNSS-SDR.Beidou_banned_prns` configuration + parameters. The user can specify lists of satellites that will not be + processed (e.g., `GNSS-SDR.Galileo_banned_prns=14,18` since Galileo E14 and + E18 satellites are not usable for PVT). Satellites on those lists will never + be assigned to a processing channel. +- Added acquisition and tracking monitors, with configuration examples. +- Added a Matlab script to quantize the input signal with a given number of bits + per sample. +- Fixed the building option `-DENABLE_LOG=OFF`, which strips internal logging + from the binary and can help to reduce its size and ultimately to speed up the + receiver. In binaries with enabled logging, it still can be disabled by + passing the command line flag `--minloglevel=3` to `gnss-sdr`. This can be + relevant in embedded devices with scarce storage capabilities. +- Fixed a bug in the Signal Sources configuration that made the number of + samples parameter ignored when too large (that is, when set larger than + 2^31-1). Now the `samples` parameter accepts values up to 2^64-1, that is, + 18,446,744,073,709,551,615 samples. +- Fixed a bug in the forwarding of NMEA messages to a serial port (configuration + of the `PVT.nmea_dump_devname` parameter was ignored). +- Updated version of the Contributor Covenant to version 2.0. Added badge in the + README.md file. + +See the definitions of concepts and metrics at +https://gnss-sdr.org/design-forces/ + +  + +## [GNSS-SDR v0.0.12](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.12) - 2020-03-13 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3709089.svg)](https://doi.org/10.5281/zenodo.3709089) + +### Improvements in Accuracy: + +- Improved accuracy of the C/N0 estimator. + +### Improvements in Availability: + +- Fixed computation of acquisition threshold when using the `Acquisition_XX.pfa` + configuration parameter, including non-coherent accumulation + (`Acquisition_XX.max_dwells` > 1). + +### Improvements in Efficiency: + +- Faster implementation of the Viterbi decoder for Galileo navigation messages. +- The `-O3` flag is now passed to GCC in `Release` and `RelWithDebInfo` build + types (instead of `-O2`), thus enabling tree vectorization. Disabled if + building for Fedora or Gentoo. + +### Improvements in Flexibility: + +- New Tracking parameters allow the configuration of the C/N0 and lock detector + smoothers, as well as the activation of the FLL in pull-in and steady-state + stages. +- Added new Tracking parameter `Tracking_XX.carrier_aiding`, allowing + enabling/disabling of carrier aiding to the code tracking loop. +- New PVT parameter `PVT.enable_rx_clock_correction` allows to enable or disable + the continuous application of the Time solution correction (clock steering) to + the computation of Observables. By default is set to `false` (that is, + disabled). +- New PVT parameter `PVT.max_clock_offset_ms`: if + `PVT.enable_rx_clock_correction` is set to `false`, this parameter sets the + maximum allowed local clock offset with respect to the Time solution. If the + estimated offset exceeds this parameter, a clock correction is applied to the + computation of Observables. +- Fixed L5 and E5a receiver chains when tracking the data component. +- Added new PVT configuration parameter `PVT.rinex_name` to specify a custom + name of the generated RINEX files. A commandline flag `--RINEX_name` is also + available, and overrides the configuration. + +### Improvements in Interoperability: + +- Fixed PVT solution in receivers processing L1 plus L2C and/or L5 signals. +- Fixed the initialization of the carrier phase accumulator. Carrier phase + measurements are now usable to compute integer ambiguity resolution. +- Added carrier phase observable initialization to match the pseudorange length. +- Added RINEX files generation for triple-band configurations (L1 + L2C + L5 and + L1 + E1 + L2C + L5 + E5a). +- Fixed bugs in the decoding of BeiDou navigation messages. +- Fixed bugs in the generation of RTCM messages. +- Fixed a bug in feeding Galileo channels' observations to RTKLIB, which was + causing wrong date of PVT fixes in Galileo-only receivers and not considering + Galileo observations in multi-constellation receivers when using signals after + the GPS rollover on April 6, 2019. +- Improved management of devices with the AD9361 RF transceiver. +- Fixed bugs in FPGA off-loading. + +### Improvements in Maintainability: + +- Rewriting of acquisition and tracking adapters, thus avoiding a lot of code + duplication. +- New CMake option `-DENABLE_ARMA_NO_DEBUG` defines the macro `ARMA_NO_DEBUG`, + which disables all run-time checks, such as bounds checking, in the Armadillo + library. This will result in faster code. This option is disabled by default + during development, but automatically set to `ON` if the option + `ENABLE_PACKAGING` is set to `ON`. +- All shadowed variables detected by passing `-Wshadow` to the compiler have + been fixed (see https://rules.sonarsource.com/cpp/RSPEC-1117?search=shadow and + MISRA C++:2008, 2-10-2 - Identifiers declared in an inner scope shall not hide + an identifier declared in an outer scope). +- Apply more clang-tidy checks related to readability: + `readability-avoid-const-params-in-decls`, + `readability-braces-around-statements`, `readability-isolate-declaration`, + `readability-redundant-control-flow`, and + `readability-uppercase-literal-suffix`. Fixed raised warnings. +- Fixed a number of defects detected by `cpplint.py`. Filters applied: + `+build/class`, `+build/c++14`, `+build/deprecated`, + `+build/explicit_make_pair`, `+build/include_what_you_use`, + `+build/printf_format`, `+build/storage_class`, `+readability/constructors`, + `+readability/namespace`, `+readability/newline`, `+readability/utf8`, + `+runtime/casting`, `+runtime/explicit`, `+runtime/indentation_namespace`, + `+runtime/init`, `+runtime/invalid_increment`, + `+runtime/member_string_references`, `+runtime/memset`, `+runtime/operator`, + `+runtime/printf`, `+runtime/printf_format`, and `+whitespace/blank_line`. +- `clang-format` can now be applied to the whole code tree without breaking + compilation. +- Added more check options to `.clang-tidy` file. +- Default Python version is now >= 3.4. Python 2.7 still can be used in systems + where Python 3 is not available (e.g., CentOS 7, Debian 8, Ubuntu 10.04). +- CMake now passes the `-DCMAKE_BUILD_TYPE` (or configuration in + multi-configuration generators like Xcode) to modules built along with + `gnss-sdr` (e.g, the `volk_gnsssdr` library and googletest). Build types + available: `None`, `Release` (by default), `Debug`, `RelWithDebInfo`, + `MinSizeRel`, `Coverage`, `NoOptWithASM`, `O2WithASM`, `O3WithASM`, `ASAN`. +- Fix runtime errors when compiling in `Debug` mode on macOS. +- Updated links in comments through the source code and in CMake scripts. +- Update GSL implementation to 0.36.0. See + https://github.com/gsl-lite/gsl-lite/releases/tag/v0.36.0 +- Create a CI job on GitHub to ensure that `clang-tidy` has been applied in most + of the source code (some optional blocks and tests are left apart). +- Create a CI job on GitHub to ensure that `clang-format` has been applied. +- Create a CI job on GitHub to ensure that `cpplint` filters have been applied. +- Create a CI job on GitHub to ensure compliance with REUSE Specification (see + https://reuse.software) +- Create a CI job on GitHub using `prettier` (https://prettier.io/) to check + markdown files formatting. +- Create a CI job on GitHub to check the formatting of CMake scripts using + `cmakelint` (see https://github.com/richq/cmake-lint). + +### Improvements in Openness: + +- Make software compliant with REUSE Specification – Version 3.0 (see + https://reuse.software/spec/). + +### Improvements in Portability: + +- The CMake scripts now find dependencies in Debian's riscv64 architecture. +- Enable AVX2 kernels of the `volk_gnsssdr` library when using the Clang + compiler. +- Fixed building in some ARM-based devices. Now Clang and ARMClang can be used + for native building. +- Added toolchain files for building gnss-sdr and the `volk_gnsssdr` library in + several ARM processor architectures, including those in Raspberry Pi 3 and 4. +- The software can now be built using Xcode (passing `-GXcode` to CMake) without + previous manual installation of `volk_gnsssdr`. +- The software can now be built using Xcode (passing `-GXcode` to CMake) without + gflags, glog, matio, PugiXML, Protocol Buffers or googletest previously + installed. +- Now the `volk_gnsssdr` library can be built on Microsoft Windows. +- Now the `volk_gnsssdr` library makes use of C11 `aligned_alloc` where + available. +- Improved CMake script for cross-compilation and for the detection of AVX, AVX2 + and NEON (v7 and v8) instructions. +- Fixed warnings raised by CMake 3.17. +- Fixed warnings raised by `cmake --warn-uninitialized ..` +- Fixed the receiver's availability in systems in which the Sys V message queue + mechanism is not available. + +### Improvements in Reliability: + +- Decoding of navigation messages no longer rely on implementation defined + behavior for shifting left a signed integer. +- Removed usage of functions with insecure API (e.g., `strcpy`, `sprintf`). +- New type alias `volk_gnsssdr::vector` allows both aligned memory allocation + and automatic deallocation. +- Fixed a memory leak in the generation of Galileo PRN codes. +- Added clang-tidy checks `clang-analyzer-security.*`, + `clang-analyzer-optin.portability.UnixAPI` clang-tidy checks. Fixed raised + warnings. +- Fixed `cpplint.py` `runtime/printf` and `runtime/explicit` errors. +- All constructors callable with one argument are marked with the keyword + explicit. See MISRA C++:2008, 12-1-3 - All constructors that are callable with + a single argument of fundamental type shall be declared explicit. + +### Improvements in Repeatability: + +- Added the option to apply carrier smoothing of code pseudoranges with new + Observables parameter `Observables.enable_carrier_smoothing`. +- Fixed normalization of DLL discriminator in BPSK modulations when the spacing + between correlators was not 0.5. + +### Improvements in Testability: + +- Add receiver runtime to `position_test` report. +- Improvements in FPGA unit tests. +- Add new utility tool `obsdiff` to perform single and double differences + computations from observation RINEX files. Requires GPSTk and Armadillo >= + 9.800. + +### Improvements in Usability: + +- A new global parameter `GNSS-SDR.pre_2009_file` allows to process raw sample + files containing GPS L1 C/A signals dated before July 14, 2009. +- Improved DLL-PLL binary dump MATLAB/Octave plot script. Old versions removed. +- Simplified RTKLIB error log. +- Added a Python 3 plotting script to show relative performance of generic + `volk_gnsssdr` kernels wrt. SIMD fastest versions. +- Added reporting of velocity in the terminal. +- Added reporting of user clock drift estimation, in ppm, in the `Pvt_Monitor` + and in internal logging (`Debug` mode). +- Updated documentation generated by Doxygen, now the `pdfmanual` target works + when using ninja. +- CMake now generates an improved summary of required/optional dependency + packages found and enabled/disabled features, including the building system + and GNSS-SDR, CMake and compiler versions. This info is also stored in a file + called `features.log` in the building directory. +- Markdown files have been wrapped to 80 characters line length to make it + easier to read them from the terminal. + +See the definitions of concepts and metrics at +https://gnss-sdr.org/design-forces/ + +  + +## [GNSS-SDR v0.0.11](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.11) - 2019-08-04 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3359989.svg)](https://doi.org/10.5281/zenodo.3359989) + +This release has several improvements in different dimensions, addition of new +features and bug fixes: + +### Improvements in Accuracy: + +- Local clock correction based on PVT solution, allowing the delivery of + continuous observables. +- Fix a bug in broadcast ionospheric parameters usage. + +### Improvements in Availability: + +- Improved mechanism for false lock detection in the Tracking loops. +- Fixed bug in Galileo INAV/FNAV message decoding when PLL is locked at 180 + degrees, which prevented from correct navigation message decoding in some + situations. +- Fixed bug that caused a random deadlock in the Observables block, preventing + the computation of PVT fixes. +- Fixed PVT computation continuity through the TOW rollover. +- Improved signal acquisition and tracking mechanisms in high dynamic scenarios. + +### Improvements in Efficiency: + +- Added mechanism for assisted acquisition of signals on a secondary band when + the primary has already been acquired. This allows a great reduction of the + computational load in multi-frequency configurations. +- Tracking loops now perform bit synchronization, simplifying the decoding + process in Telemetry blocks and FPGA-offloading. +- Improved preamble detection implementation in the decoding of navigation + messages (acceleration by x1.6 on average per channel). +- Shortened Acquisition to Tracking transition time. +- Applied clang-tidy checks and fixes related to performance: + `performance-faster-string-find`, `performance-for-range-copy`, + `performance-implicit-conversion-in-loop`, + `performance-inefficient-algorithm`, + `performance-inefficient-string-concatenation`, + `performance-inefficient-vector-operation`, `performance-move-const-arg`, + `performance-move-constructor-init`, `performance-noexcept-move-constructor`, + `performance-type-promotion-in-math-fn`, + `performance-unnecessary-copy-initialization`, + `performance-unnecessary-value-param`, `readability-string-compare`. + +### Improvements in Flexibility: + +- Rewritten Control Thread and GNSS flow graph for increased control of + channels' status and smarter assignation of satellites in multi-band + configurations. +- New Tracking parameters allow the configuration of PLL and DLL filters order. +- Added parameter to enable FLL during pull-in time. +- Configurable pull-in time in the Tracking loops. + +### Improvements in Interoperability: + +- Added the BeiDou B1I and B3I receiver chains. +- Fix bug in GLONASS dual frequency receiver. +- Added a custom UDP/IP output for PVT data streaming. +- Improved Monitor block with UDP/IP output for internal receiver's data + streaming. +- Custom output formats described with `.proto` files, making easier to other + applications reading them in a forward and backward-compatible fashion upon + future format changes. New dependency: Protocol Buffers >= 3.0.0 +- Fixes in RINEX generation: week rollover, annotations are not repeated anymore + in navigation files. Parameter `PVT.rinexnav_rate_ms` has been removed, + annotations are made as new ephemeris arrive. +- Fixes in RTCM messages generation: week rollover. + +### Improvements in Maintainability: + +- The internal communication mechanism based on `gr::msg_queue` has been + replaced by a thread-safe, built-in asynchronous message passing system based + on GNU Radio's Polymorphic Types. This change is backwards-compatible and + prevents from a failure in case of a possible future deprecation or removal of + the `gr::msg_queue` API. +- Deprecated `boost::asio::io_service` replaced by `boost::asio::io_context` if + Boost > 1.65 +- CMake turns all policies to ON according to the running version up to version + 3.15. +- 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: + `readability-container-size-empty`, `readability-identifier-naming`, + `readability-inconsistent-declaration-parameter-name`, + `readability-named-parameter`, `readability-non-const-parameter`, + `readability-string-compare`. +- Improved includes selection following suggestions by `include-what-you-use` + (see https://include-what-you-use.org/), allowing faster compiles, fewer + recompiles and making refactoring easier. +- Massive reduction of warnings triggered by clang-tidy checks. +- Throughout code cleaning and formatting performed with automated tools in + order to reduce future commit noise. + +### Improvements in Portability: + +- Added interfaces for FPGA off-loading in GPS L1 C/A, Galileo E1b/c, GPS L2C, + GPS L5 and Galileo E5a receiver chains. +- CMake scripts now follow a modern approach (targets and properties) but still + work with 2.8.12. +- Improvements for macOS users using Homebrew. +- The software builds against GNU Radio >= 3.7.3, including 3.8.0. Automatically + detected, no user intervention is required. +- The `volk_gnsssdr` library can now be built without requiring Boost if the + compiler supports C++17 or higher. +- The Boost Filesystem library is not anymore a required dependency in cases + where it can be replaced by `std::filesystem`. Automatically detected, no user + intervention is required. +- CMake scripts automatically select among C++11, C++14, C++17, or C++20 + standards, the most recent as possible, depending on compiler and dependencies + versions. +- Drawback in portability: Protocol Buffers >= 3.0.0 is a new required + dependency. + +### Improvements in Reliability: + +- Included the Guidelines Support Library. General improvement of memory + management, replacement of raw pointers by containers or smart pointers. +- Applied clang-tidy checks and fixes related to High Integrity C++: + `performance-move-const-arg`, `modernize-use-auto`, + `modernize-use-equals-default`, `modernize-use-equals-delete`, + `modernize-use-noexcept`, `modernize-use-nullptr`, `cert-dcl21-cpp`, + `misc-new-delete-overloads`, `cert-dcl58-cpp`, `cert-err52-cpp`, + `cert-err60-cpp`, `hicpp-exception-baseclass`, `hicpp-explicit-conversions`. +- Fixed a number of defects detected by Coverity Scan (version June 2019). + +### Improvements in Usability: + +- The receiver now admits FPGA off-loading, allowing for real time operation in + embedded systems at high sampling rates and high number of signals and + channels per signal in multiple bands. +- Fixed program termination (avoiding hangs and segfaults in some + platforms/configurations). +- The `Labsat_Signal_Source` now terminates the receiver's execution when the + end of file(s) is reached. It now accepts LabSat 2 filenames and series of + LabSat 3 files. +- Added configuration parameters to set the annotation rate in KML, GPX, GeoJSON + and NMEA outputs, set by default to 1 s. +- New parameter `PVT.show_local_time_zone` displays time in the local time zone. + Subject to the proper system configuration of the machine running the software + receiver. This feature is not available in old compilers. +- CMake now generates a summary of required/optional dependency packages found + and enabled/disabled features. This info is also stored in a file called + features.log in the building directory. +- Improved information provided to the user in case of building configuration + and runtime failures. +- Remove abandoned building option `-DENABLE_GN3S` and `Gn3s_Signal_Source` + implementation. + +See the definitions of concepts and metrics at +https://gnss-sdr.org/design-forces/ + +  + +## [GNSS-SDR v0.0.10](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.10) - 2018-12-14 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.2279988.svg)](https://doi.org/10.5281/zenodo.2279988) + +This release has several improvements in different dimensions, addition of new +features and bug fixes: + +### Improvements in Accuracy: + +- 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 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`, and + `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 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. + +### Improvements in Interoperability: + +- Added the GPS L5 receiver chain. +- Added the GLONASS L1 SP receiver chain. +- Added the GLONASS L2 SP receiver chain. +- Improvements in the Galileo E5a and GPS L2C receiver chains. +- 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-file format (`.mat`), readable from + Matlab/Octave and from Python via h5py. +- Added the GPX output format. +- 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/gsc-products/almanac +- 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: + +- 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: + +- 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+. +- 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 `` library has been replaced by the more + modern and portable `` (except for the interaction with RTKLIB). +- Improvement in C++ usage: The `` library has been replaced by the + more modern and portable `` for file handling. +- Improvement in C++ usage: C++ libraries preferred over C libraries (e.g., + `` instead of ``, `` instead of ``). +- Fix compatibility with Boost 1.67 (closes Debian bug #911882 + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911882) +- Fixes required by Debian packaging. +- Fixes required by Macports packaging. +- A downside in portability: BLAS and LAPACK libraries are now required even in + ARM devices. +- 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`. 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. +- 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 `` 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/ 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 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. 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 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/ + +  + +## [GNSS-SDR v0.0.9](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.9) - 2017-02-13 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.291371.svg)](https://doi.org/10.5281/zenodo.291371) + +This release has several improvements, addition of new features and bug fixes in +many dimensions: + +### Improvements in Accuracy: + +- Major rewriting in the generation of pseudoranges. +- Fixed bug in Galileo E5a/I codes. +- Fixed bug in Galileo E1 correlator spacing. +- Fixed bug that was causing errors in receivers above the troposphere. +- Fixed 16-bit complex resampler. +- Improved time tracking algorithm. +- Added Bancroft's algorithm implementation for PVT initialization. + +### Improvements in Availability: + +- Improved numerical stability of the PVT solution. The infamous bug that was + causing apparently random error peaks has finally been fixed. + +### Improvements in Efficiency: + +- VOLK_GNSSSDR: Added NEON,AVX and unaligned protokernels for + `volk_gnsssdr_32f_index_max_32` kernel. +- VOLK_GNSSSDR: Added `volk_gnsssdr-config-info` to the list of generated + executables. + +### Improvements in Flexibility: + +- Added maximum number of dwells in the Tong algorithm. + +### Improvements in Interoperability: + +- Added six new Galileo satellites: FM7, FM10, FM11, FM12, FM13, FM14. +- The Hybrid_Observables and Hybrid_PVT implementations can now handle more + types of GNSS signals. +- The RINEX printer can now print L2C and E5a observables and navigation files, + including multiband configurations. +- Added RTCM 3.2 output to more receiver configurations. + +### Improvements in Maintainability: + +- The VOLK_GNSSSDR library can now be built with Python 3. Switched dependencies + for VOLK_GNSSDR: from (old, python2.7-only) python-cheetah templates to + Python3 friendly python-mako and python-six. So, Python-cheetah dependency has + been dropped, and python-mako and python-six have been added. +- If suitable versions of gflags, glog, armadillo or googletest are not found in + the system, they will be downloaded and built at compile time (versions 2.2.0, + 0.3.4, 7.600.2 and 1.8.0, respectively). +- Fixed more than 30 defects detected by Coverity Scan. +- Added CMake Python finder and module checker. +- Deleted files related to CPack. +- Fixes, updates and improvements in the documentation. +- Improvements in CMake scripts: General code cleaning and addition of comments. + Improved user information in case of failure. Improved detection of + dependencies in more processor architectures (e.g. aarch64). + +### Improvements in Marketability: + +- Reduced time from a commit to deployment (see virtualization mechanisms in + Portability). + +### Improvements in Portability: + +- Now GNSS-SDR can be run in virtual environments through snap packages (see + https://github.com/carlesfernandez/snapcraft-sandbox) and docker images (see + https://github.com/carlesfernandez/docker-gnsssdr). +- Now GNSS-SDR is adapted to cross-compiling environments for embedded devices + (see https://github.com/carlesfernandez/oe-gnss-sdr-manifest). +- BLAS and LAPACK libraries are no longer mandatory on ARM devices. + +### Improvements in Scalability: + +- Fixed bug in acquisition with rata rates higher than 16 Msps in 4ms code + periods. + +### Improvements in Testability: + +- Major QA source code refactoring: they has been split into + `src/tests/unit-tests` and `src/tests/system-tests` folders. They are + optionally built with the `ENABLE_UNIT_TESTING=ON` (unit testing QA code), + `ENABLE_UNIT_TESTING_EXTRA=ON` (unit tests that require extra files downloaded + at configure time), `ENABLE_SYSTEM_TESTING=ON` (system tests, such as + measurement of Time-To-First-Fix) and `ENABLE_SYSTEM_TESTING_EXTRA=ON` (extra + system test requiring external tools, automatically downloaded and built at + building time) configuration flags. The EXTRA options also download and build + a custom software-defined signal generator and version 2.9 of GPSTk, if not + already found on the system. Download and local link of version 2.9 can be + forced by `ENABLE_OWN_GPSTK=ON` building configuration flag. Only + `ENABLE_UNIT_TESTING` is set to ON by default. +- Unit tests added: `CPU_multicorrelator_test` and `GPU_multicorrelator_test` + measure computer performance in multicorrelator setups. +- Unit tests added: `GpsL1CADllPllTracking` and `GpsL1CATelemetryDecoderTest`. +- System test added: `ttff_gps_l1` performs a set of cold / assisted runs of the + software receiver and computes statistics about the obtained Time To First + Fix. +- System test added: `obs_gps_l1_system_test` uses an external software-defined + signal generator to produce raw digital GNSS signal from a RINEX navigation + file and a position (static or dynamic), processes it with GNSS-SDR, and then + compares the RINEX observation file produced by the software receiver to that + produced by the signal generator. +- Software Development Kit provided for embedded devices (see + https://gnss-sdr.org/docs/tutorials/cross-compiling/). + +### Improvements in Usability: + +- Now the block factory automatically detects Channel input data type, so it is + no longer required to specify Channel.input_type in the configuration. An + error raises if Acquisition and Tracking Blocks are not configured with the + same input data type. +- Block names changed from L2_M to L2C. +- Documentation available at https://gnss-sdr.org/docs/ +- Improved tools for compilation, execution and testing in embedded devices. + +See the definitions of concepts and metrics at +https://gnss-sdr.org/design-forces/ + +  + +## [GNSS-SDR v0.0.8](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.8) - 2016-07-04 + +[![DOI](https://zenodo.org/badge/doi/10.5281/zenodo.57022.svg)](http://dx.doi.org/10.5281/zenodo.57022) + +This is a maintenance and bug fix release with no relevant new features with +respect to v0.0.7. The main changes are: + +- Fixed a bug that broke building when using latest VOLK release +- Updated PYBOMBS instructions +- Added Tests for FFT length +- Added Tests for CUDA-based tracking +- Added Tests for SIMD-based tracking +- Improved CUDA-based correlation. +- Updated documentation +- Fixed building in mips and powerpc architectures. +- `gr-gn3s` and `gr-dbfcttc` moved to its own repository. +- Improved package reproducibility +- VOLK_GNSSSDR: Fixed a bug in AVX2 puppet +- VOLK_GNSSSDR: can now be built using the C98 standard +- VOLK_GNSSSDR: Fixed a bug that broke building when linking to Boost in some + configurations. +- VOLK_GNSSSDR: Added an option to trigger profiling at building time. +- VOLK_GNSSSDR: Fix the CMake-based check for posix_memalign. + +  + +## [GNSS-SDR v0.0.7](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.7) - 2016-05-15 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.51521.svg)](https://doi.org/10.5281/zenodo.51521) + +This release has several improvements, addition of new features and bug fixes: + +- Improvements in receiver design: Internal block communication has been + redesigned to accommodate the addition of new signals, and now upstream and + downstream communication within blocks is implemented through the GNU Radio + block’s asynchronous message passing system, leading to a more scalable, more + robust and cleaner design. +- Improvements in receiver design: Correlators have been rewritten to take full + advantage of VOLK and VOLK_GNSSSDR, and they are of general use for any + tracking block. Their API now admit an arbitrary number of correlators, spaced + in an arbitrary manner, in 16ic and 32fc versions. +- Improvements in receiver design: Block adapters are now all managed by smart + pointers, ensuring better memory management. +- Improvements in processing speed: The VOLK_GNSSSDR library has been rewritten, + following current VOLK standards and adding a number of new kernels. This + approach addresses both efficiency and portability. Now the library provides + the key kernels for GNSS signal processing in 16ic and 32fc versions, + including SSE2, SSE3, SSE4.1, AVX, AV2 and NEON implementations. Please + execute `volk_gnsssdr_profile` and `volk_profile` to use the fastest + implementation for your host machine. +- New source block: `Two_Bit_Packed_File_Signal_Source`. This block takes 2 bit + samples that have been packed into bytes or shorts as input and generates a + byte for each sample. +- Fixes in SUPL assistance (supl.nokia.com removed). +- Improvements in acquisition: Added a non CFAR PCPS acquisition algorithm based + on the estimation of the post correlation noise floor. If enabled as an option + in the acquisition configuration, it allows setting more stable thresholds in + the presence of non-gaussian front-end noise (which is the usual behavior of + front-ends.) +- Fixes in acquisition: Fixed mismatch between the config files and the + acquisition code in the specification of the IF. Fixed a bug in the length of + the FFT of local codes. +- Improvements in tracking sensitivity: Added configuration option to customize + the extension of the GPS L1 CA correlation length after bit synchronization + (options are: [1,2,4,5,10,20] ms). Only available in the + `GPS_L1_CA_DLL_PLL_C_Aid_Tracking` implementation. +- New tracking block introduced: `GPS_L1_CA_DLL_PLL_C_Aid_Tracking` is a GPS L1 + C/A carrier PLL and code DLL with optional carrier-aid feedback. It is + available in both 32 bits `gr_complex` input samples and in 16 bits short int + complex samples. The `gr_complex` version has also the capability to extend + the coherent correlation period from 1 ms to 20 ms using telemetry symbol + synchronization. +- Increased resolution in CN0 estimator internal variables. +- Fixed a bug in computation of GPS L1 C/A carrier phase observable. +- Fixed a bug in the internal state machine that was blocking the receiver after + a few hours of usage. Now the receiver can work continually (tested for more + than one week, no known limit). +- New tracking block introduced: `GPS_L1_CA_DLL_PLL_Tracking_GPU` is a GPS L1 + C/A carrier PLL and code DLL that uses the CUDA-compatible GPU to compute + carrier wipe off and correlation operations, alleviating the CPU load. +- Obsolete/buggy blocks removed: `GPS_L1_CA_DLL_FLL_PLL_Tracking`, + `GPS_L1_CA_DLL_PLL_Optim_Tracking`. +- Added a RTCM printer and TCP server in PVT blocks (still experimental). The + receiver is now able to stream data in real time, serving RTCM 3.2 messages to + multiple clients. For instance, it can act as a Ntrip Source feeding a Ntrip + Server, or to be used as data input in RTKLIB, obtaining Precise Point + Positioning fixes in real-time. The TCP port, Station ID, and rate of + MT1019/MT1045 and MSM can be configured. `GPS_L1_CA_PVT` serves MT1019 (GPS + Ephemeris) and MSM7 (MT1077, full GPS pseudoranges, phase ranges, phase range + rates and CNR - high resolution) messages, while `GALILEO_E1_PVT` serves + MT1045 (Galileo ephemeris) and MSM7 (MT1097, full Galileo pseudoranges, phase + ranges, phase range rates and CNR - high resolution). +- Added a GeoJSON printer. Basic (least-squares) position fixes can be now also + stored in this format, in addition to KML. +- Obsolete block removed: output filter. +- QA code migrated to the new asynchronous message passing system. +- Improvements in documentation: update of `README.md` file, addition of + documentation for the VOLK_GNSSSDR library, updated links to new ICDs. +- Improvements in documentation: Satellite identification updated to current + constellation status. +- Updated and cleaner console output. Now Galileo satellites have the ‘E’ + identifier in their PRN number. +- Several improvements in CMake scripts allow to build GNSS-SDR in Linux Debian + (Jessie, Stretch and Sid), Ubuntu (from 12.04 to 16.04), including amd64, + i386, armhf and arm64 architectures, and possibly in other GNU/Linux + distributions, as well as in Mac OS X 10.9 to 10.11. It also works well with + CMake 3.5 (some problems solved with VOLK_GNSSSDR as a sub-project). +- The software can link either against OpenSSL or against GnuTLS with openssl + extensions, whatever it is available. This allows buildings in distributions + such as Fedora or ArchLinux, while being compatible with binary distribution + through Debian packages. +- Fixed a number of defects detected by Coverity Scan. +- Some fixes required by Debian licensing and packaging system. +- Added a CGRAN (https://www.cgran.org/) manifest +- Lots of code cleaning and fixes of typos and small bugs. + +  + +## [GNSS-SDR v0.0.6](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.6) - 2015-09-02 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.30104.svg)](https://doi.org/10.5281/zenodo.30104) + +This release has several improvements and bug fixes: + +- Added initial support to multi-band, multi-source configurations (multiple + signal sources and signal conditioners). +- Updated configuration files to new notation. Old and new configuration + notations still compatible. +- Added skeleton for mixed (multi-frequency and multi-system) observables block. +- Faster local carrier update (25% of improvement). +- Added initial support to GPS L2C real time tracking and decoding of CNAV + message with NSL STEREO v2, Fraunhofer’s Flexiband, and USRPx front-ends (the + latter requiring external clock). +- Added initial support to select the frontend clock reference source in UHD + signal source (i.e. internal or external clock reference). +- Added 2 bits complex file source for GNSS-SDR GSoC 2015 signal sampler + designed by Ajith Peter. +- Added a new rtl_tcp signal source, remote access to RTL2832U-based dongles via + TCP. +- Always build front-end-cal, a calibration tool for some DVB-T receivers based + on the Realtek's RTL2832U chipset. +- Fixed bug in UTC time computation for GPS signals. +- Updated satellite identification for GPS and Galileo. +- Defined `cbyte` as a new input data type (`std::complex`). +- Adding a new data_type_adapter, from interleaved short to + `std::complex`. +- Adding a filter for complex short streams. +- Adding a fir_filter for `std::complex` (aka `cbyte`). It converts + the data type to floats, filters, and converts back to cbyte. +- Added a resampler for `cbyte`s and `cshort`s. +- First working version of a GPS tracking block implementation using CUDA with + multi-GPU device support. +- Updating RINEX obs header when leap second is available. +- Updating RINEX nav file when IONO and UTC data are available. +- Include Signal Strength Indicator in RINEX observable files. +- Tests fixed. +- Fixed more than 200 code defects detected by Coverity Scan. +- Updated documentation. +- Updated documentation and CMake scripts for the GN3S v2 driver (Linux-only) +- Armadillo version automatically downloaded and built if it is not present in + the system is now 5.400.3. +- Updated old links from googlecode to new links at GitHub for Google Test, + gflags, glog and gperftools. +- gfortran is no longer a required package, but it is used if available. +- Added an option to remove logging. +- Enabled cross-compilation for ARM devices. +- Lots of code cleaning. + +  + +## [GNSS-SDR v0.0.5](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.5) - 2015-01-13 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.13920.svg)](https://doi.org/10.5281/zenodo.13920) + +This release has several improvements and bug fixes: + +- Now GNSS-SDR can be installed on the system with the usual + `cmake ../ && make && sudo make install`. +- Added `volk_gnsssdr` library, a volk-like library implementing some specific + kernels and ensuring portable executables. It comes with a + `volk_gnsssdr_profile` executable, in the fashion of `volk_profile`. Volk and + `volk_gnsssdr` are compatible and can be mixed together. This is expected to + enable faster execution of the software receiver in upcoming versions. +- The former `rtlsdr_signal_source` has been replaced by a more general + `osmosdr_signal_source` compatible with all those front-ends accessible by the + OsmoSDR driver (bladeRF, hackRF, etc.) in addition to RTL-based dongles. +- Added manpages when binaries `gnss-sdr`, `volk_gnsssdr_profile` and + `front-end-cal` are installed. +- Now GNSS-SDR can be built on i386, amd64, armhf, armel and arm64 + architectures. +- Now GNSS-SDR builds on Ubuntu 14.04 and 14.10, Debian jessie/sid and Mac OS X + 10.9 and 10.10. +- Improved detection of dependencies, specially when installed as .deb packages. +- Added a `check` target with some minimal tests. +- Added support for interleaved I/Q byte-size sample files. +- Minor bug fixes, updated documentation and code cleaning. + +  + +## [GNSS-SDR v0.0.4](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.4) - 2014-09-08 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.11628.svg)](https://doi.org/10.5281/zenodo.11628) + +This release has several improvements and bug fixes: + +- Added hybrid processing GPS L1 C/A and Galileo E1B, providing position fixes + make use of observables for both constellations. +- Added implementations of the QuickSync algorithm for GPS L1 C/A and Galileo E1 + acquisition. +- Added processing blocks for Galileo E5a: Acquisition, Tracking, + Telemetry_Decoder (experimental) +- New configuration files allow to configure GPS and Galileo channels in the + same receiver. +- Added tropospheric corrections to GPS and Galileo PVT solution. +- Improved precision obtained by changing some variables from float to double. +- New building options: `ENABLE_GN3S`, `ENABLE_RTLSDR`, `ENABLE_ARRAY`, and + `ENABLE_OPENCL`. +- Improved documentation on how to enable optional drivers. +- Fixed bug in memory alignment that caused problems with high data rates. +- Added `ENABLE_GENERIC_ARCH`, an option to build the binary without detecting + the SIMD instruction set present in the compiling machine, so it can be + executed in other machines without those specific sets. +- Added `ENABLE_GPERFTOOLS`, which links the executable to tcmalloc and profiler + if Gperftools is available on the system. +- Added carrier phase, Doppler shift and signal strength observables to the + RINEX files. Static PPP solutions are available for GPS with RTKLIB via RINEX + files. +- The executable now produces RINEX files version 3.02 of Galileo Observables, + Navigation data, and mixed (GPS/Galileo) observables and nav data. RINEX 3.02 + is the default version of RINEX files. +- Armadillo version updated to 4.400.2 +- Armadillo now uses OpenBLAS instead of BLAS if the former is available on the + system. +- Some raw pointers have been changed to smart pointers. +- Minor bug fixes and code cleaning. + +  + +## [GNSS-SDR v0.0.3](https://github.com/gnss-sdr/gnss-sdr/releases/tag/v0.0.3) - 2014-06-30 + +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.10708.svg)](https://doi.org/10.5281/zenodo.10708) + +This release has several improvements and bug fixes, completing the transition +from Subversion to Git. The main changes are: + +- Created some missing directories lost in the SVN to Git transition. +- New C++11-ized block factory, flow graph and tests, resulting in better memory + management and fewer segmentation faults. Several raw pointers converted to + smart pointers. +- Reorganization of assistance data input and output. +- Fixed memory leak when talking to SUPL servers. +- Improved retrieval of assistance data. +- Fixing an error in a constant value related to Galileo. +- Inform users if the temporal folder is not /tmp. +- Fixes and additions to the documentation. +- README in markdown language so it looks better in Git repositories. +- Fixed a bug that prevented the update of all shared map structures (ephemeris, + iono parameters, etc…). +- The configuration script now throws error if GCC is older than 4.7 or Boost is + older than 1.45 +- Improved detection / downloading & building if missing of Gflags and Glog. +- Improved detection / downloading & building if missing of Armadillo and + related dependencies. +- Fixes many warnings that appeared when using CMake 3.0. +- Improved detection of GTEST_DIR variable. +- Include header files in libraries so IDEs such as Xcode can display them. + +Enjoy it! diff --git a/docs/changelog b/docs/changelog deleted file mode 100644 index fe9174a7e..000000000 --- a/docs/changelog +++ /dev/null @@ -1,7 +0,0 @@ -gnss-sdr (0.0.5) unstable; urgency=low - - * First release that installs on the system and can generate packages. - Now 'make package' builds a .deb package in Ubuntu and Linux. - * Fixed some linking problems. - - -- Carles Fernandez-Prades Fri, 14 Nov 2014 02:03:00 +0100 \ No newline at end of file diff --git a/docs/changelog.Debian b/docs/changelog.Debian deleted file mode 100644 index 3af7a9aa7..000000000 --- a/docs/changelog.Debian +++ /dev/null @@ -1,5 +0,0 @@ -gnss-sdr (0.0.5) unstable; urgency=low - - * First release that installs on the system and can generate deb packages. - - -- Carles Fernandez-Prades Fri, 14 Nov 2014 02:03:00 +0100 \ No newline at end of file diff --git a/docs/doxygen/Doxyfile.generic b/docs/doxygen/Doxyfile.generic deleted file mode 100644 index f574df0f5..000000000 --- a/docs/doxygen/Doxyfile.generic +++ /dev/null @@ -1,1680 +0,0 @@ -# Doxyfile 1.7.3 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" "). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# 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. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = "GNSS-SDR" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = 0.0.1 - -# Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = "An Open Source GNSS Software Defined Receiver" - -# With the PROJECT_LOGO tag one can specify an logo or icon that is -# included in the documentation. The maximum height of the logo should not -# exceed 55 pixels and the maximum width should not exceed 200 pixels. -# Doxygen will copy the logo to the output directory. - -PROJECT_LOGO = ./docs/doxygen/images/gnss-sdr_logo_round.png - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = ./docs - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful if your file system -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this -# tag. The format is ext=language, where ext is a file extension, and language -# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, -# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make -# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C -# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions -# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also makes the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = YES - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. - -TYPEDEF_HIDES_STRUCT = NO - -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penalty. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will roughly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols - -SYMBOL_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespaces are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen -# will list include files with double quotes in the documentation -# rather than with sharp brackets. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen -# will sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the default) -# the constructors will appear in the respective orders defined by -# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. -# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO -# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper type resolution of all parameters of a function it will reject a -# match between the prototype and the implementation of a member function even if there is only one candidate or it is obvious which candidate to choose by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen -# will still accept a match between prototype and implementation in such cases. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or macro consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and macros in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. -# This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. The create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. -# You can optionally specify a file name after the option, if omitted -# DoxygenLayout.xml will be used as the name of the layout file. - -LAYOUT_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# The WARN_NO_PARAMDOC option can be enabled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = src 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 -# the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh -# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py -# *.f90 *.f *.for *.vhd *.vhdl - -FILE_PATTERNS = *.h \ - *.dox - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = ./docs/doxygen/images/ - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. -# If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. -# Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. -# The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty or if -# non of the patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) -# and it is also possible to disable source filtering for a specific pattern -# using *.ext= (so without naming a filter). This option only has effect when -# FILTER_SOURCE_FILES is enabled. - -FILTER_SOURCE_PATTERNS = - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. -# Otherwise they will link to the documentation. - -REFERENCES_LINK_SOURCE = 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 -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -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. -# 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. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of -# the colors in the HTML output. For a value of 0 the output will use -# grayscales only. A value of 255 will produce the most vivid colors. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to -# the luminance component of the colors in the HTML output. Values below -# 100 gradually make the output lighter, whereas values above 100 make -# the output darker. The value divided by 100 is the actual gamma applied, -# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, -# and 100 does not change the gamma. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. - -HTML_TIMESTAMP = YES - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = NO - -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# 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 - -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. - -CHM_INDEX_ENCODING = - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated -# that can be used as input for Qt's qhelpgenerator to generate a -# Qt Compressed Help (.qch) of the generated HTML documentation. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders - -QHP_VIRTUAL_FOLDER = doc - -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to -# add. For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see -# -# Qt Help Project / Custom Filters. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's -# filter section matches. -# -# Qt Help Project / Filter Attributes. - -QHP_SECT_FILTER_ATTRS = - -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help -# plugin. To install this plugin and make it available under the help contents -# menu in Eclipse, the contents of the directory containing the HTML and XML -# files needs to be copied into the plugins directory of eclipse. The name of -# the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before -# the help appears. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have -# this name. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [0,1..20]) -# that doxygen will group on one line in the generated HTML documentation. -# Note that a value of 0 will completely suppress the enum values from appearing in the overview section. - -ENUM_VALUES_PER_LINE = 4 - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. - -USE_INLINE_TREES = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open -# links to external symbols imported via tag files in a separate window. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are -# not supported properly for IE 6.0, but are supported on all modern browsers. -# Note that when changing this option you need to delete any form_*.png files -# in the HTML output before the changes have effect. - -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 -# 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 -# configure the path to it using the MATHJAX_RELPATH option. - -USE_MATHJAX = NO - -# When MathJax is enabled you need to specify the location relative to the -# HTML output directory using the MATHJAX_RELPATH option. The destination -# directory should contain the MathJax.js script. For instance, if the mathjax -# directory is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the mathjax.org site, so you can quickly see the result without installing -# MathJax, but it is strongly recommended to install a local copy of MathJax -# before deployment. - -MATHJAX_RELPATH = http://www.mathjax.org/mathjax - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box -# for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using -# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets -# (GENERATE_DOCSET) there is already a search function so this one should -# typically be disabled. For large projects the javascript based search engine -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. - -SEARCHENGINE = YES - -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a PHP enabled web server instead of at the web client -# using Javascript. Doxygen will generate the search PHP script and index -# file to put on the web server. The advantage of the server -# based approach is that it scales better to large projects and allows -# full text search. The disadvantages are that it is more difficult to setup -# and does not have live searching capabilities. - -SERVER_BASED_SEARCH = NO - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = YES - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. -# Note that when enabling USE_PDFLATEX this option is only used for -# generating bitmaps for formulas in the HTML output, but not in the -# Makefile that is written to the output directory. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4 - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -# If LATEX_SOURCE_CODE is set to YES then doxygen will include -# source code with syntax highlighting in the LaTeX output. -# Note that which sources are shown also depends on other settings -# such as SOURCE_BROWSER. - -LATEX_SOURCE_CODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. -# This is useful -# if you want to understand what is going on. -# On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition that overrules the definition found in the source code. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all references to function-like macros -# that are alone on a line, have an all uppercase name, and do not end with a -# semicolon, because these will confuse the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option also works with HAVE_DOT disabled, but it is recommended to -# install and use dot, since it yields more powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see -# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = YES - -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is -# allowed to run in parallel. When set to 0 (the default) doxygen will -# base this on the number of processors available in the system. You can set it -# explicitly to a value larger than 0 to get control over the balance -# between CPU load and processing speed. - -DOT_NUM_THREADS = 0 - -# By default doxygen will write a font called Helvetica to the output -# directory and reference it in all dot files that doxygen generates. -# When you want a differently looking font you can specify the font name -# using DOT_FONTNAME. You need to make sure dot is able to find the font, -# which can be done by putting it in a standard location or by setting the -# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory -# containing the font. - -DOT_FONTNAME = Helvetica - -# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. -# The default size is 10pt. - -DOT_FONTSIZE = 10 - -# By default doxygen will tell dot to use the output directory to look for the -# FreeSans.ttf font (which doxygen will put there itself). If you specify a -# different font using DOT_FONTNAME you can set the path where dot -# can find it using this tag. - -DOT_FONTPATH = - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = YES - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT options are set to YES then -# doxygen will generate a call dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable call graphs -# for selected functions only using the \callgraph command. - -CALL_GRAPH = YES - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then -# doxygen will generate a caller dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable caller -# graphs for selected functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will generate a graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, svg, gif or svg. -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MSCFILE_DIRS tag can be used to specify one or more directories that -# contain msc files that are included in the documentation (see the -# \mscfile command). - -MSCFILE_DIRS = - -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the -# number of direct children of the root node in a graph is already larger than -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not -# seem to support this out of the box. Warning: Depending on the platform used, -# enabling this option may lead to badly anti-aliased labels on the edges of -# a graph (i.e. they become hard to read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = YES - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES diff --git a/docs/doxygen/Doxyfile.in b/docs/doxygen/Doxyfile.in index be546e767..3ec3ef60d 100644 --- a/docs/doxygen/Doxyfile.in +++ b/docs/doxygen/Doxyfile.in @@ -1,107 +1,133 @@ -# Doxyfile 1.7.3 +# Doxyfile 1.9.3 +# +# SPDX-FileCopyrightText: 2011-2021 Carles Fernandez-Prades +# SPDX-License-Identifier: GPL-3.0-or-later +# # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # -# All text after a hash (#) is considered a comment and will be ignored. +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. # The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" "). +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all +# This tag specifies the encoding used for all characters in the configuration +# file 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. +# The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. -PROJECT_NAME = "GNSS-SDR" +PROJECT_NAME = GNSS-SDR -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. PROJECT_NUMBER = @VERSION@ -# Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short. +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = "An Open Source GNSS Software Defined Receiver" -# With the PROJECT_LOGO tag one can specify an logo or icon that is -# included in the documentation. The maximum height of the logo should not -# exceed 55 pixels and the maximum width should not exceed 200 pixels. -# Doxygen will copy the logo to the output directory. +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. PROJECT_LOGO = @top_srcdir@/docs/doxygen/images/gnss-sdr_logo_round.png -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. -OUTPUT_DIRECTORY = @top_srcdir@/docs +OUTPUT_DIRECTORY = @top_builddir@/docs -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. CREATE_SUBDIRS = NO +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = YES + # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. OUTPUT_LANGUAGE = English -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. BRIEF_MEMBER_DESC = YES -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. +# The default value is: YES. REPEAT_BRIEF = YES -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief +# doxygen will generate a detailed section even if there is only a brief # description. +# The default value is: NO. ALWAYS_DETAILED_SEC = YES @@ -109,544 +135,805 @@ ALWAYS_DETAILED_SEC = YES # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. +# The default value is: NO. INLINE_INHERITED_MEMB = NO -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. -FULL_PATH_NAMES = YES +FULL_PATH_NAMES = NO -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = @PROJECT_SOURCE_DIR@ -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. STRIP_FROM_INC_PATH = -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful if your file system -# doesn't support long names like on DOS, Mac, or CD-ROM. +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. SHORT_NAMES = NO -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. JAVADOC_AUTOBRIEF = NO -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. QT_AUTOBRIEF = NO -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. MULTILINE_CPP_IS_BRIEF = YES -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. INHERIT_DOCS = YES -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. SEPARATE_MEMBER_PAGES = NO -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 8 -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:^^" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) ALIASES = -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = NO -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + # Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this -# tag. The format is ext=language, where ext is a file extension, and language -# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, -# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make -# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C -# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions -# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. EXTENSION_MAPPING = +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also makes the inheritance and collaboration +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. +# The default value is: NO. BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. +# The default value is: NO. CPP_CLI_SUPPORT = NO -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. SIP_SUPPORT = NO -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first +# tag is set to YES then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. +# The default value is: NO. DISTRIBUTE_GROUP_DOC = NO -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. SUBGROUPING = YES -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. TYPEDEF_HIDES_STRUCT = NO -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penalty. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will roughly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. -SYMBOL_CACHE_SIZE = 0 +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. EXTRACT_ALL = NO -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. EXTRACT_PRIVATE = NO -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. EXTRACT_STATIC = NO -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. EXTRACT_LOCAL_CLASSES = YES -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespaces are hidden. +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. EXTRACT_ANON_NSPACES = NO -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. HIDE_UNDOC_MEMBERS = NO -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. HIDE_UNDOC_CLASSES = NO -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the # documentation. +# The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. HIDE_IN_BODY_DOCS = NO -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. INTERNAL_DOCS = NO -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# The default value is: system dependent. CASE_SENSE_NAMES = YES -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. HIDE_SCOPE_NAMES = NO -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. SHOW_INCLUDE_FILES = YES -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen -# will list include files with double quotes in the documentation -# rather than with sharp brackets. +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. FORCE_LOCAL_INCLUDES = NO -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. INLINE_INFO = YES -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. SORT_MEMBER_DOCS = YES -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. SORT_BRIEF_DOCS = NO -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen -# will sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the default) -# the constructors will appear in the respective orders defined by -# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. -# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO -# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. SORT_GROUP_NAMES = NO -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. SORT_BY_SCOPE_NAME = NO -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper type resolution of all parameters of a function it will reject a -# match between the prototype and the implementation of a member function even if there is only one candidate or it is obvious which candidate to choose by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen -# will still accept a match between prototype and implementation in such cases. +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. STRICT_PROTO_MATCHING = NO -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. GENERATE_TODOLIST = YES -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. GENERATE_TESTLIST = YES -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. GENERATE_BUGLIST = YES -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. GENERATE_DEPRECATEDLIST= YES -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. ENABLED_SECTIONS = -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or macro consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and macros in the -# documentation can be controlled using \showinitializer or \hideinitiHTalizer -# command in the documentation regardless of this setting. +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 30 -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the # list will mention the files that were used to generate the documentation. +# The default value is: YES. SHOW_USED_FILES = YES -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -#SHOW_DIRECTORIES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. SHOW_FILES = YES -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. -# This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. The create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. -# You can optionally specify a file name after the option, if omitted -# DoxygenLayout.xml will be used as the name of the layout file. +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. 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 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. + +CITE_BIB_FILES = + #--------------------------------------------------------------------------- -# configuration options related to warning and progress messages +# Configuration options related to warning and progress messages #--------------------------------------------------------------------------- -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. WARNINGS = YES -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. WARN_IF_UNDOCUMENTED = YES -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. +# The default value is: YES. WARN_IF_DOC_ERROR = YES -# The WARN_NO_PARAMDOC option can be enabled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. +# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete +# function parameter documentation. If set to NO, doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC +# The default value is: NO. WARN_NO_PARAMDOC = NO -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). WARN_LOGFILE = #--------------------------------------------------------------------------- -# configuration options related to the input files +# Configuration options related to the input files #--------------------------------------------------------------------------- -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. -INPUT = @top_srcdir@/src @top_srcdir@/docs/doxygen/other +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 -# the list of possible encodings. +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh -# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py -# *.f90 *.f *.for *.vhd *.vhdl +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, +# *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C +# comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, +# *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = *.h \ *.dox -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. RECURSIVE = YES -# The EXCLUDE tag can be used to specify files and/or directories that should +# The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. EXCLUDE = @top_srcdir@/docs/html \ @top_srcdir@/docs/latex \ @top_srcdir@/cmake \ @top_srcdir@/data \ @top_srcdir@/src/core/libs/supl \ + @top_srcdir@/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. +# The default value is: NO. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = @@ -654,717 +941,1217 @@ EXCLUDE_PATTERNS = # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test +# ANamespace::AClass, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. EXAMPLE_RECURSIVE = NO -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). -IMAGE_PATH = @top_srcdir@/docs/doxygen/images/ +IMAGE_PATH = @top_srcdir@/docs/doxygen/images/ # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. -# If FILTER_PATTERNS is specified, this tag will be -# ignored. +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. -# Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. -# The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty or if -# non of the patterns match the file name, INPUT_FILTER is applied. +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) -# and it is also possible to disable source filtering for a specific pattern -# using *.ext= (so without naming a filter). This option only has effect when -# FILTER_SOURCE_FILES is enabled. +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + #--------------------------------------------------------------------------- -# configuration options related to source browsing +# Configuration options related to source browsing #--------------------------------------------------------------------------- -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. SOURCE_BROWSER = YES -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. INLINE_SOURCES = NO -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. STRIP_CODE_COMMENTS = NO -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. REFERENCED_BY_RELATION = YES -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. REFERENCES_RELATION = YES -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. -# Otherwise they will link to the documentation. +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. REFERENCES_LINK_SOURCE = 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 -# will need version 4.8.6 or higher. +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +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 https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index +# Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. ALPHABETICAL_INDEX = YES -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- -# configuration options related to the HTML output +# Configuration options related to the HTML output #--------------------------------------------------------------------------- -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. GENERATE_HTML = YES -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = html -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a # standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. 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. -# 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. +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a color-wheel, 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. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of -# the colors in the HTML output. For a value of 0 the output will use -# grayscales only. A value of 255 will produce the most vivid colors. +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use gray-scales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to -# the luminance component of the colors in the HTML output. Values below -# 100 gradually make the output lighter, whereas values above 100 make -# the output darker. The value divided by 100 is the actual gamma applied, -# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, -# and 100 does not change the gamma. +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. -HTML_TIMESTAMP = YES +HTML_TIMESTAMP = NO -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. -# HTML_ALIGN_MEMBERS = YES +HTML_DYNAMIC_MENUS = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = NO -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# 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. +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.gnss-sdr.Project -# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.gnss-sdr.CTTC -# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = CTTC -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline the HTML help workshop was already many years +# in maintenance mode). You can download the HTML help workshop from the web +# archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be # written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated -# that can be used as input for Qt's qhelpgenerator to generate a -# Qt Compressed Help (.qch) of the generated HTML documentation. +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = NO -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = org.doxygen.Project -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = doc -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to -# add. For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see -# -# Qt Help Project / Custom Filters. +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's -# filter section matches. -# -# Qt Help Project / Filter Attributes. +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help -# plugin. To install this plugin and make it available under the help contents -# menu in Eclipse, the contents of the directory containing the HTML and XML -# files needs to be copied into the plugins directory of eclipse. The name of -# the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before -# the help appears. +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO -# A unique identifier for the eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have -# this name. +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.gnss-sdr.Project -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO -# This tag can be used to set the number of enum values (range [0,1..20]) -# that doxygen will group on one line in the generated HTML documentation. -# Note that a value of 0 will completely suppress the enum values from appearing in the overview section. - -ENUM_VALUES_PER_LINE = 4 - # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = NO -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. -# USE_INLINE_TREES = NO +FULL_SIDEBAR = NO -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 250 -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open -# links to external symbols imported via tag files in a separate window. +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. +# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are -# not supported properly for IE 6.0, but are supported on all modern browsers. -# Note that when changing this option you need to delete any form_*.png files -# in the HTML output before the changes have effect. +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. 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 -# 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 -# configure the path to it using the MATHJAX_RELPATH option. +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered 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 may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = @GNSSSDR_USE_MATHJAX@ -# When MathJax is enabled you need to specify the location relative to the -# HTML output directory using the MATHJAX_RELPATH option. The destination -# directory should contain the MathJax.js script. For instance, if the mathjax -# directory is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the mathjax.org site, so you can quickly see the result without installing -# MathJax, but it is strongly recommended to install a local copy of MathJax -# before deployment. +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. -MATHJAX_RELPATH = http://www.mathjax.org/mathjax +MATHJAX_VERSION = MathJax_2 -# When the SEARCHENGINE tag is enabled doxygen will generate a search box -# for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using -# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets -# (GENERATE_DOCSET) there is already a search function so this one should -# typically be disabled. For large projects the javascript based search engine -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = SVG + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = @MATHJAX2_PATH@ + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see +# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = TeX/AMSmath \ + TeX/AMSsymbols + +# 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/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /