GNU Radio 3.6.1 C++ API
gr_moving_average_cc.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2008 Free Software Foundation, Inc.
4  *
5  * This file is part of GNU Radio
6  *
7  * GNU Radio is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3, or (at your option)
10  * any later version.
11  *
12  * GNU Radio is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with GNU Radio; see the file COPYING. If not, write to
19  * the Free Software Foundation, Inc., 51 Franklin Street,
20  * Boston, MA 02110-1301, USA.
21  */
22 
23 // WARNING: this file is machine generated. Edits will be over written
24 
25 #ifndef INCLUDED_GR_MOVING_AVERAGE_CC_H
26 #define INCLUDED_GR_MOVING_AVERAGE_CC_H
27 
28 #include <gr_core_api.h>
29 #include <gr_sync_block.h>
30 
32 
34 
36 
37 /*!
38  * \brief output is the moving sum of the last N samples, scaled by the scale factor
39  * \ingroup filter_blk
40  *
41  * max_iter limits how long we go without flushing the accumulator
42  * This is necessary to avoid numerical instability for float and complex.
43  */
45 {
46 private:
47  friend GR_CORE_API gr_moving_average_cc_sptr gr_make_moving_average_cc(int length, gr_complex scale, int max_iter);
48 
49  gr_moving_average_cc (int length, gr_complex scale, int max_iter = 4096);
50 
51  int d_length;
52  gr_complex d_scale;
53  int d_max_iter;
54 
55  int d_new_length;
56  gr_complex d_new_scale;
57  bool d_updated;
58 
59 public:
61 
62  int work (int noutput_items,
63  gr_vector_const_void_star &input_items,
64  gr_vector_void_star &output_items);
65 
66  int length() const { return d_new_length; }
67  gr_complex scale() const { return d_new_scale; }
68 
69  void set_length_and_scale(int length, gr_complex scale);
70 };
71 
72 #endif /* INCLUDED_GR_MOVING_AVERAGE_CC_H */