GNSS-SDR 0.0.21
An Open Source GNSS Software Defined Receiver
Loading...
Searching...
No Matches
gps_l5_telemetry_decoder_gs.h
Go to the documentation of this file.
1/*!
2 * \file gps_l5_telemetry_decoder_gs.h
3 * \brief Interface of a CNAV message demodulator block
4 * \author Antonio Ramos, 2017. antonio.ramos(at)cttc.es
5 * \author Carles Fernandez Prades, 2017-2026. cfernandez(at)cttc.es
6 * -----------------------------------------------------------------------------
7 *
8 * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
9 * This file is part of GNSS-SDR.
10 *
11 * Copyright (C) 2010-2026 (see AUTHORS file for a list of contributors)
12 * SPDX-License-Identifier: GPL-3.0-or-later
13 *
14 * -----------------------------------------------------------------------------
15 */
16
17#ifndef GNSS_SDR_GPS_L5_TELEMETRY_DECODER_GS_H
18#define GNSS_SDR_GPS_L5_TELEMETRY_DECODER_GS_H
19
20
21#include "GPS_L5.h" // for GPS_L5I_NH_CODE_LENGTH
22#include "gps_cnav_navigation_message.h" // for Gps_CNAV_Navigation_Message
23#include "nav_message_packet.h"
25#include "tlm_conf.h"
26#include <boost/circular_buffer.hpp>
27#include <gnuradio/types.h> // for gr_vector_const_void_star
28
29extern "C"
30{
31#include "cnav_msg.h"
32}
33
34/** \addtogroup Telemetry_Decoder
35 * \{ */
36/** \addtogroup Telemetry_Decoder_gnuradio_blocks
37 * \{ */
38
39
41
42using gps_l5_telemetry_decoder_gs_sptr = gnss_shared_ptr<gps_l5_telemetry_decoder_gs>;
43
44gps_l5_telemetry_decoder_gs_sptr gps_l5_make_telemetry_decoder_gs(
45 const Gnss_Satellite &satellite,
46 const Tlm_Conf &conf,
47 CnavSystem system = CnavSystem::GPS);
48
49/*!
50 * \brief This class implements a GPS L5 Telemetry decoder
51 *
52 */
53class gps_l5_telemetry_decoder_gs : public telemetry_impl_interface
54{
55public:
56 ~gps_l5_telemetry_decoder_gs() override;
57 void set_satellite(const Gnss_Satellite &satellite) override; //!< Set satellite PRN
58 void set_channel(int32_t channel) override; //!< Set receiver's channel
59 void reset() override;
60 int general_work(int noutput_items, gr_vector_int &ninput_items,
61 gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) override;
62
63private:
64 friend gps_l5_telemetry_decoder_gs_sptr gps_l5_make_telemetry_decoder_gs(
65 const Gnss_Satellite &satellite,
66 const Tlm_Conf &conf,
67 CnavSystem system);
68
69 gps_l5_telemetry_decoder_gs(const Gnss_Satellite &satellite, const Tlm_Conf &conf, CnavSystem system);
70
71 cnav_msg_decoder_t d_cnav_decoder{};
72
73 Gnss_Satellite d_satellite;
74 CnavSystem d_system;
75
76 std::unique_ptr<Gps_CNAV_Navigation_Message> d_CNAV_Message;
77
78 Nav_Message_Packet d_nav_msg_packet;
79 std::unique_ptr<Tlm_CRC_Stats> d_Tlm_CRC_Stats;
80
81 std::string d_dump_filename;
82 std::ofstream d_dump_file;
83
84 uint64_t d_sample_counter;
85 uint64_t d_last_valid_preamble;
86
87 int32_t d_channel;
88
89 uint32_t d_TOW_at_current_symbol_ms;
90 uint32_t d_TOW_at_Preamble_ms;
91 uint32_t d_max_symbols_without_valid_frame;
92
93 bool d_flag_PLL_180_deg_phase_locked;
94 bool d_flag_valid_word;
95 bool d_sent_tlm_failed_msg;
96 bool d_dump;
97 bool d_dump_mat;
98 bool d_remove_dat;
99 bool d_enable_navdata_monitor;
100 bool d_dump_crc_stats;
101 bool d_tow_to_trk;
102};
103
104
105/** \} */
106/** \} */
107#endif // GNSS_SDR_GPS_L5_TELEMETRY_DECODER_GS_H
Defines system parameters for GPS L5 signal.
This class represents a GNSS satellite.
This class implements a GPS L5 Telemetry decoder.
void set_satellite(const Gnss_Satellite &satellite) override
Set satellite PRN.
void set_channel(int32_t channel) override
Set receiver's channel.
Utilities for CNAV message manipulation of the libswiftnav library.
Interface of a GPS CNAV Data message decoder.
Class for storage of decoded navigation messages.
Base class for telemetry decoder GNU Radio blocks.
Class that contains all the configuration parameters for generic telemetry decoder block.