GNU Radio C++ API
gri_lfsr_15_1_0.h
Go to the documentation of this file.
1
/* -*- c++ -*- */
2
/*
3
* Copyright 2004 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 INCLUDED_GRI_LFSR_15_1_0_H
24
#define INCLUDED_GRI_LFSR_15_1_0_H
25
26
#include <
gr_core_api.h
>
27
28
/*!
29
* \brief Linear Feedback Shift Register using primitive polynomial x^15 + x + 1
30
* \ingroup misc
31
*
32
* Generates a maximal length pseudo-random sequence of length 2^15 - 1 bits.
33
*/
34
35
class
GR_CORE_API
gri_lfsr_15_1_0
{
36
unsigned
long
d_sr;
// shift register
37
38
public
:
39
40
gri_lfsr_15_1_0
() { reset (); }
41
42
void
reset
() { d_sr = 0x7fff; }
43
44
int
next_bit
(){
45
d_sr = ((((d_sr >> 1) ^ d_sr) & 0x1) << 14) | (d_sr >> 1);
46
return
d_sr & 0x1;
47
}
48
49
int
next_byte
(){
50
int
v = 0;
51
for
(
int
i = 0; i < 8; i++){
52
v >>= 1;
53
if
(next_bit ())
54
v |= 0x80;
55
}
56
return
v;
57
}
58
};
59
60
#endif
/* INCLUDED_GRI_LFSR_15_1_0_H */
gnuradio-core
src
lib
general
gri_lfsr_15_1_0.h
Generated on Wed Jul 11 2012 23:30:13 for GNU Radio C++ API by
1.8.1.1