1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-12-14 04:00:34 +00:00
This commit is contained in:
Carles Fernandez 2019-11-04 21:11:04 +01:00
commit 946624e4ce
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
12 changed files with 63 additions and 33 deletions

View File

@ -220,9 +220,9 @@ $ sudo apt-get install libblas-dev liblapack-dev # For Debian/Ubuntu/Linux
$ sudo yum install lapack-devel blas-devel # For Fedora/CentOS/RHEL $ sudo yum install lapack-devel blas-devel # For Fedora/CentOS/RHEL
$ sudo zypper install lapack-devel blas-devel # For OpenSUSE $ sudo zypper install lapack-devel blas-devel # For OpenSUSE
$ sudo pacman -S blas lapack # For Arch Linux $ sudo pacman -S blas lapack # For Arch Linux
$ wget https://sourceforge.net/projects/arma/files/armadillo-9.700.3.tar.xz $ wget https://sourceforge.net/projects/arma/files/armadillo-9.800.2.tar.xz
$ tar xvfz armadillo-9.700.3.tar.xz $ tar xvfz armadillo-9.800.2.tar.xz
$ cd armadillo-9.700.3 $ cd armadillo-9.800.2
$ cmake . $ cmake .
$ make $ make
$ sudo make install $ sudo make install

View File

@ -21,6 +21,10 @@
# GPSTK_INCLUDE_DIR, where to find Rinex3ObsBase.hpp, etc. # GPSTK_INCLUDE_DIR, where to find Rinex3ObsBase.hpp, etc.
# GPSTK_FOUND, If false, do not try to use GPSTK. # GPSTK_FOUND, If false, do not try to use GPSTK.
# GPSTK_LIBRARY, where to find the GPSTK library. # GPSTK_LIBRARY, where to find the GPSTK library.
#
# Provides the following imported target:
# Gpstk::gpstk
#
if(NOT COMMAND feature_summary) if(NOT COMMAND feature_summary)
include(FeatureSummary) include(FeatureSummary)

View File

@ -19,6 +19,11 @@
# Find GR-DBFCTTC Module # Find GR-DBFCTTC Module
######################################################################## ########################################################################
#
# Provides the following imported target:
# Gnuradio::dbfcttc
#
set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH TRUE) set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH TRUE)
include(FindPkgConfig) include(FindPkgConfig)
pkg_check_modules(PC_GR_DBFCTTC gr-dbfcttc) pkg_check_modules(PC_GR_DBFCTTC gr-dbfcttc)

View File

@ -19,6 +19,11 @@
# Find GR-GN3S Module # Find GR-GN3S Module
######################################################################## ########################################################################
#
# Provides the following imported target:
# Gnuradio::gn3s
#
set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH TRUE) set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH TRUE)
include(FindPkgConfig) include(FindPkgConfig)
pkg_check_modules(PC_GR_GN3S gr-gn3s) pkg_check_modules(PC_GR_GN3S gr-gn3s)

View File

@ -17,7 +17,7 @@
# #
# Provides the following imported target: # Provides the following imported target:
# Iio::iio # Iio::ad9361
# #
if(NOT COMMAND feature_summary) if(NOT COMMAND feature_summary)
@ -28,8 +28,7 @@ set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH TRUE)
include(FindPkgConfig) include(FindPkgConfig)
pkg_check_modules(PC_LIBAD9361 libad9361) pkg_check_modules(PC_LIBAD9361 libad9361)
find_path( find_path(LIBAD9361_INCLUDE_DIRS
LIBAD9361_INCLUDE_DIRS
NAMES ad9361.h NAMES ad9361.h
HINTS ${PC_LIBAD9361_INCLUDEDIR} HINTS ${PC_LIBAD9361_INCLUDEDIR}
PATHS /usr/include PATHS /usr/include
@ -41,8 +40,7 @@ find_path(
$ENV{LIBAD9361_DIR}/include $ENV{LIBAD9361_DIR}/include
) )
find_library( find_library(LIBAD9361_LIBRARIES
LIBAD9361_LIBRARIES
NAMES ad9361 NAMES ad9361
HINTS ${PC_LIBAD9361_LIBDIR} HINTS ${PC_LIBAD9361_LIBDIR}
PATHS /usr/lib PATHS /usr/lib

View File

@ -15,6 +15,11 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>. # along with GNSS-SDR. If not, see <https://www.gnu.org/licenses/>.
#
# Provides the following imported target:
# Gnuradio::teleorbit
#
if(NOT COMMAND feature_summary) if(NOT COMMAND feature_summary)
include(FeatureSummary) include(FeatureSummary)
endif() endif()

View File

@ -17,7 +17,7 @@
# #
# Provides the following imported target: # Provides the following imported target:
# Iio::iio # Uhd::uhd
# #
######################################################################## ########################################################################

View File

@ -39,7 +39,8 @@
- The CMake scripts now find dependencies in Debian's riscv64 architecture. - The CMake scripts now find dependencies in Debian's riscv64 architecture.
- Enable AVX2 kernels of the volk_gnsssdr library when using the Clang compiler. - Enable AVX2 kernels of the volk_gnsssdr library when using the Clang compiler.
- Added a CMake toolchain for building volk_gnsssdr in a Raspberry Pi. - 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.
### Improvements in Reliability: ### Improvements in Reliability:

View File

@ -202,6 +202,9 @@ Rtklib_Pvt::Rtklib_Pvt(ConfigurationInterface* configuration,
* 608 | BeiDou B3I + GPS L1 C/A + Galileo E1B + BeiDou B1I * 608 | BeiDou B3I + GPS L1 C/A + Galileo E1B + BeiDou B1I
* 609 | BeiDou B3I + GPS L1 C/A + Galileo E1B + GLONASS L1 C/A * 609 | BeiDou B3I + GPS L1 C/A + Galileo E1B + GLONASS L1 C/A
* 610 | BeiDou B3I + GPS L1 C/A + Galileo E1B + GLONASS L1 C/A + BeiDou B1I * 610 | BeiDou B3I + GPS L1 C/A + Galileo E1B + GLONASS L1 C/A + BeiDou B1I
*
* 1000 | GPS L1 C/A + GPS L2C + GPS L5
* 1001 | GPS L1 C/A + Galileo E1B + GPS L2C + GPS L5 + Galileo E5a
*/ */
int gps_1C_count = configuration->property("Channels_1C.count", 0); int gps_1C_count = configuration->property("Channels_1C.count", 0);
int gps_2S_count = configuration->property("Channels_2S.count", 0); int gps_2S_count = configuration->property("Channels_2S.count", 0);
@ -396,7 +399,7 @@ Rtklib_Pvt::Rtklib_Pvt(ConfigurationInterface* configuration,
// Settings 1 // Settings 1
int positioning_mode = -1; int positioning_mode = -1;
std::string default_pos_mode("Single"); std::string default_pos_mode("Single");
std::string positioning_mode_str = configuration->property(role + ".positioning_mode", default_pos_mode); // (PMODE_XXX) see src/algorithms/libs/rtklib/rtklib.h std::string positioning_mode_str = configuration->property(role + ".positioning_mode", default_pos_mode); // (PMODE_XXX) see src/algorithms/libs/rtklib/rtklib.h
if (positioning_mode_str == "Single") if (positioning_mode_str == "Single")
{ {
positioning_mode = PMODE_SINGLE; positioning_mode = PMODE_SINGLE;

View File

@ -1101,7 +1101,7 @@ void rtklib_pvt_gs::msg_handler_telemetry(const pmt::pmt_t& msg)
rp->log_rinex_nav(rp->navFile, new_glo_eph); rp->log_rinex_nav(rp->navFile, new_glo_eph);
} }
break; break;
case 29: // GPS L1 C/A + GLONASS L2 C/A case 29: // GPS L1 C/A + GLONASS L2 C/A
if (d_rinex_version == 3) if (d_rinex_version == 3)
{ {
rp->log_rinex_nav(rp->navMixFile, new_eph, new_glo_eph); rp->log_rinex_nav(rp->navMixFile, new_eph, new_glo_eph);
@ -1196,13 +1196,13 @@ void rtklib_pvt_gs::msg_handler_telemetry(const pmt::pmt_t& msg)
case 7: // GPS L1 C/A + GPS L2C case 7: // GPS L1 C/A + GPS L2C
rp->log_rinex_nav(rp->navFile, new_cnav_eph); rp->log_rinex_nav(rp->navFile, new_cnav_eph);
break; break;
case 13: // L5+E5a case 13: // L5+E5a
rp->log_rinex_nav(rp->navMixFile, new_cnav_eph, new_gal_eph); rp->log_rinex_nav(rp->navMixFile, new_cnav_eph, new_gal_eph);
break; break;
case 28: // GPS L2C + GLONASS L1 C/A case 28: // GPS L2C + GLONASS L1 C/A
rp->log_rinex_nav(rp->navMixFile, new_cnav_eph, new_glo_eph); rp->log_rinex_nav(rp->navMixFile, new_cnav_eph, new_glo_eph);
break; break;
case 31: // GPS L2C + GLONASS L2 C/A case 31: // GPS L2C + GLONASS L2 C/A
rp->log_rinex_nav(rp->navMixFile, new_cnav_eph, new_glo_eph); rp->log_rinex_nav(rp->navMixFile, new_cnav_eph, new_glo_eph);
break; break;
default: default:
@ -1458,7 +1458,7 @@ void rtklib_pvt_gs::msg_handler_telemetry(const pmt::pmt_t& msg)
case 25: // GLONASS L1 C/A + GLONASS L2 C/A case 25: // GLONASS L1 C/A + GLONASS L2 C/A
rp->log_rinex_nav(rp->navGloFile, new_glo_eph); rp->log_rinex_nav(rp->navGloFile, new_glo_eph);
break; break;
case 26: // GPS L1 C/A + GLONASS L1 C/A case 26: // GPS L1 C/A + GLONASS L1 C/A
if (d_rinex_version == 3) if (d_rinex_version == 3)
{ {
rp->log_rinex_nav(rp->navMixFile, new_eph, new_glo_eph); rp->log_rinex_nav(rp->navMixFile, new_eph, new_glo_eph);
@ -1468,13 +1468,13 @@ void rtklib_pvt_gs::msg_handler_telemetry(const pmt::pmt_t& msg)
rp->log_rinex_nav(rp->navGloFile, new_glo_eph); rp->log_rinex_nav(rp->navGloFile, new_glo_eph);
} }
break; break;
case 27: // Galileo E1B + GLONASS L1 C/A case 27: // Galileo E1B + GLONASS L1 C/A
rp->log_rinex_nav(rp->navMixFile, new_gal_eph, new_glo_eph); rp->log_rinex_nav(rp->navMixFile, new_gal_eph, new_glo_eph);
break; break;
case 28: // GPS L2C + GLONASS L1 C/A case 28: // GPS L2C + GLONASS L1 C/A
rp->log_rinex_nav(rp->navMixFile, new_cnav_eph, new_glo_eph); rp->log_rinex_nav(rp->navMixFile, new_cnav_eph, new_glo_eph);
break; break;
case 29: // GPS L1 C/A + GLONASS L2 C/A case 29: // GPS L1 C/A + GLONASS L2 C/A
if (d_rinex_version == 3) if (d_rinex_version == 3)
{ {
rp->log_rinex_nav(rp->navMixFile, new_eph, new_glo_eph); rp->log_rinex_nav(rp->navMixFile, new_eph, new_glo_eph);
@ -1484,10 +1484,10 @@ void rtklib_pvt_gs::msg_handler_telemetry(const pmt::pmt_t& msg)
rp->log_rinex_nav(rp->navGloFile, new_glo_eph); rp->log_rinex_nav(rp->navGloFile, new_glo_eph);
} }
break; break;
case 30: // Galileo E1B + GLONASS L2 C/A case 30: // Galileo E1B + GLONASS L2 C/A
rp->log_rinex_nav(rp->navMixFile, new_gal_eph, new_glo_eph); rp->log_rinex_nav(rp->navMixFile, new_gal_eph, new_glo_eph);
break; break;
case 31: // GPS L2C + GLONASS L2 C/A case 31: // GPS L2C + GLONASS L2 C/A
rp->log_rinex_nav(rp->navMixFile, new_cnav_eph, new_glo_eph); rp->log_rinex_nav(rp->navMixFile, new_cnav_eph, new_glo_eph);
break; break;
default: default:
@ -1688,7 +1688,7 @@ bool rtklib_pvt_gs::send_sys_v_ttff_msg(ttff_msgbuf ttff)
ttff_msgbuf msg; ttff_msgbuf msg;
msg.ttff = ttff.ttff; msg.ttff = ttff.ttff;
msgsend_size = sizeof(msg.ttff); msgsend_size = sizeof(msg.ttff);
msg.mtype = 1; // default message ID msg.mtype = 1; // default message ID
// SEND SOLUTION OVER A MESSAGE QUEUE // SEND SOLUTION OVER A MESSAGE QUEUE
// non-blocking Sys V message send // non-blocking Sys V message send
@ -2287,7 +2287,7 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
std::map<int, Gps_CNAV_Ephemeris>::const_iterator gps_cnav_ephemeris_iter; std::map<int, Gps_CNAV_Ephemeris>::const_iterator gps_cnav_ephemeris_iter;
std::map<int, Glonass_Gnav_Ephemeris>::const_iterator glonass_gnav_ephemeris_iter; std::map<int, Glonass_Gnav_Ephemeris>::const_iterator glonass_gnav_ephemeris_iter;
std::map<int, Beidou_Dnav_Ephemeris>::const_iterator beidou_dnav_ephemeris_iter; std::map<int, Beidou_Dnav_Ephemeris>::const_iterator beidou_dnav_ephemeris_iter;
if (!b_rinex_header_written) // & we have utc data in nav message! if (!b_rinex_header_written) // & we have utc data in nav message!
{ {
galileo_ephemeris_iter = d_user_pvt_solver->galileo_ephemeris_map.cbegin(); galileo_ephemeris_iter = d_user_pvt_solver->galileo_ephemeris_map.cbegin();
gps_ephemeris_iter = d_user_pvt_solver->gps_ephemeris_map.cbegin(); gps_ephemeris_iter = d_user_pvt_solver->gps_ephemeris_map.cbegin();
@ -2384,7 +2384,7 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
b_rinex_header_written = true; // do not write header anymore b_rinex_header_written = true; // do not write header anymore
} }
break; break;
case 10: // GPS L1 C/A + Galileo E5a case 10: // GPS L1 C/A + Galileo E5a
if ((galileo_ephemeris_iter != d_user_pvt_solver->galileo_ephemeris_map.cend()) and (gps_ephemeris_iter != d_user_pvt_solver->gps_ephemeris_map.cend())) if ((galileo_ephemeris_iter != d_user_pvt_solver->galileo_ephemeris_map.cend()) and (gps_ephemeris_iter != d_user_pvt_solver->gps_ephemeris_map.cend()))
{ {
std::string gal_signal("5X"); std::string gal_signal("5X");
@ -2394,7 +2394,7 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
b_rinex_header_written = true; // do not write header anymore b_rinex_header_written = true; // do not write header anymore
} }
break; break;
case 11: // GPS L1 C/A + Galileo E5b case 11: // GPS L1 C/A + Galileo E5b
if ((galileo_ephemeris_iter != d_user_pvt_solver->galileo_ephemeris_map.cend()) and (gps_ephemeris_iter != d_user_pvt_solver->gps_ephemeris_map.cend())) if ((galileo_ephemeris_iter != d_user_pvt_solver->galileo_ephemeris_map.cend()) and (gps_ephemeris_iter != d_user_pvt_solver->gps_ephemeris_map.cend()))
{ {
std::string gal_signal("7X"); std::string gal_signal("7X");
@ -2415,7 +2415,7 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
b_rinex_header_written = true; // do not write header anymore b_rinex_header_written = true; // do not write header anymore
} }
break; break;
case 14: // Galileo E1B + Galileo E5a case 14: // Galileo E1B + Galileo E5a
if ((galileo_ephemeris_iter != d_user_pvt_solver->galileo_ephemeris_map.cend())) if ((galileo_ephemeris_iter != d_user_pvt_solver->galileo_ephemeris_map.cend()))
{ {
std::string gal_signal("1B 5X"); std::string gal_signal("1B 5X");
@ -2425,7 +2425,7 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
b_rinex_header_written = true; // do not write header anymore b_rinex_header_written = true; // do not write header anymore
} }
break; break;
case 15: // Galileo E1B + Galileo E5b case 15: // Galileo E1B + Galileo E5b
if ((galileo_ephemeris_iter != d_user_pvt_solver->galileo_ephemeris_map.cend())) if ((galileo_ephemeris_iter != d_user_pvt_solver->galileo_ephemeris_map.cend()))
{ {
std::string gal_signal("1B 7X"); std::string gal_signal("1B 7X");
@ -2485,7 +2485,7 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
b_rinex_header_written = true; // do not write header anymore b_rinex_header_written = true; // do not write header anymore
} }
break; break;
case 27: // Galileo E1B + GLONASS L1 C/A case 27: // Galileo E1B + GLONASS L1 C/A
if ((glonass_gnav_ephemeris_iter != d_user_pvt_solver->glonass_gnav_ephemeris_map.cend()) and (galileo_ephemeris_iter != d_user_pvt_solver->galileo_ephemeris_map.cend())) if ((glonass_gnav_ephemeris_iter != d_user_pvt_solver->glonass_gnav_ephemeris_map.cend()) and (galileo_ephemeris_iter != d_user_pvt_solver->galileo_ephemeris_map.cend()))
{ {
std::string glo_signal("1G"); std::string glo_signal("1G");
@ -2526,7 +2526,7 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
b_rinex_header_written = true; // do not write header anymore b_rinex_header_written = true; // do not write header anymore
} }
break; break;
case 30: // Galileo E1B + GLONASS L2 C/A case 30: // Galileo E1B + GLONASS L2 C/A
if ((glonass_gnav_ephemeris_iter != d_user_pvt_solver->glonass_gnav_ephemeris_map.cend()) and (galileo_ephemeris_iter != d_user_pvt_solver->galileo_ephemeris_map.cend())) if ((glonass_gnav_ephemeris_iter != d_user_pvt_solver->glonass_gnav_ephemeris_map.cend()) and (galileo_ephemeris_iter != d_user_pvt_solver->galileo_ephemeris_map.cend()))
{ {
std::string glo_signal("2G"); std::string glo_signal("2G");

View File

@ -118,7 +118,14 @@ obsd_t insert_obs_to_rtklib(obsd_t& rtklib_obs, const Gnss_Synchro& gnss_synchro
// rtklib_obs.time = gpst2time(adjgpsweek(week), gnss_synchro.RX_time); // rtklib_obs.time = gpst2time(adjgpsweek(week), gnss_synchro.RX_time);
// } // }
// //
rtklib_obs.time = gpst2time(adjgpsweek(week, pre_2009_file), gnss_synchro.RX_time); if (gnss_synchro.System == 'E')
{
rtklib_obs.time = gst2time(week, gnss_synchro.RX_time);
}
else
{
rtklib_obs.time = gpst2time(adjgpsweek(week, pre_2009_file), gnss_synchro.RX_time);
}
// account for the TOW crossover transitory in the first 18 seconds where the week is not yet updated! // account for the TOW crossover transitory in the first 18 seconds where the week is not yet updated!
if (gnss_synchro.RX_time < 18.0) if (gnss_synchro.RX_time < 18.0)
{ {
@ -188,7 +195,7 @@ eph_t eph_to_rtklib(const Galileo_Ephemeris& gal_eph)
rtklib_sat.Adot = 0; // only in CNAV; rtklib_sat.Adot = 0; // only in CNAV;
rtklib_sat.ndot = 0; // only in CNAV; rtklib_sat.ndot = 0; // only in CNAV;
rtklib_sat.week = adjgpsweek(gal_eph.WN_5); /* week of tow */ rtklib_sat.week = gal_eph.WN_5 + 1024; /* week of tow in GPS (not mod-1024) week scale */
rtklib_sat.cic = gal_eph.C_ic_4; rtklib_sat.cic = gal_eph.C_ic_4;
rtklib_sat.cis = gal_eph.C_is_4; rtklib_sat.cis = gal_eph.C_is_4;
rtklib_sat.cuc = gal_eph.C_uc_3; rtklib_sat.cuc = gal_eph.C_uc_3;

View File

@ -405,6 +405,8 @@ if(MSVC)
set(cmake_c_compiler_version "Microsoft Visual Studio 11.0") set(cmake_c_compiler_version "Microsoft Visual Studio 11.0")
elseif(MSVC12) #Visual Studio 12 elseif(MSVC12) #Visual Studio 12
set(cmake_c_compiler_version "Microsoft Visual Studio 12.0") set(cmake_c_compiler_version "Microsoft Visual Studio 12.0")
elseif(MSVC14) #Visual Studio 14
set(cmake_c_compiler_version "Microsoft Visual Studio 14.0")
endif() endif()
else() else()
execute_process(COMMAND ${CMAKE_C_COMPILER} --version execute_process(COMMAND ${CMAKE_C_COMPILER} --version
@ -625,12 +627,12 @@ if(ENABLE_STATIC_LIBS)
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
) )
set_target_properties(volk_gnsssdr_static PROPERTIES OUTPUT_NAME volk_gnsssdr)
install(TARGETS volk_gnsssdr_static install(TARGETS volk_gnsssdr_static
EXPORT VOLK_GNSSSDR-export EXPORT VOLK_GNSSSDR-export
ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT "volk_gnsssdr_devel" ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT "volk_gnsssdr_devel"
) )
set_target_properties(volk_gnsssdr_static PROPERTIES OUTPUT_NAME volk_gnsssdr)
endif() endif()
######################################################################## ########################################################################