GNSS-SDR  0.0.21
An Open Source GNSS Software Defined Receiver
gps_l2c_telemetry_decoder_gs.h
Go to the documentation of this file.
1 /*!
2  * \file gps_l2c_telemetry_decoder_gs.h
3  * \brief Interface of a CNAV message demodulator block
4  * \author Javier Arribas, 2015. jarribas(at)cttc.es
5  *
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-2020 (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_L2C_TELEMETRY_DECODER_GS_H
18 #define GNSS_SDR_GPS_L2C_TELEMETRY_DECODER_GS_H
19 
20 
22 #include "nav_message_packet.h"
24 #include "tlm_conf.h"
25 #include <gnuradio/types.h> // for gr_vector_const_void_star
26 
27 extern "C"
28 {
29 #include "cnav_msg.h"
30 }
31 
32 /** \addtogroup Telemetry_Decoder
33  * \{ */
34 /** \addtogroup Telemetry_Decoder_gnuradio_blocks
35  * \{ */
36 
37 
39 
40 using gps_l2c_telemetry_decoder_gs_sptr = gnss_shared_ptr<gps_l2c_telemetry_decoder_gs>;
41 
42 gps_l2c_telemetry_decoder_gs_sptr gps_l2c_make_telemetry_decoder_gs(
43  const Gnss_Satellite &satellite,
44  const Tlm_Conf &conf);
45 
46 /*!
47  * \brief This class implements a block that decodes CNAV data defined in IS-GPS-200M
48  */
50 {
51 public:
52  ~gps_l2c_telemetry_decoder_gs() override;
53  void set_satellite(const Gnss_Satellite &satellite) override; //!< Set satellite PRN
54  void set_channel(int32_t channel) override; //!< Set receiver's channel
55  void reset() override;
56 
57  /*!
58  * \brief This is where all signal processing takes place
59  */
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 
63 private:
64  friend gps_l2c_telemetry_decoder_gs_sptr gps_l2c_make_telemetry_decoder_gs(
65  const Gnss_Satellite &satellite,
66  const Tlm_Conf &conf);
67 
68  gps_l2c_telemetry_decoder_gs(const Gnss_Satellite &satellite, const Tlm_Conf &conf);
69 
70  Gnss_Satellite d_satellite;
71 
72  cnav_msg_decoder_t d_cnav_decoder{};
73 
74  Gps_CNAV_Navigation_Message d_CNAV_Message;
75 
76  Nav_Message_Packet d_nav_msg_packet;
77  std::unique_ptr<Tlm_CRC_Stats> d_Tlm_CRC_Stats;
78 
79  std::string d_dump_filename;
80  std::ofstream d_dump_file;
81 
82  double d_TOW_at_current_symbol;
83  double d_TOW_at_Preamble;
84 
85  uint64_t d_sample_counter;
86  uint64_t d_last_valid_preamble;
87 
88  int32_t d_channel;
89 
90  uint32_t d_max_symbols_without_valid_frame;
91 
92  bool d_dump;
93  bool d_sent_tlm_failed_msg;
94  bool d_flag_PLL_180_deg_phase_locked;
95  bool d_flag_valid_word;
96  bool d_dump_mat;
97  bool d_remove_dat;
98  bool d_enable_navdata_monitor;
99  bool d_dump_crc_stats;
100  bool d_tow_to_trk;
101 };
102 
103 
104 /** \} */
105 /** \} */
106 #endif // GNSS_SDR_GPS_L2C_TELEMETRY_DECODER_GS_H
Common base class for telemetry decoder GNU Radio implementations.
Utilities for CNAV message manipulation of the libswiftnav library.
int general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) override
This is where all signal processing takes place.
Class that contains all the configuration parameters for generic telemetry decoder block...
This class implements a block that decodes CNAV data defined in IS-GPS-200M.
This class represents a GNSS satellite.
Interface of a GPS CNAV Data message decoder.
Base class for telemetry decoder GNU Radio blocks.
This class decodes a GPS CNAV Data message as described in IS-GPS-200M.
void set_channel(int32_t channel) override
Set receiver&#39;s channel.
void set_satellite(const Gnss_Satellite &satellite) override
Set satellite PRN.