mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-15 20:50:33 +00:00
Merge branch 'next' of https://github.com/gnss-sdr/gnss-sdr into next
This commit is contained in:
commit
706ff23a7b
613
CMakeLists.txt
613
CMakeLists.txt
File diff suppressed because it is too large
Load Diff
@ -542,7 +542,7 @@ In a terminal, type:
|
|||||||
~~~~~~
|
~~~~~~
|
||||||
$ sudo port selfupdate
|
$ sudo port selfupdate
|
||||||
$ sudo port upgrade outdated
|
$ sudo port upgrade outdated
|
||||||
$ sudo port install doxygen +latex
|
$ sudo port install doxygen +docs
|
||||||
$ sudo port install gnuradio
|
$ sudo port install gnuradio
|
||||||
$ sudo port install armadillo
|
$ sudo port install armadillo
|
||||||
$ sudo port install gnutls
|
$ sudo port install gnutls
|
||||||
|
@ -43,6 +43,9 @@ macro(LIST_CONTAINS var value)
|
|||||||
endforeach()
|
endforeach()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
# Trick for feature_summary
|
||||||
|
set(GNURADIO_FOUND TRUE)
|
||||||
|
|
||||||
function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE)
|
function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE)
|
||||||
list_contains(REQUIRED_MODULE ${EXTVAR} ${GR_REQUIRED_COMPONENTS})
|
list_contains(REQUIRED_MODULE ${EXTVAR} ${GR_REQUIRED_COMPONENTS})
|
||||||
if(NOT REQUIRED_MODULE)
|
if(NOT REQUIRED_MODULE)
|
||||||
@ -140,6 +143,7 @@ function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE)
|
|||||||
# generate an error if the module is missing
|
# generate an error if the module is missing
|
||||||
if(NOT GNURADIO_${EXTVAR}_FOUND)
|
if(NOT GNURADIO_${EXTVAR}_FOUND)
|
||||||
message(STATUS "Required GNU Radio Component: ${EXTVAR} missing!")
|
message(STATUS "Required GNU Radio Component: ${EXTVAR} missing!")
|
||||||
|
set(GNURADIO_FOUND FALSE) # Trick for feature_summary
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
mark_as_advanced(GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS)
|
mark_as_advanced(GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS)
|
||||||
@ -200,3 +204,6 @@ if(NOT PC_GNURADIO_RUNTIME_VERSION)
|
|||||||
set(PC_GNURADIO_RUNTIME_VERSION "3.8.0+")
|
set(PC_GNURADIO_RUNTIME_VERSION "3.8.0+")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Trick for feature_summary
|
||||||
|
set(GNURADIO_FOUND TRUE)
|
||||||
|
51
cmake/Modules/FindGOOGLETEST.cmake
Normal file
51
cmake/Modules/FindGOOGLETEST.cmake
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
# Copyright (C) 2011-2019 (see AUTHORS file for a list of contributors)
|
||||||
|
#
|
||||||
|
# This file is part of GNSS-SDR.
|
||||||
|
#
|
||||||
|
# GNSS-SDR is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# GNSS-SDR is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
# - Try to find 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
|
||||||
|
|
||||||
|
|
||||||
|
find_path(LIBGTEST_DEV_DIR
|
||||||
|
NAMES src/gtest-all.cc
|
||||||
|
PATHS
|
||||||
|
${GTEST_DIR}
|
||||||
|
${GTEST_DIR}/googletest
|
||||||
|
/usr/src/googletest/googletest
|
||||||
|
/usr/src/gtest
|
||||||
|
/usr/include/gtest
|
||||||
|
/opt/local/src/gtest-1.7.0
|
||||||
|
)
|
||||||
|
|
||||||
|
find_path(GTEST_INCLUDE_DIRS
|
||||||
|
NAMES gtest/gtest.h
|
||||||
|
PATHS
|
||||||
|
${GTEST_DIR}/googletest/include
|
||||||
|
/usr/include
|
||||||
|
/opt/local/src/gtest-1.7.0/include
|
||||||
|
)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(GOOGLETEST DEFAULT_MSG LIBGTEST_DEV_DIR GTEST_INCLUDE_DIRS)
|
||||||
|
mark_as_advanced(LIBGTEST_DEV_DIR GTEST_INCLUDE_DIRS)
|
@ -82,7 +82,6 @@ if(CMAKE_VERSION VERSION_LESS 3.12)
|
|||||||
gnsssdr_python_check_module("mako >= ${GNSSSDR_MAKO_MIN_VERSION}" mako "mako.__version__ >= '${GNSSSDR_MAKO_MIN_VERSION}'" MAKO_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)
|
gnsssdr_python_check_module("six - python 2 and 3 compatibility library" six "True" SIX_FOUND)
|
||||||
endif()
|
endif()
|
||||||
find_package(PythonLibs ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} EXACT)
|
|
||||||
else()
|
else()
|
||||||
find_package(Python3 COMPONENTS Interpreter)
|
find_package(Python3 COMPONENTS Interpreter)
|
||||||
if(Python3_FOUND)
|
if(Python3_FOUND)
|
||||||
|
@ -8,19 +8,22 @@
|
|||||||
### Improvements in Efficiency
|
### Improvements in Efficiency
|
||||||
|
|
||||||
- Improved preamble detection implementation in the decoding of navigation messages (acceleration by x1.6 on average).
|
- Improved preamble detection implementation in the decoding of navigation messages (acceleration by x1.6 on average).
|
||||||
- Applied clang-tidy checks and fixes related to performance.
|
- Applied clang-tidy checks and fixes related to performance: performance-faster-string-find, performance-inefficient-algorithm, performance-move-const-arg, performance-type-promotion-in-math-fn, performance-unnecessary-copy-initialization, performance-unnecessary-value-param, readability-string-compare.
|
||||||
|
|
||||||
|
|
||||||
### Improvements in Interoperability:
|
### Improvements in Interoperability:
|
||||||
|
|
||||||
- Added the BeiDou B1I receiver chain.
|
- Added the BeiDou B1I receiver chain.
|
||||||
- Fix bug in GLONASS dual frequency receiver.
|
- 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.
|
||||||
|
|
||||||
|
|
||||||
### Improvements in Maintainability:
|
### Improvements in Maintainability:
|
||||||
|
|
||||||
- Usage of clang-tidy integrated into CMake scripts. New option -DENABLE_CLANG_TIDY=ON executes clang-tidy along with compilation. Requires clang compiler.
|
- 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.
|
- 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.
|
||||||
|
|
||||||
|
|
||||||
### Improvements in Portability:
|
### Improvements in Portability:
|
||||||
@ -31,13 +34,14 @@
|
|||||||
|
|
||||||
### Improvements in Reliability
|
### Improvements in Reliability
|
||||||
|
|
||||||
- Applied clang-tidy checks and fixes related to High Integrity C++.
|
- 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.
|
||||||
|
|
||||||
|
|
||||||
### Improvements in Usability
|
### Improvements in Usability
|
||||||
|
|
||||||
- The receiver now admits FPGA off-loading, allowing for real time operation at high sampling rates and higher number of signals and channels.
|
- The receiver now admits FPGA off-loading, allowing for real time operation at high sampling rates and higher number of signals and channels.
|
||||||
- Fixed program termination (avoiding hangs and segfaults in some platforms/configurations).
|
- Fixed program termination (avoiding hangs and segfaults in some platforms/configurations).
|
||||||
|
- CMake now generates a summary of 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 failure.
|
- Improved information provided to the user in case of failure.
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,15 +41,23 @@ if(CMAKE_VERSION VERSION_LESS 3.12)
|
|||||||
find_package(PythonInterp ${VOLK_PYTHON3_MIN_VERSION} REQUIRED)
|
find_package(PythonInterp ${VOLK_PYTHON3_MIN_VERSION} REQUIRED)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
find_package(PythonLibs ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} EXACT)
|
|
||||||
else()
|
else()
|
||||||
if(PYTHON_EXECUTABLE)
|
if(PYTHON_EXECUTABLE)
|
||||||
message(STATUS "User set python executable ${PYTHON_EXECUTABLE}")
|
message(STATUS "User set python executable ${PYTHON_EXECUTABLE}")
|
||||||
find_package(PythonInterp ${VOLK_PYTHON_MIN_VERSION} REQUIRED)
|
find_package(PythonInterp ${VOLK_PYTHON_MIN_VERSION} REQUIRED)
|
||||||
else()
|
else()
|
||||||
find_package(Python COMPONENTS Interpreter)
|
find_package(Python3 COMPONENTS Interpreter)
|
||||||
set(PYTHON_VERSION_MAJOR ${Python_VERSION_MAJOR})
|
if(Python3_FOUND)
|
||||||
set(PYTHON_EXECUTABLE ${Python_EXECUTABLE})
|
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
|
||||||
|
set(PYTHON_VERSION_MAJOR ${Python3_VERSION_MAJOR})
|
||||||
|
endif()
|
||||||
|
if(NOT Python3_FOUND OR NOT MAKO_FOUND OR NOT SIX_FOUND)
|
||||||
|
find_package(Python2 COMPONENTS Interpreter)
|
||||||
|
if(Python2_FOUND)
|
||||||
|
set(PYTHON_EXECUTABLE ${Python2_EXECUTABLE})
|
||||||
|
set(PYTHON_VERSION_MAJOR ${Python2_VERSION_MAJOR})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -313,6 +313,9 @@ if(NOT CROSSCOMPILE_MULTILIB AND CPU_IS_x86)
|
|||||||
#MSVC 64 bit does not have MMX, overrule it
|
#MSVC 64 bit does not have MMX, overrule it
|
||||||
if(${SIZEOF_CPU} EQUAL 64 AND MSVC)
|
if(${SIZEOF_CPU} EQUAL 64 AND MSVC)
|
||||||
overrule_arch(mmx "No MMX for Win64")
|
overrule_arch(mmx "No MMX for Win64")
|
||||||
|
if(MSVC_VERSION GREATER 1700)
|
||||||
|
OVERRULE_ARCH(sse "No SSE for Win64 Visual Studio 2013")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
@ -582,7 +585,7 @@ target_include_directories(volk_gnsssdr_obj
|
|||||||
|
|
||||||
#Add dynamic library
|
#Add dynamic library
|
||||||
add_library(volk_gnsssdr SHARED $<TARGET_OBJECTS:volk_gnsssdr_obj>)
|
add_library(volk_gnsssdr SHARED $<TARGET_OBJECTS:volk_gnsssdr_obj>)
|
||||||
target_link_libraries(volk_gnsssdr ${volk_gnsssdr_libraries} m)
|
target_link_libraries(volk_gnsssdr ${volk_gnsssdr_libraries})
|
||||||
target_include_directories(volk_gnsssdr
|
target_include_directories(volk_gnsssdr
|
||||||
PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
|
PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
|
||||||
PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
||||||
@ -593,7 +596,10 @@ target_include_directories(volk_gnsssdr
|
|||||||
)
|
)
|
||||||
|
|
||||||
#Configure target properties
|
#Configure target properties
|
||||||
set_target_properties(volk_gnsssdr_obj PROPERTIES COMPILE_FLAGS "-fPIC")
|
if(NOT MSVC)
|
||||||
|
set_target_properties(volk_gnsssdr_obj PROPERTIES COMPILE_FLAGS "-fPIC")
|
||||||
|
target_link_libraries(volk_gnsssdr m)
|
||||||
|
endif()
|
||||||
set_target_properties(volk_gnsssdr PROPERTIES SOVERSION ${LIBVER})
|
set_target_properties(volk_gnsssdr PROPERTIES SOVERSION ${LIBVER})
|
||||||
set_target_properties(volk_gnsssdr PROPERTIES DEFINE_SYMBOL "volk_gnsssdr_EXPORTS")
|
set_target_properties(volk_gnsssdr PROPERTIES DEFINE_SYMBOL "volk_gnsssdr_EXPORTS")
|
||||||
|
|
||||||
@ -608,7 +614,10 @@ install(TARGETS volk_gnsssdr
|
|||||||
#Configure static library
|
#Configure static library
|
||||||
if(ENABLE_STATIC_LIBS)
|
if(ENABLE_STATIC_LIBS)
|
||||||
add_library(volk_gnsssdr_static STATIC $<TARGET_OBJECTS:volk_gnsssdr_obj>)
|
add_library(volk_gnsssdr_static STATIC $<TARGET_OBJECTS:volk_gnsssdr_obj>)
|
||||||
target_link_libraries(volk_gnsssdr_static ${volk_gnsssdr_libraries} pthread m)
|
target_link_libraries(volk_gnsssdr_static ${volk_gnsssdr_libraries} pthread)
|
||||||
|
if(NOT MSVC)
|
||||||
|
target_link_libraries(volk_gnsssdr_static m)
|
||||||
|
endif()
|
||||||
target_include_directories(volk_gnsssdr_static
|
target_include_directories(volk_gnsssdr_static
|
||||||
PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
|
PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/include>
|
||||||
PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
||||||
|
@ -64,7 +64,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Returns "UDP_Signal_Source"
|
* \brief Returns "Custom_UDP_Signal_Source"
|
||||||
*/
|
*/
|
||||||
inline std::string implementation() override
|
inline std::string implementation() override
|
||||||
{
|
{
|
||||||
|
@ -59,11 +59,11 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Returns "Gn3sSignalSource".
|
* \brief Returns "Gn3s_Signal_Source".
|
||||||
*/
|
*/
|
||||||
inline std::string implementation() override
|
inline std::string implementation() override
|
||||||
{
|
{
|
||||||
return "Gn3sSignalSource";
|
return "Gn3s_Signal_Source";
|
||||||
}
|
}
|
||||||
|
|
||||||
inline size_t item_size() override
|
inline size_t item_size() override
|
||||||
|
@ -48,6 +48,7 @@ gnss_sdr_fpga_sample_counter_sptr gnss_sdr_make_fpga_sample_counter(double _fs,
|
|||||||
class gnss_sdr_fpga_sample_counter : public gr::block
|
class gnss_sdr_fpga_sample_counter : public gr::block
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
friend gnss_sdr_fpga_sample_counter_sptr gnss_sdr_make_fpga_sample_counter(double _fs, int32_t _interval_ms);
|
||||||
gnss_sdr_fpga_sample_counter(double _fs, int32_t _interval_ms);
|
gnss_sdr_fpga_sample_counter(double _fs, int32_t _interval_ms);
|
||||||
uint32_t test_register(uint32_t writeval);
|
uint32_t test_register(uint32_t writeval);
|
||||||
void configure_samples_per_output(uint32_t interval);
|
void configure_samples_per_output(uint32_t interval);
|
||||||
@ -76,7 +77,6 @@ private:
|
|||||||
bool is_open;
|
bool is_open;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
friend gnss_sdr_fpga_sample_counter_sptr gnss_sdr_make_fpga_sample_counter(double _fs, int32_t _interval_ms);
|
|
||||||
~gnss_sdr_fpga_sample_counter();
|
~gnss_sdr_fpga_sample_counter();
|
||||||
int general_work(int noutput_items,
|
int general_work(int noutput_items,
|
||||||
gr_vector_int &ninput_items,
|
gr_vector_int &ninput_items,
|
||||||
|
@ -65,6 +65,9 @@ gnss_sdr_sample_counter::gnss_sdr_sample_counter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gnss_sdr_sample_counter::~gnss_sdr_sample_counter() = default;
|
||||||
|
|
||||||
|
|
||||||
gnss_sdr_sample_counter_sptr gnss_sdr_make_sample_counter(double _fs, int32_t _interval_ms, size_t _size)
|
gnss_sdr_sample_counter_sptr gnss_sdr_make_sample_counter(double _fs, int32_t _interval_ms, size_t _size)
|
||||||
{
|
{
|
||||||
gnss_sdr_sample_counter_sptr sample_counter_(new gnss_sdr_sample_counter(_fs, _interval_ms, _size));
|
gnss_sdr_sample_counter_sptr sample_counter_(new gnss_sdr_sample_counter(_fs, _interval_ms, _size));
|
||||||
|
@ -51,6 +51,7 @@ gnss_sdr_sample_counter_sptr gnss_sdr_make_sample_counter(
|
|||||||
class gnss_sdr_sample_counter : public gr::sync_decimator
|
class gnss_sdr_sample_counter : public gr::sync_decimator
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
friend gnss_sdr_sample_counter_sptr gnss_sdr_make_sample_counter(double _fs, int32_t _interval_ms, size_t _size);
|
||||||
gnss_sdr_sample_counter(double _fs, int32_t _interval_ms, size_t _size);
|
gnss_sdr_sample_counter(double _fs, int32_t _interval_ms, size_t _size);
|
||||||
uint32_t samples_per_output;
|
uint32_t samples_per_output;
|
||||||
double fs;
|
double fs;
|
||||||
@ -68,7 +69,7 @@ private:
|
|||||||
bool flag_enable_send_msg;
|
bool flag_enable_send_msg;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
friend gnss_sdr_sample_counter_sptr gnss_sdr_make_sample_counter(double _fs, int32_t _interval_ms, size_t _size);
|
~gnss_sdr_sample_counter();
|
||||||
int work(int noutput_items,
|
int work(int noutput_items,
|
||||||
gr_vector_const_void_star &input_items,
|
gr_vector_const_void_star &input_items,
|
||||||
gr_vector_void_star &output_items);
|
gr_vector_void_star &output_items);
|
||||||
|
@ -52,6 +52,9 @@ gnss_sdr_time_counter::gnss_sdr_time_counter() : gr::block("time_counter",
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gnss_sdr_time_counter::~gnss_sdr_time_counter() = default;
|
||||||
|
|
||||||
|
|
||||||
gnss_sdr_time_counter_sptr gnss_sdr_make_time_counter()
|
gnss_sdr_time_counter_sptr gnss_sdr_make_time_counter()
|
||||||
{
|
{
|
||||||
gnss_sdr_time_counter_sptr counter_(new gnss_sdr_time_counter());
|
gnss_sdr_time_counter_sptr counter_(new gnss_sdr_time_counter());
|
||||||
|
@ -59,6 +59,7 @@ private:
|
|||||||
friend gnss_sdr_time_counter_sptr gnss_sdr_make_time_counter();
|
friend gnss_sdr_time_counter_sptr gnss_sdr_make_time_counter();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
~gnss_sdr_time_counter();
|
||||||
int general_work(int noutput_items __attribute__((unused)), gr_vector_int &ninput_items __attribute__((unused)),
|
int general_work(int noutput_items __attribute__((unused)), gr_vector_int &ninput_items __attribute__((unused)),
|
||||||
gr_vector_const_void_star &input_items __attribute__((unused)), gr_vector_void_star &output_items);
|
gr_vector_const_void_star &input_items __attribute__((unused)), gr_vector_void_star &output_items);
|
||||||
};
|
};
|
||||||
|
@ -35,6 +35,8 @@
|
|||||||
#define GNSS_SDR_GNSS_SYNCHRO_MONITOR_H
|
#define GNSS_SDR_GNSS_SYNCHRO_MONITOR_H
|
||||||
|
|
||||||
#include "gnss_synchro_udp_sink.h"
|
#include "gnss_synchro_udp_sink.h"
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#include <gnuradio/runtime_types.h> // for gr_vector_void_star
|
||||||
#include <gnuradio/sync_block.h>
|
#include <gnuradio/sync_block.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -51,7 +53,9 @@ gnss_synchro_monitor_sptr gnss_synchro_make_monitor(unsigned int n_channels,
|
|||||||
const std::vector<std::string>& udp_addresses);
|
const std::vector<std::string>& udp_addresses);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This class implements a block that computes the PVT solution with Galileo E1 signals
|
* \brief This class implements a monitoring block which allows sending
|
||||||
|
* a data stream with the receiver internal parameters (Gnss_Synchro objects)
|
||||||
|
* to local or remote clients over UDP.
|
||||||
*/
|
*/
|
||||||
class gnss_synchro_monitor : public gr::sync_block
|
class gnss_synchro_monitor : public gr::sync_block
|
||||||
{
|
{
|
||||||
@ -61,21 +65,17 @@ private:
|
|||||||
int udp_port,
|
int udp_port,
|
||||||
const std::vector<std::string>& udp_addresses);
|
const std::vector<std::string>& udp_addresses);
|
||||||
|
|
||||||
unsigned int d_nchannels;
|
|
||||||
|
|
||||||
int d_decimation_factor;
|
|
||||||
|
|
||||||
std::unique_ptr<Gnss_Synchro_Udp_Sink> udp_sink_ptr;
|
|
||||||
|
|
||||||
int count;
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
|
||||||
gnss_synchro_monitor(unsigned int n_channels,
|
gnss_synchro_monitor(unsigned int n_channels,
|
||||||
int decimation_factor,
|
int decimation_factor,
|
||||||
int udp_port,
|
int udp_port,
|
||||||
const std::vector<std::string>& udp_addresses);
|
const std::vector<std::string>& udp_addresses);
|
||||||
|
|
||||||
|
unsigned int d_nchannels;
|
||||||
|
int d_decimation_factor;
|
||||||
|
std::unique_ptr<Gnss_Synchro_Udp_Sink> udp_sink_ptr;
|
||||||
|
int count;
|
||||||
|
|
||||||
|
public:
|
||||||
~gnss_synchro_monitor(); //!< Default destructor
|
~gnss_synchro_monitor(); //!< Default destructor
|
||||||
|
|
||||||
int work(int noutput_items, gr_vector_const_void_star& input_items,
|
int work(int noutput_items, gr_vector_const_void_star& input_items,
|
||||||
|
@ -44,6 +44,7 @@ Gnss_Synchro_Udp_Sink::Gnss_Synchro_Udp_Sink(std::vector<std::string> addresses,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Gnss_Synchro_Udp_Sink::write_gnss_synchro(const std::vector<Gnss_Synchro>& stocks)
|
bool Gnss_Synchro_Udp_Sink::write_gnss_synchro(const std::vector<Gnss_Synchro>& stocks)
|
||||||
{
|
{
|
||||||
std::ostringstream archive_stream;
|
std::ostringstream archive_stream;
|
||||||
|
@ -35,10 +35,15 @@
|
|||||||
#include "gnss_synchro.h"
|
#include "gnss_synchro.h"
|
||||||
#include <boost/asio.hpp>
|
#include <boost/asio.hpp>
|
||||||
#include <boost/system/error_code.hpp>
|
#include <boost/system/error_code.hpp>
|
||||||
|
#include <cstdint>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief This class sends serialized Gnss_Synchro objects
|
||||||
|
* over UDP to one or multiple endpoints.
|
||||||
|
*/
|
||||||
class Gnss_Synchro_Udp_Sink
|
class Gnss_Synchro_Udp_Sink
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -1664,10 +1664,10 @@ void GNSSFlowgraph::init()
|
|||||||
|
|
||||||
if (enable_monitor_)
|
if (enable_monitor_)
|
||||||
{
|
{
|
||||||
GnssSynchroMonitor_ = gr::basic_block_sptr(new gnss_synchro_monitor(channels_count_,
|
GnssSynchroMonitor_ = gnss_synchro_make_monitor(channels_count_,
|
||||||
configuration_->property("Monitor.decimation_factor", 1),
|
configuration_->property("Monitor.decimation_factor", 1),
|
||||||
configuration_->property("Monitor.udp_port", 1234),
|
configuration_->property("Monitor.udp_port", 1234),
|
||||||
udp_addr_vec));
|
udp_addr_vec);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ const double GLONASS_F_M_A = 0.35e9; //!< Gravitationa
|
|||||||
const double GLONASS_SEMI_MAJOR_AXIS = 6378136; //!< Semi-major axis of Earth [m]
|
const double GLONASS_SEMI_MAJOR_AXIS = 6378136; //!< Semi-major axis of Earth [m]
|
||||||
const double GLONASS_FLATTENING = 1 / 29825784; //!< Flattening parameter
|
const double GLONASS_FLATTENING = 1 / 29825784; //!< Flattening parameter
|
||||||
const double GLONASS_GRAVITY = 97803284; //!< Equatorial acceleration of gravity [mGal]
|
const double GLONASS_GRAVITY = 97803284; //!< Equatorial acceleration of gravity [mGal]
|
||||||
const double GLONASS_GRAVITY_CORRECTION = 0.87; //!< Correction to acceleration of gravity at sea-level due to Atmosphere[мGal]
|
const double GLONASS_GRAVITY_CORRECTION = 0.87; //!< Correction to acceleration of gravity at sea-level due to Atmosphere[uGal]
|
||||||
const double GLONASS_J2 = 1082625.75e-9; //!< Second zonal harmonic of the geopotential
|
const double GLONASS_J2 = 1082625.75e-9; //!< Second zonal harmonic of the geopotential
|
||||||
const double GLONASS_J4 = -2370.89e-9; //!< Fourth zonal harmonic of the geopotential
|
const double GLONASS_J4 = -2370.89e-9; //!< Fourth zonal harmonic of the geopotential
|
||||||
const double GLONASS_J6 = 6.08e-9; //!< Sixth zonal harmonic of the geopotential
|
const double GLONASS_J6 = 6.08e-9; //!< Sixth zonal harmonic of the geopotential
|
||||||
@ -74,7 +74,7 @@ const double GLONASS_MOON_SEMI_MAJOR_AXIS = 3.84385243e5; //!< Semi-major ax
|
|||||||
const double GLONASS_MOON_ECCENTRICITY = 0.054900489; //!< Eccentricity of lunar orbit
|
const double GLONASS_MOON_ECCENTRICITY = 0.054900489; //!< Eccentricity of lunar orbit
|
||||||
const double GLONASS_MOON_INCLINATION = 0.000089803977407e3; //!< Inclination of lunar orbit to ecliptic plane (5 deg 08 min 43.4 sec) [rad]
|
const double GLONASS_MOON_INCLINATION = 0.000089803977407e3; //!< Inclination of lunar orbit to ecliptic plane (5 deg 08 min 43.4 sec) [rad]
|
||||||
|
|
||||||
const double GLONASS_SUN_OMEGA = 0.004908229466869e3; //!< TODO What is this operation in the seconds with T?(281 deg 13 min 15.0 + 6189.03*Т sec) [rad]
|
const double GLONASS_SUN_OMEGA = 0.004908229466869e3; //!< TODO What is this operation in the seconds with T?(281 deg 13 min 15.0 + 6189.03 x T sec) [rad]
|
||||||
const double GLONASS_SUN_Q0 = 0.006256583774423e3; //!< (358 deg 28 min 33.04 sec) [rad]
|
const double GLONASS_SUN_Q0 = 0.006256583774423e3; //!< (358 deg 28 min 33.04 sec) [rad]
|
||||||
const double GLONASS_SUN_Q1 = 0e3; //!< TODO Why is the value greater than 60?(129596579.10 sec) [rad]
|
const double GLONASS_SUN_Q1 = 0e3; //!< TODO Why is the value greater than 60?(129596579.10 sec) [rad]
|
||||||
const double GLONASS_SUN_GM = 0.1325263e12; //!< Solar gravitational constant [km^3/s^2]
|
const double GLONASS_SUN_GM = 0.1325263e12; //!< Solar gravitational constant [km^3/s^2]
|
||||||
|
@ -184,6 +184,12 @@ find_package(Gnuplot)
|
|||||||
if(GNUPLOT_FOUND)
|
if(GNUPLOT_FOUND)
|
||||||
add_definitions(-DGNUPLOT_EXECUTABLE="${GNUPLOT_EXECUTABLE}")
|
add_definitions(-DGNUPLOT_EXECUTABLE="${GNUPLOT_EXECUTABLE}")
|
||||||
endif()
|
endif()
|
||||||
|
set_package_properties(Gnuplot PROPERTIES
|
||||||
|
URL "http://www.gnuplot.info"
|
||||||
|
DESCRIPTION "A portable command-line driven graphing utility"
|
||||||
|
PURPOSE "Used to generate plots in some tests."
|
||||||
|
TYPE OPTIONAL
|
||||||
|
)
|
||||||
|
|
||||||
if(ENABLE_UNIT_TESTING_MINIMAL)
|
if(ENABLE_UNIT_TESTING_MINIMAL)
|
||||||
add_definitions(-DUNIT_TESTING_MINIMAL=1)
|
add_definitions(-DUNIT_TESTING_MINIMAL=1)
|
||||||
@ -194,6 +200,15 @@ endif()
|
|||||||
# Optional generator
|
# Optional generator
|
||||||
################################################################################
|
################################################################################
|
||||||
option(ENABLE_GNSS_SIM_INSTALL "Enable the installation of gnss_sim on the fly" ON)
|
option(ENABLE_GNSS_SIM_INSTALL "Enable the installation of gnss_sim on the fly" ON)
|
||||||
|
add_feature_info(ENABLE_GNSS_SIM_INSTALL ENABLE_GNSS_SIM_INSTALL "Enables downloading and building of gnss-sim.")
|
||||||
|
|
||||||
|
find_package(GPSTK)
|
||||||
|
set_package_properties(GPSTK PROPERTIES
|
||||||
|
URL "http://www.gpstk.org"
|
||||||
|
DESCRIPTION "Library and suite of applications for satellite navigation"
|
||||||
|
PURPOSE "Used in some Extra Tests."
|
||||||
|
TYPE OPTIONAL
|
||||||
|
)
|
||||||
if(ENABLE_UNIT_TESTING_EXTRA OR ENABLE_SYSTEM_TESTING_EXTRA OR ENABLE_FPGA)
|
if(ENABLE_UNIT_TESTING_EXTRA OR ENABLE_SYSTEM_TESTING_EXTRA OR ENABLE_FPGA)
|
||||||
if(ENABLE_FPGA)
|
if(ENABLE_FPGA)
|
||||||
set(CROSS_INSTALL_DIR "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
|
set(CROSS_INSTALL_DIR "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
|
||||||
@ -239,7 +254,6 @@ if(ENABLE_UNIT_TESTING_EXTRA OR ENABLE_SYSTEM_TESTING_EXTRA OR ENABLE_FPGA)
|
|||||||
################################################################################
|
################################################################################
|
||||||
# Local installation of GPSTk http://www.gpstk.org/
|
# Local installation of GPSTk http://www.gpstk.org/
|
||||||
################################################################################
|
################################################################################
|
||||||
find_package(GPSTK)
|
|
||||||
if(NOT GPSTK_FOUND OR ENABLE_OWN_GPSTK)
|
if(NOT GPSTK_FOUND OR ENABLE_OWN_GPSTK)
|
||||||
message(STATUS " GPSTk v${GNSSSDR_GPSTK_LOCAL_VERSION} will be automatically downloaded and built when doing 'make'.")
|
message(STATUS " GPSTk v${GNSSSDR_GPSTK_LOCAL_VERSION} will be automatically downloaded and built when doing 'make'.")
|
||||||
if("${TOOLCHAIN_ARG}" STREQUAL "")
|
if("${TOOLCHAIN_ARG}" STREQUAL "")
|
||||||
|
Loading…
Reference in New Issue
Block a user