From 4297667ffab8de12432e5145c4efd5697712f877 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Thu, 12 May 2022 21:09:11 +0200 Subject: [PATCH] Set HAS SIS ICD reference --- src/core/libs/galileo_e6_has_msg_receiver.cc | 4 ++-- src/core/system_parameters/Galileo_CNAV.h | 14 ++++++++------ .../system_parameters/galileo_cnav_message.cc | 12 ++++++------ .../system_parameters/galileo_cnav_message.h | 12 ++++++------ src/core/system_parameters/galileo_has_data.cc | 18 ++++++++++-------- src/core/system_parameters/galileo_has_data.h | 8 ++++---- src/core/system_parameters/galileo_has_page.h | 6 +++--- .../galileo_e6b_reed_solomon_test.cc | 16 ++++++++-------- 8 files changed, 47 insertions(+), 43 deletions(-) diff --git a/src/core/libs/galileo_e6_has_msg_receiver.cc b/src/core/libs/galileo_e6_has_msg_receiver.cc index c0c78be48..cf2ddcaa9 100644 --- a/src/core/libs/galileo_e6_has_msg_receiver.cc +++ b/src/core/libs/galileo_e6_has_msg_receiver.cc @@ -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) { - // ICD v1.4 Table 7: MT1 Message Header + // HAS SIS ICD v1.0 Table 13: MT1 Message Header const std::bitset 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.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) { - // ICD v1.4 Table 8: MT1 Message Body. + // HAS SIS ICD v1.0 Table 17: MT1 Message Body auto message = std::string(message_body); int Nsat = 0; bool have_mask = false; diff --git a/src/core/system_parameters/Galileo_CNAV.h b/src/core/system_parameters/Galileo_CNAV.h index a15549af5..280a3999c 100644 --- a/src/core/system_parameters/Galileo_CNAV.h +++ b/src/core/system_parameters/Galileo_CNAV.h @@ -1,9 +1,9 @@ /*! * \file Galileo_CNAV.h * \brief Galileo CNAV mesage constants. Data from: - * Galileo High Accuracy Service E6-B Signal-In-Space Message Specification v1.4 - * (February 2021). - * \author Carles Fernandez-Prades, 2020-2021. cfernandez(at)cttc.es + * Galileo High Accuracy Service Signal-In-Space Interface Control Document + * (HAS SIS ICD) Issue 1.0, May 2022 + * \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. * 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 * * ----------------------------------------------------------------------------- @@ -91,10 +91,11 @@ constexpr float HAS_MSG_PHASE_BIAS_SCALE_FACTOR = 0.01; 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_GALILEO_SYSTEM = 2; // 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; // HAS SIS ICD v1.0 Table 18 constexpr uint8_t HAS_MSG_WRONG_SYSTEM = 255; +// HAS SIS ICD v1.0 Table 7 const std::pair GALILEO_HAS_STATUS({1, 2}); const std::pair GALILEO_HAS_RESERVED({3, 2}); const std::pair GALILEO_HAS_MESSAGE_TYPE({5, 2}); @@ -102,6 +103,7 @@ const std::pair GALILEO_HAS_MESSAGE_ID({7, 5}); const std::pair GALILEO_HAS_MESSAGE_SIZE({12, 5}); const std::pair GALILEO_HAS_MESSAGE_PAGE_ID({17, 8}); +// HAS SIS ICD v1.0 Table 12 const std::pair GALILEO_MT1_HEADER_TOH({1, 12}); const std::pair GALILEO_MT1_HEADER_MASK_FLAG({13, 1}); const std::pair GALILEO_MT1_HEADER_ORBIT_CORRECTION_FLAG({14, 1}); diff --git a/src/core/system_parameters/galileo_cnav_message.cc b/src/core/system_parameters/galileo_cnav_message.cc index 84a12c798..0b93f6bf0 100644 --- a/src/core/system_parameters/galileo_cnav_message.cc +++ b/src/core/system_parameters/galileo_cnav_message.cc @@ -1,16 +1,16 @@ /*! * \file galileo_cnav_message.cc * \brief Implementation of a Galileo CNAV Data message as described in - * Galileo High Accuracy Service E6-B Signal-In-Space Message Specification v1.2 - * (April 2020) - * \author Carles Fernandez-Prades, 2020-2021 cfernandez(at)cttc.es + * Galileo High Accuracy Service Signal-In-Space Interface Control Document + * (HAS SIS ICD) Issue 1.0, May 2022 + * \author Carles Fernandez-Prades, 2020-2022 cfernandez(at)cttc.es * * ----------------------------------------------------------------------------- * * GNSS-SDR is a Global Navigation Satellite System software-defined receiver. * 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 * * ----------------------------------------------------------------------------- @@ -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)); bool use_has = 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) { 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) { - // ICD v1.2 Table 5: HAS page header + // HAS SIS ICD v1.0 Table 7: HAS page header const std::bitset has_page_header(page_string); 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); diff --git a/src/core/system_parameters/galileo_cnav_message.h b/src/core/system_parameters/galileo_cnav_message.h index 588adcd8e..90444175b 100644 --- a/src/core/system_parameters/galileo_cnav_message.h +++ b/src/core/system_parameters/galileo_cnav_message.h @@ -1,16 +1,16 @@ /*! * \file galileo_cnav_message.h * \brief Implementation of a Galileo CNAV Data message as described in - * Galileo High Accuracy Service E6-B Signal-In-Space Message Specification v1.2 - * (April 2020) - * \author Carles Fernandez-Prades, 2020-2021 cfernandez(at)cttc.es + * Galileo High Accuracy Service Signal-In-Space Interface Control Document + * (HAS SIS ICD) Issue 1.0, May 2022 + * \author Carles Fernandez-Prades, 2020-2022 cfernandez(at)cttc.es * * ----------------------------------------------------------------------------- * * GNSS-SDR is a Global Navigation Satellite System software-defined receiver. * 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 * * ----------------------------------------------------------------------------- @@ -34,8 +34,8 @@ /*! * \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 - * (April 2020) + * Galileo High Accuracy Service Signal-In-Space Interface Control Document + * (HAS SIS ICD) Issue 1.0, May 2022 */ class Galileo_Cnav_Message { diff --git a/src/core/system_parameters/galileo_has_data.cc b/src/core/system_parameters/galileo_has_data.cc index 80d3abbc6..3761b6f7b 100644 --- a/src/core/system_parameters/galileo_has_data.cc +++ b/src/core/system_parameters/galileo_has_data.cc @@ -1,14 +1,14 @@ /*! * \file galileo_has_data.cc * \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. * 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 * * ----------------------------------------------------------------------------- @@ -117,6 +117,7 @@ std::vector Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con { uint8_t system = gnss_id_mask[nsys]; std::string signal; + // See HAS SIS ICD v1.0 Table 20 switch (k) { case 0: @@ -171,7 +172,7 @@ std::vector Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con if (system == 0) { // GPS - signal = "L1 L1C(D)"; + signal = "L1C(D)"; } else if (system == 2) { @@ -187,7 +188,7 @@ std::vector Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con if (system == 0) { // GPS - signal = "L1 L1C(P)"; + signal = "L1C(P)"; } else if (system == 2) { @@ -203,7 +204,7 @@ std::vector Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con if (system == 0) { // GPS - signal = "L1 L1C(D+P)"; + signal = "L1C(D+P)"; } else if (system == 2) { @@ -219,7 +220,7 @@ std::vector Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con if (system == 0) { // GPS - signal = "L2 L2C(M)"; + signal = "L2 CM"; } else if (system == 2) { @@ -235,7 +236,7 @@ std::vector Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con if (system == 0) { // GPS - signal = "L2 L2C(L)"; + signal = "L2 CL"; } else if (system == 2) { @@ -251,7 +252,7 @@ std::vector Galileo_HAS_data::get_signals_in_mask(uint8_t nsys) con if (system == 0) { // GPS - signal = "L2 L2C(M+L)"; + signal = "L2 CM+CL"; } 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 validity_interval; + // See HAS SIS ICD v1.0 Table 23 switch (validity_interval_index) { case 0: diff --git a/src/core/system_parameters/galileo_has_data.h b/src/core/system_parameters/galileo_has_data.h index d18b66891..5841fd200 100644 --- a/src/core/system_parameters/galileo_has_data.h +++ b/src/core/system_parameters/galileo_has_data.h @@ -1,14 +1,14 @@ /*! * \file galileo_has_data.h * \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. * 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 * * ----------------------------------------------------------------------------- @@ -43,8 +43,8 @@ struct mt1_header /*! * \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 - * (April 2020). + * Galileo High Accuracy Service Signal-In-Space Interface Control Document + * (HAS SIS ICD) Issue 1.0, May 2022 */ class Galileo_HAS_data { diff --git a/src/core/system_parameters/galileo_has_page.h b/src/core/system_parameters/galileo_has_page.h index 7378f68a7..099ddd645 100644 --- a/src/core/system_parameters/galileo_has_page.h +++ b/src/core/system_parameters/galileo_has_page.h @@ -8,7 +8,7 @@ * GNSS-SDR is a Global Navigation Satellite System software-defined receiver. * 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 * * ----------------------------------------------------------------------------- @@ -29,8 +29,8 @@ /*! * \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 - * (April 2020). + * Galileo High Accuracy Service Signal-In-Space Interface Control Document + * (HAS SIS ICD) Issue 1.0, May 2022 */ class Galileo_HAS_page { diff --git a/src/tests/unit-tests/system-parameters/galileo_e6b_reed_solomon_test.cc b/src/tests/unit-tests/system-parameters/galileo_e6b_reed_solomon_test.cc index 21f75de1c..78687ae7b 100644 --- a/src/tests/unit-tests/system-parameters/galileo_e6b_reed_solomon_test.cc +++ b/src/tests/unit-tests/system-parameters/galileo_e6b_reed_solomon_test.cc @@ -22,12 +22,12 @@ TEST(ReedSolomonE6BTest, EncodeWithGenMatrix) { - // input vector as defined in Galileo HAS ICD v1.2, Annex D + // input vector const std::vector 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, 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 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, 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) { - // input vector as defined in Galileo HAS ICD v1.2, Annex D + // input vector const std::vector 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, 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 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, 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) { - // input vector as defined in Galileo HAS ICD v1.2, Annex D + // input vector const std::vector 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, 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 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, 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) { - // input vector as defined in Galileo HAS ICD v1.2, Annex D + // input vector const std::vector 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, 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 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, 128, 245, 87, 150, 58, 192, 66, 130, 179, 133, 210, 122, 224, 75, 138,