GNSS-SDR  0.0.13
An Open Source GNSS Software Defined Receiver
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  * -----------------------------------------------------------------------------
6  *
7  * Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
8  *
9  * GNSS-SDR is a software defined Global Navigation
10  * Satellite Systems receiver
11  *
12  * This file is part of GNSS-SDR.
13  *
14  * SPDX-License-Identifier: GPL-3.0-or-later
15  *
16  * -----------------------------------------------------------------------------
17  */
18 
19 #ifndef GNSS_SDR_GPS_L5_TELEMETRY_DECODER_GS_H
20 #define GNSS_SDR_GPS_L5_TELEMETRY_DECODER_GS_H
21 
22 
23 #include "GPS_L5.h" // for GPS_L5I_NH_CODE_LENGTH
24 #include "gnss_satellite.h" // for Gnss_Satellite
25 #include "gps_cnav_navigation_message.h" // for Gps_CNAV_Navigation_Message
26 #include <boost/circular_buffer.hpp>
27 #include <gnuradio/block.h>
28 #include <gnuradio/types.h> // for gr_vector_const_void_star
29 #include <cstdint>
30 #include <fstream>
31 #include <string>
32 #if GNURADIO_USES_STD_POINTERS
33 #include <memory> // for std::shared_ptr
34 #else
35 #include <boost/shared_ptr.hpp>
36 #endif
37 
38 extern "C"
39 {
40 #include "cnav_msg.h"
41 }
42 
43 
45 
46 #if GNURADIO_USES_STD_POINTERS
47 using gps_l5_telemetry_decoder_gs_sptr = std::shared_ptr<gps_l5_telemetry_decoder_gs>;
48 #else
49 using gps_l5_telemetry_decoder_gs_sptr = boost::shared_ptr<gps_l5_telemetry_decoder_gs>;
50 #endif
51 
52 gps_l5_telemetry_decoder_gs_sptr gps_l5_make_telemetry_decoder_gs(
53  const Gnss_Satellite &satellite,
54  bool dump);
55 
56 /*!
57  * \brief This class implements a GPS L5 Telemetry decoder
58  *
59  */
60 class gps_l5_telemetry_decoder_gs : public gr::block
61 {
62 public:
64  void set_satellite(const Gnss_Satellite &satellite); //!< Set satellite PRN
65  void set_channel(int32_t channel); //!< Set receiver's channel
66  void reset();
67  int general_work(int noutput_items, gr_vector_int &ninput_items,
68  gr_vector_const_void_star &input_items, gr_vector_void_star &output_items);
69 
70 private:
71  friend gps_l5_telemetry_decoder_gs_sptr gps_l5_make_telemetry_decoder_gs(
72  const Gnss_Satellite &satellite,
73  bool dump);
74 
75  gps_l5_telemetry_decoder_gs(const Gnss_Satellite &satellite, bool dump);
76 
77  cnav_msg_decoder_t d_cnav_decoder{};
78 
79  Gnss_Satellite d_satellite;
80 
81  Gps_CNAV_Navigation_Message d_CNAV_Message;
82 
83  std::string d_dump_filename;
84  std::ofstream d_dump_file;
85 
86  uint64_t d_sample_counter;
87  uint64_t d_last_valid_preamble;
88 
89  int32_t d_channel;
90 
91  uint32_t d_TOW_at_current_symbol_ms;
92  uint32_t d_TOW_at_Preamble_ms;
93  uint32_t d_max_symbols_without_valid_frame;
94 
95  bool d_flag_PLL_180_deg_phase_locked;
96  bool d_flag_valid_word;
97  bool d_sent_tlm_failed_msg;
98  bool d_dump;
99 };
100 
101 
102 #endif // GNSS_SDR_GPS_L5_TELEMETRY_DECODER_GS_H
This class implements a GPS L5 Telemetry decoder.
Utilities for CNAV message manipulation of the libswiftnav library.
Defines system parameters for GPS L5 signal.
Interface of the Gnss_Satellite class.
This class represents a GNSS satellite.
Interface of a GPS CNAV Data message decoder.
This class decodes a GPS CNAV Data message as described in IS-GPS-200K.
void set_channel(int32_t channel)
Set receiver&#39;s channel.
void set_satellite(const Gnss_Satellite &satellite)
Set satellite PRN.