1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-11-17 23:34:56 +00:00

Merge branch 'next' into ssr

This commit is contained in:
Carles Fernandez 2022-05-12 22:00:48 +02:00
commit c99d5d2b97
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
8 changed files with 47 additions and 43 deletions

View File

@ -432,7 +432,7 @@ int galileo_e6_has_msg_receiver::decode_message_type1(uint8_t message_id, uint8_
void galileo_e6_has_msg_receiver::read_MT1_header(const std::string& message_header) void galileo_e6_has_msg_receiver::read_MT1_header(const std::string& message_header)
{ {
// ICD v1.4 Table 7: MT1 Message Header // HAS SIS ICD v1.0 Table 13: MT1 Message Header
const std::bitset<GALILEO_CNAV_MT1_HEADER_BITS> has_mt1_header(message_header); const std::bitset<GALILEO_CNAV_MT1_HEADER_BITS> has_mt1_header(message_header);
d_HAS_data.header.toh = read_has_message_header_parameter_uint16(has_mt1_header, GALILEO_MT1_HEADER_TOH); d_HAS_data.header.toh = read_has_message_header_parameter_uint16(has_mt1_header, GALILEO_MT1_HEADER_TOH);
d_HAS_data.header.mask_flag = read_has_message_header_parameter_bool(has_mt1_header, GALILEO_MT1_HEADER_MASK_FLAG); d_HAS_data.header.mask_flag = read_has_message_header_parameter_bool(has_mt1_header, GALILEO_MT1_HEADER_MASK_FLAG);
@ -461,7 +461,7 @@ void galileo_e6_has_msg_receiver::read_MT1_header(const std::string& message_hea
void galileo_e6_has_msg_receiver::read_MT1_body(const std::string& message_body) void galileo_e6_has_msg_receiver::read_MT1_body(const std::string& message_body)
{ {
// ICD v1.4 Table 8: MT1 Message Body. // HAS SIS ICD v1.0 Table 17: MT1 Message Body
auto message = std::string(message_body); auto message = std::string(message_body);
int Nsat = 0; int Nsat = 0;
bool have_mask = false; bool have_mask = false;

View File

@ -1,9 +1,9 @@
/*! /*!
* \file Galileo_CNAV.h * \file Galileo_CNAV.h
* \brief Galileo CNAV mesage constants. Data from: * \brief Galileo CNAV mesage constants. Data from:
* Galileo High Accuracy Service E6-B Signal-In-Space Message Specification v1.4 * Galileo High Accuracy Service Signal-In-Space Interface Control Document
* (February 2021). * (HAS SIS ICD) Issue 1.0, May 2022
* \author Carles Fernandez-Prades, 2020-2021. cfernandez(at)cttc.es * \author Carles Fernandez-Prades, 2020-2022. cfernandez(at)cttc.es
* *
* *
* ----------------------------------------------------------------------------- * -----------------------------------------------------------------------------
@ -11,7 +11,7 @@
* GNSS-SDR is a Global Navigation Satellite System software-defined receiver. * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
* This file is part of GNSS-SDR. * This file is part of GNSS-SDR.
* *
* Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors) * Copyright (C) 2010-2022 (see AUTHORS file for a list of contributors)
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* ----------------------------------------------------------------------------- * -----------------------------------------------------------------------------
@ -91,10 +91,11 @@ constexpr float HAS_MSG_PHASE_BIAS_SCALE_FACTOR = 0.01;
constexpr uint16_t HAS_MSG_NUMBER_MAX_TOH = 3599; constexpr uint16_t HAS_MSG_NUMBER_MAX_TOH = 3599;
constexpr uint8_t HAS_MSG_GPS_SYSTEM = 0; // Table 9 ICD v1.4 constexpr uint8_t HAS_MSG_GPS_SYSTEM = 0; // HAS SIS ICD v1.0 Table 18
constexpr uint8_t HAS_MSG_GALILEO_SYSTEM = 2; // Table 9 ICD v1.4 constexpr uint8_t HAS_MSG_GALILEO_SYSTEM = 2; // HAS SIS ICD v1.0 Table 18
constexpr uint8_t HAS_MSG_WRONG_SYSTEM = 255; constexpr uint8_t HAS_MSG_WRONG_SYSTEM = 255;
// HAS SIS ICD v1.0 Table 7
const std::pair<int32_t, int32_t> GALILEO_HAS_STATUS({1, 2}); const std::pair<int32_t, int32_t> GALILEO_HAS_STATUS({1, 2});
const std::pair<int32_t, int32_t> GALILEO_HAS_RESERVED({3, 2}); const std::pair<int32_t, int32_t> GALILEO_HAS_RESERVED({3, 2});
const std::pair<int32_t, int32_t> GALILEO_HAS_MESSAGE_TYPE({5, 2}); const std::pair<int32_t, int32_t> GALILEO_HAS_MESSAGE_TYPE({5, 2});
@ -102,6 +103,7 @@ const std::pair<int32_t, int32_t> GALILEO_HAS_MESSAGE_ID({7, 5});
const std::pair<int32_t, int32_t> GALILEO_HAS_MESSAGE_SIZE({12, 5}); const std::pair<int32_t, int32_t> GALILEO_HAS_MESSAGE_SIZE({12, 5});
const std::pair<int32_t, int32_t> GALILEO_HAS_MESSAGE_PAGE_ID({17, 8}); const std::pair<int32_t, int32_t> GALILEO_HAS_MESSAGE_PAGE_ID({17, 8});
// HAS SIS ICD v1.0 Table 12
const std::pair<int32_t, int32_t> GALILEO_MT1_HEADER_TOH({1, 12}); const std::pair<int32_t, int32_t> GALILEO_MT1_HEADER_TOH({1, 12});
const std::pair<int32_t, int32_t> GALILEO_MT1_HEADER_MASK_FLAG({13, 1}); const std::pair<int32_t, int32_t> GALILEO_MT1_HEADER_MASK_FLAG({13, 1});
const std::pair<int32_t, int32_t> GALILEO_MT1_HEADER_ORBIT_CORRECTION_FLAG({14, 1}); const std::pair<int32_t, int32_t> GALILEO_MT1_HEADER_ORBIT_CORRECTION_FLAG({14, 1});

View File

@ -1,16 +1,16 @@
/*! /*!
* \file galileo_cnav_message.cc * \file galileo_cnav_message.cc
* \brief Implementation of a Galileo CNAV Data message as described in * \brief Implementation of a Galileo CNAV Data message as described in
* Galileo High Accuracy Service E6-B Signal-In-Space Message Specification v1.2 * Galileo High Accuracy Service Signal-In-Space Interface Control Document
* (April 2020) * (HAS SIS ICD) Issue 1.0, May 2022
* \author Carles Fernandez-Prades, 2020-2021 cfernandez(at)cttc.es * \author Carles Fernandez-Prades, 2020-2022 cfernandez(at)cttc.es
* *
* ----------------------------------------------------------------------------- * -----------------------------------------------------------------------------
* *
* GNSS-SDR is a Global Navigation Satellite System software-defined receiver. * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
* This file is part of GNSS-SDR. * This file is part of GNSS-SDR.
* *
* Copyright (C) 2010-2021 (see AUTHORS file for a list of contributors) * Copyright (C) 2010-2022 (see AUTHORS file for a list of contributors)
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* ----------------------------------------------------------------------------- * -----------------------------------------------------------------------------
@ -67,7 +67,7 @@ void Galileo_Cnav_Message::read_HAS_page(const std::string& page_string)
read_HAS_page_header(page_string.substr(GALILEO_CNAV_PAGE_RESERVED_BITS, GALILEO_CNAV_PAGE_HEADER_BITS)); read_HAS_page_header(page_string.substr(GALILEO_CNAV_PAGE_RESERVED_BITS, GALILEO_CNAV_PAGE_HEADER_BITS));
bool use_has = false; bool use_has = false;
d_test_mode = false; d_test_mode = false;
// HAS status as defined in ICD v1.2 Table 5 HAS Page Header // HAS status as defined in HAS SIS ICD v1.0 Table 9 - HASS values and corresponding semantic
if (!d_page_dummy) if (!d_page_dummy)
{ {
switch (d_has_page_status) switch (d_has_page_status)
@ -118,7 +118,7 @@ void Galileo_Cnav_Message::read_HAS_page_header(const std::string& page_string)
} }
if (!d_page_dummy) if (!d_page_dummy)
{ {
// ICD v1.2 Table 5: HAS page header // HAS SIS ICD v1.0 Table 7: HAS page header
const std::bitset<GALILEO_CNAV_PAGE_HEADER_BITS> has_page_header(page_string); const std::bitset<GALILEO_CNAV_PAGE_HEADER_BITS> has_page_header(page_string);
d_has_page_status = read_has_page_header_parameter(has_page_header, GALILEO_HAS_STATUS); d_has_page_status = read_has_page_header_parameter(has_page_header, GALILEO_HAS_STATUS);
d_has_reserved = read_has_page_header_parameter(has_page_header, GALILEO_HAS_RESERVED); d_has_reserved = read_has_page_header_parameter(has_page_header, GALILEO_HAS_RESERVED);

View File

@ -1,16 +1,16 @@
/*! /*!
* \file galileo_cnav_message.h * \file galileo_cnav_message.h
* \brief Implementation of a Galileo CNAV Data message as described in * \brief Implementation of a Galileo CNAV Data message as described in
* Galileo High Accuracy Service E6-B Signal-In-Space Message Specification v1.2 * Galileo High Accuracy Service Signal-In-Space Interface Control Document
* (April 2020) * (HAS SIS ICD) Issue 1.0, May 2022
* \author Carles Fernandez-Prades, 2020-2021 cfernandez(at)cttc.es * \author Carles Fernandez-Prades, 2020-2022 cfernandez(at)cttc.es
* *
* ----------------------------------------------------------------------------- * -----------------------------------------------------------------------------
* *
* GNSS-SDR is a Global Navigation Satellite System software-defined receiver. * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
* This file is part of GNSS-SDR. * This file is part of GNSS-SDR.
* *
* Copyright (C) 2010-2021 (see AUTHORS file for a list of contributors) * Copyright (C) 2010-2022 (see AUTHORS file for a list of contributors)
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* ----------------------------------------------------------------------------- * -----------------------------------------------------------------------------
@ -34,8 +34,8 @@
/*! /*!
* \brief This class handles the Galileo CNAV Data message, as described in the * \brief This class handles the Galileo CNAV Data message, as described in the
* Galileo High Accuracy Service E6-B Signal-In-Space Message Specification v1.2 * Galileo High Accuracy Service Signal-In-Space Interface Control Document
* (April 2020) * (HAS SIS ICD) Issue 1.0, May 2022
*/ */
class Galileo_Cnav_Message class Galileo_Cnav_Message
{ {

View File

@ -1,14 +1,14 @@
/*! /*!
* \file galileo_has_data.cc * \file galileo_has_data.cc
* \brief Class for Galileo HAS message type 1 data storage * \brief Class for Galileo HAS message type 1 data storage
* \author Carles Fernandez-Prades, 2020-2021 cfernandez(at)cttc.es * \author Carles Fernandez-Prades, 2020-2022 cfernandez(at)cttc.es
* *
* ----------------------------------------------------------------------------- * -----------------------------------------------------------------------------
* *
* GNSS-SDR is a Global Navigation Satellite System software-defined receiver. * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
* This file is part of GNSS-SDR. * This file is part of GNSS-SDR.
* *
* Copyright (C) 2010-2021 (see AUTHORS file for a list of contributors) * Copyright (C) 2010-2022 (see AUTHORS file for a list of contributors)
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* ----------------------------------------------------------------------------- * -----------------------------------------------------------------------------
@ -117,6 +117,7 @@ std::vector<std::string> Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con
{ {
uint8_t system = gnss_id_mask[nsys]; uint8_t system = gnss_id_mask[nsys];
std::string signal; std::string signal;
// See HAS SIS ICD v1.0 Table 20
switch (k) switch (k)
{ {
case 0: case 0:
@ -171,7 +172,7 @@ std::vector<std::string> Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con
if (system == 0) if (system == 0)
{ {
// GPS // GPS
signal = "L1 L1C(D)"; signal = "L1C(D)";
} }
else if (system == 2) else if (system == 2)
{ {
@ -187,7 +188,7 @@ std::vector<std::string> Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con
if (system == 0) if (system == 0)
{ {
// GPS // GPS
signal = "L1 L1C(P)"; signal = "L1C(P)";
} }
else if (system == 2) else if (system == 2)
{ {
@ -203,7 +204,7 @@ std::vector<std::string> Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con
if (system == 0) if (system == 0)
{ {
// GPS // GPS
signal = "L1 L1C(D+P)"; signal = "L1C(D+P)";
} }
else if (system == 2) else if (system == 2)
{ {
@ -219,7 +220,7 @@ std::vector<std::string> Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con
if (system == 0) if (system == 0)
{ {
// GPS // GPS
signal = "L2 L2C(M)"; signal = "L2 CM";
} }
else if (system == 2) else if (system == 2)
{ {
@ -235,7 +236,7 @@ std::vector<std::string> Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con
if (system == 0) if (system == 0)
{ {
// GPS // GPS
signal = "L2 L2C(L)"; signal = "L2 CL";
} }
else if (system == 2) else if (system == 2)
{ {
@ -251,7 +252,7 @@ std::vector<std::string> Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con
if (system == 0) if (system == 0)
{ {
// GPS // GPS
signal = "L2 L2C(M+L)"; signal = "L2 CM+CL";
} }
else if (system == 2) else if (system == 2)
{ {
@ -405,6 +406,7 @@ uint8_t Galileo_HAS_data::get_gnss_id(int nsat) const
uint16_t Galileo_HAS_data::get_validity_interval_s(uint8_t validity_interval_index) const uint16_t Galileo_HAS_data::get_validity_interval_s(uint8_t validity_interval_index) const
{ {
uint16_t validity_interval; uint16_t validity_interval;
// See HAS SIS ICD v1.0 Table 23
switch (validity_interval_index) switch (validity_interval_index)
{ {
case 0: case 0:

View File

@ -1,14 +1,14 @@
/*! /*!
* \file galileo_has_data.h * \file galileo_has_data.h
* \brief Class for Galileo HAS message type 1 data storage * \brief Class for Galileo HAS message type 1 data storage
* \author Carles Fernandez-Prades, 2020-2021 cfernandez(at)cttc.es * \author Carles Fernandez-Prades, 2020-2022 cfernandez(at)cttc.es
* *
* ----------------------------------------------------------------------------- * -----------------------------------------------------------------------------
* *
* GNSS-SDR is a Global Navigation Satellite System software-defined receiver. * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
* This file is part of GNSS-SDR. * This file is part of GNSS-SDR.
* *
* Copyright (C) 2010-2021 (see AUTHORS file for a list of contributors) * Copyright (C) 2010-2022 (see AUTHORS file for a list of contributors)
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* ----------------------------------------------------------------------------- * -----------------------------------------------------------------------------
@ -43,8 +43,8 @@ struct mt1_header
/*! /*!
* \brief This class is a storage for Galileo HAS message type 1, as defined in * \brief This class is a storage for Galileo HAS message type 1, as defined in
* Galileo High Accuracy Service E6-B Signal-In-Space Message Specification v1.2 * Galileo High Accuracy Service Signal-In-Space Interface Control Document
* (April 2020). * (HAS SIS ICD) Issue 1.0, May 2022
*/ */
class Galileo_HAS_data class Galileo_HAS_data
{ {

View File

@ -8,7 +8,7 @@
* GNSS-SDR is a Global Navigation Satellite System software-defined receiver. * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
* This file is part of GNSS-SDR. * This file is part of GNSS-SDR.
* *
* Copyright (C) 2010-2021 (see AUTHORS file for a list of contributors) * Copyright (C) 2010-2022 (see AUTHORS file for a list of contributors)
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
* *
* ----------------------------------------------------------------------------- * -----------------------------------------------------------------------------
@ -29,8 +29,8 @@
/*! /*!
* \brief This class is a storage for Galileo HAS message page, as defined in * \brief This class is a storage for Galileo HAS message page, as defined in
* Galileo High Accuracy Service E6-B Signal-In-Space Message Specification v1.2 * Galileo High Accuracy Service Signal-In-Space Interface Control Document
* (April 2020). * (HAS SIS ICD) Issue 1.0, May 2022
*/ */
class Galileo_HAS_page class Galileo_HAS_page
{ {

View File

@ -22,12 +22,12 @@
TEST(ReedSolomonE6BTest, EncodeWithGenMatrix) TEST(ReedSolomonE6BTest, EncodeWithGenMatrix)
{ {
// input vector as defined in Galileo HAS ICD v1.2, Annex D // input vector
const std::vector<uint8_t> input = {71, 12, 25, 210, 178, 81, 243, 9, 112, const std::vector<uint8_t> input = {71, 12, 25, 210, 178, 81, 243, 9, 112,
98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31, 128, 98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31, 128,
245, 87, 150, 58, 192, 66, 130, 179}; 245, 87, 150, 58, 192, 66, 130, 179};
// Expected encoded output as defined in Galileo HAS ICD v1.2, Annex D // Expected encoded output
const std::vector<uint8_t> expected_output = {71, 12, 25, 210, 178, 81, 243, const std::vector<uint8_t> expected_output = {71, 12, 25, 210, 178, 81, 243,
9, 112, 98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31, 9, 112, 98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31,
128, 245, 87, 150, 58, 192, 66, 130, 179, 133, 210, 122, 224, 75, 138, 128, 245, 87, 150, 58, 192, 66, 130, 179, 133, 210, 122, 224, 75, 138,
@ -55,12 +55,12 @@ TEST(ReedSolomonE6BTest, EncodeWithGenMatrix)
TEST(ReedSolomonE6BTest, EncodeWithGenPoly) TEST(ReedSolomonE6BTest, EncodeWithGenPoly)
{ {
// input vector as defined in Galileo HAS ICD v1.2, Annex D // input vector
const std::vector<uint8_t> input = {71, 12, 25, 210, 178, 81, 243, 9, 112, const std::vector<uint8_t> input = {71, 12, 25, 210, 178, 81, 243, 9, 112,
98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31, 128, 98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31, 128,
245, 87, 150, 58, 192, 66, 130, 179}; 245, 87, 150, 58, 192, 66, 130, 179};
// Expected encoded output as defined in Galileo HAS ICD v1.2, Annex D // Expected encoded output
const std::vector<uint8_t> expected_output = {71, 12, 25, 210, 178, 81, 243, const std::vector<uint8_t> expected_output = {71, 12, 25, 210, 178, 81, 243,
9, 112, 98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31, 9, 112, 98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31,
128, 245, 87, 150, 58, 192, 66, 130, 179, 133, 210, 122, 224, 75, 138, 128, 245, 87, 150, 58, 192, 66, 130, 179, 133, 210, 122, 224, 75, 138,
@ -88,12 +88,12 @@ TEST(ReedSolomonE6BTest, EncodeWithGenPoly)
TEST(ReedSolomonE6BTest, EncodeWithCustomPoly) TEST(ReedSolomonE6BTest, EncodeWithCustomPoly)
{ {
// input vector as defined in Galileo HAS ICD v1.2, Annex D // input vector
const std::vector<uint8_t> input = {71, 12, 25, 210, 178, 81, 243, 9, 112, const std::vector<uint8_t> input = {71, 12, 25, 210, 178, 81, 243, 9, 112,
98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31, 128, 98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31, 128,
245, 87, 150, 58, 192, 66, 130, 179}; 245, 87, 150, 58, 192, 66, 130, 179};
// Expected encoded output as defined in Galileo HAS ICD v1.2, Annex D // Expected encoded output
const std::vector<uint8_t> expected_output = {71, 12, 25, 210, 178, 81, 243, const std::vector<uint8_t> expected_output = {71, 12, 25, 210, 178, 81, 243,
9, 112, 98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31, 9, 112, 98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31,
128, 245, 87, 150, 58, 192, 66, 130, 179, 133, 210, 122, 224, 75, 138, 128, 245, 87, 150, 58, 192, 66, 130, 179, 133, 210, 122, 224, 75, 138,
@ -144,12 +144,12 @@ TEST(ReedSolomonE6BTest, EncodeWithCustomPoly)
TEST(ReedSolomonE6BTest, EncodeWithCustomMatrix) TEST(ReedSolomonE6BTest, EncodeWithCustomMatrix)
{ {
// input vector as defined in Galileo HAS ICD v1.2, Annex D // input vector
const std::vector<uint8_t> input = {71, 12, 25, 210, 178, 81, 243, 9, 112, const std::vector<uint8_t> input = {71, 12, 25, 210, 178, 81, 243, 9, 112,
98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31, 128, 98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31, 128,
245, 87, 150, 58, 192, 66, 130, 179}; 245, 87, 150, 58, 192, 66, 130, 179};
// Expected encoded output as defined in Galileo HAS ICD v1.2, Annex D // Expected encoded output
const std::vector<uint8_t> expected_output = {71, 12, 25, 210, 178, 81, 243, const std::vector<uint8_t> expected_output = {71, 12, 25, 210, 178, 81, 243,
9, 112, 98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31, 9, 112, 98, 196, 203, 48, 125, 114, 165, 181, 193, 71, 174, 168, 42, 31,
128, 245, 87, 150, 58, 192, 66, 130, 179, 133, 210, 122, 224, 75, 138, 128, 245, 87, 150, 58, 192, 66, 130, 179, 133, 210, 122, 224, 75, 138,