Merge commit 'v3.3.0' into upstream
[debian/gnuradio] / gr-atsc / src / lib / atsc_bit_timing_loop.h
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2006 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 #ifndef INCLUDED_ATSC_BIT_TIMING_LOOP_H
23 #define INCLUDED_ATSC_BIT_TIMING_LOOP_H
24
25 #include <cstdio>
26 #include <gr_block.h>
27 #include <atsci_diag_output.h>
28 #include <atsci_sssr.h>
29 #include <atsci_syminfo.h>
30
31 class atsc_bit_timing_loop;
32 typedef boost::shared_ptr<atsc_bit_timing_loop> atsc_bit_timing_loop_sptr;
33
34 atsc_bit_timing_loop_sptr atsc_make_bit_timing_loop();
35
36 /*!
37  * \brief ATSC BitTimingLoop3
38  * \ingroup atsc
39  *
40  * This class accepts a single real input and produces two outputs,
41  *  the raw symbol (float) and the tag (atsc_syminfo)
42  */
43 class atsc_bit_timing_loop : public gr_block
44 {
45   friend atsc_bit_timing_loop_sptr atsc_make_bit_timing_loop();
46
47   atsc_bit_timing_loop();
48
49 public:
50   int work (int noutput_items,
51             gr_vector_const_void_star &input_items,
52             gr_vector_void_star &output_items);
53
54   void reset() { /* nop */ }
55
56   ~atsc_bit_timing_loop () { };
57
58   void forecast (int noutput_items, gr_vector_int &ninput_items_required);
59
60   int  general_work (int noutput_items,
61                      gr_vector_int &ninput_items,
62                      gr_vector_const_void_star &input_items,
63                      gr_vector_void_star &output_items);
64
65
66   // debug (NOPs)
67   void set_mu (double a_mu) {  }
68   void set_no_update (bool a_no_update) {  }
69   void set_loop_filter_tap (double tap)  { }
70   void set_timing_rate (double rate)     { }
71
72
73  protected:
74
75   atsci_sssr                    d_sssr;
76   atsci_interpolator            d_interp;
77   unsigned long long            d_next_input;
78   double                        d_rx_clock_to_symbol_freq;
79   int                           d_si;
80
81
82 };
83
84 #endif /* INCLUDED_ATSC_BIT_TIMING_LOOP_H */
85
86
87