Statistics
| Branch: | Tag: | Revision:

root / gr-atsc / src / lib / atsc_bit_timing_loop.h @ 02824991

History | View | Annotate | Download (2.4 kB)

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