3 * Copyright 2002 Free Software Foundation, Inc.
5 * This file is part of GNU Radio
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)
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.
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.
22 #ifndef _GRATSCSEGSYMSYNCIMPL_H_
23 #define _GRATSCSEGSYMSYNCIMPL_H_
25 #include <GrAtscSegSymSync.h>
26 #include <atsci_sssr.h>
30 * \brief concrete implementation of GrAtscSegSymSync
32 * This class implements data segment sync tracking and symbol timing
33 * using a variation of the method described in
34 * "ATSC/VSB Tutorial - Receiver Technology" by Wayne E. Bretl of
38 class GrAtscSegSymSyncImpl : public GrAtscSegSymSync {
41 atsci_interpolator d_interp;
42 VrSampleIndex d_next_input;
43 double d_rx_clock_to_symbol_freq; // nominal ratio
47 // the standard methods...
49 GrAtscSegSymSyncImpl (double nominal_ratio_of_rx_clock_to_symbol_freq);
50 virtual ~GrAtscSegSymSyncImpl ();
52 virtual const char *name () { return "GrAtscSegSymSyncImpl"; }
54 virtual int forecast (VrSampleRange output,
55 VrSampleRange inputs[]);
57 virtual int work (VrSampleRange output, void *o[],
58 VrSampleRange inputs[], void *i[]);
60 void pre_initialize ();
63 // reset on channel change
65 virtual void reset ();
69 #endif /* _GRATSCSEGSYMSYNCIMPL_H_ */