GNU Radio 3.6.5.1 C++ API
atsci_fs_checker_naive.h
Go to the documentation of this file.
1
/* -*- c++ -*- */
2
/*
3
* Copyright 2002 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
#ifndef _ATSC_FS_CHECKER_NAIVE_H_
24
#define _ATSC_FS_CHECKER_NAIVE_H_
25
26
#include <
atsc_api.h
>
27
#include <
atsci_fs_checker.h
>
28
29
/*!
30
* \brief Naive concrete implementation of field sync checker
31
*/
32
class
ATSC_API
atsci_fs_checker_naive
:
public
atsci_fs_checker
{
33
34
private
:
35
static
const
int
SRSIZE = 1024;
// must be power of two
36
int
d_index;
// points at oldest sample
37
float
d_sample_sr[SRSIZE];
// sample shift register
38
atsc::syminfo
d_tag_sr[SRSIZE];
// tag shift register
39
unsigned
char
d_bit_sr[SRSIZE];
// binary decision shift register
40
int
d_field_num;
41
int
d_segment_num;
42
43
static
const
int
OFFSET_511 = 0;
// offset to PN 511 pattern
44
static
const
int
LENGTH_511 = 511 + 4;
// length of PN 511 pattern (+ 4 seg sync)
45
static
const
int
OFFSET_2ND_63 = 578;
// offset to second PN 63 pattern
46
static
const
int
LENGTH_2ND_63 = 63;
// length of PN 63 pattern
47
48
static
unsigned
char
s_511[LENGTH_511];
// PN 511 pattern
49
static
unsigned
char
s_63[LENGTH_2ND_63];
// PN 63 pattern
50
51
inline
static
int
wrap (
int
index){
return
index & (SRSIZE - 1); }
52
inline
static
int
incr (
int
index){
return
wrap (index + 1); }
53
inline
static
int
decr (
int
index){
return
wrap (index - 1); }
54
55
public
:
56
57
// CREATORS
58
atsci_fs_checker_naive
();
59
~
atsci_fs_checker_naive
();
60
61
// MANIPULATORS
62
virtual
void
reset
();
63
void
filter
(
float
input_sample,
atsc::syminfo
input_tag,
64
float
*output_sample,
atsc::syminfo
*output_tag);
65
66
// ACCESSORS
67
68
//! return delay in samples from input to output
69
int
delay
()
const
;
70
71
};
72
73
74
#endif
/* _ATSC_FS_CHECKER_NAIVE_H_ */
gr-atsc
src
lib
atsci_fs_checker_naive.h
Generated on Mon Aug 19 2013 15:37:29 for GNU Radio 3.6.5.1 C++ API by
1.8.1.2