GNSS-SDR  0.0.19
An Open Source GNSS Software Defined Receiver
pulse_blanking_cc.h
Go to the documentation of this file.
1 /*!
2  * \file pulse_blanking_cc.h
3  * \brief Implements a pulse blanking algorithm
4  * \author Javier Arribas (jarribas(at)cttc.es)
5  * Antonio Ramos (antonio.ramosdet(at)gmail.com)
6  *
7  * -----------------------------------------------------------------------------
8  *
9  * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
10  * This file is part of GNSS-SDR.
11  *
12  * Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
13  * SPDX-License-Identifier: GPL-3.0-or-later
14  *
15  * -----------------------------------------------------------------------------
16  *
17  */
18 
19 #ifndef GNSS_SDR_PULSE_BLANKING_CC_H
20 #define GNSS_SDR_PULSE_BLANKING_CC_H
21 
22 #include "gnss_block_interface.h"
23 #include <gnuradio/block.h>
24 #include <volk_gnsssdr/volk_gnsssdr_alloc.h> // for volk_gnsssdr::vector
25 #include <cstdint>
26 
27 /** \addtogroup Input_Filter
28  * \{ */
29 /** \addtogroup Input_filter_gnuradio_blocks input_filter_gr_blocks
30  * GNU Radio blocks implementing input filters,
31  * \{ */
32 
33 
34 class pulse_blanking_cc;
35 
36 using pulse_blanking_cc_sptr = gnss_shared_ptr<pulse_blanking_cc>;
37 
38 pulse_blanking_cc_sptr make_pulse_blanking_cc(
39  float pfa,
40  int32_t length,
41  int32_t n_segments_est,
42  int32_t n_segments_reset);
43 
44 class pulse_blanking_cc : public gr::block
45 {
46 public:
47  ~pulse_blanking_cc() = default;
48 
49  int general_work(int noutput_items __attribute__((unused)), gr_vector_int &ninput_items __attribute__((unused)),
50  gr_vector_const_void_star &input_items, gr_vector_void_star &output_items);
51 
52 private:
53  friend pulse_blanking_cc_sptr make_pulse_blanking_cc(float pfa, int32_t length, int32_t n_segments_est, int32_t n_segments_reset);
54  pulse_blanking_cc(float pfa, int32_t length, int32_t n_segments_est, int32_t n_segments_reset);
55  volk_gnsssdr::vector<gr_complex> zeros_;
56  float noise_power_estimation_;
57  float thres_;
58  float pfa_;
59  int32_t length_;
60  int32_t n_segments_;
61  int32_t n_segments_est_;
62  int32_t n_segments_reset_;
63  int32_t n_deg_fred_;
64  bool last_filtered_;
65 };
66 
67 
68 /** \} */
69 /** \} */
70 #endif // GNSS_SDR_PULSE_BLANKING_CC_H
This interface represents a GNSS block.