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 2, 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 _ATSC_FS_CHECKER_H_
23 #define _ATSC_FS_CHECKER_H_
25 #include <atsci_syminfo.h>
28 * \brief abstract base class for ATSC field sync checker
30 * Processes input samples one at a time looking for
31 * an occurence of either the field sync 1 or field sync 2 pattern.
33 * Note that unlike atsci_fs_correlator, this class uses the symbol_num in
34 * input_tag to avoid having to test each symbol position.
36 * For each sample processed, an output sample and an output tag are produced.
37 * The output samples are identical to the input samples but are delayed by
38 * a number of samples given by \p delay(). The output tag associated with
39 * the the given output sample indicates whether this sample is the beginning
40 * of one of the field syncs or is an ordinary sample. The tags are defined in
43 * For ease of use, the field sync patterns are defined to begin with the
44 * first symbol of the 4 symbol data segment sync pattern that immediately
45 * proceeds the actual PN 511 code. This makes it easier for downstream code
46 * to determine the location of data segment syncs merely by counting. They'll
47 * occur every 832 samples assuming everything is working.
50 class atsci_fs_checker {
56 virtual ~atsci_fs_checker () = 0;
59 virtual void reset () = 0;
60 virtual void filter (float input_sample, atsc::syminfo input_tag,
61 float *output_sample, atsc::syminfo *output_tag) = 0;
65 //! return delay in samples from input to output
66 virtual int delay () const = 0;
69 #endif /* _ATSC_FS_CHECKER_H_ */