GNU Radio C++ API
gri_lfsr_32k.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_32k_H
24
#define INCLUDED_GRI_LFSR_32k_H
25
26
#include <
gr_core_api.h
>
27
#include <
gri_lfsr_15_1_0.h
>
28
29
/*!
30
* \brief generate pseudo-random sequence of length 32768 bits.
31
* \ingroup misc
32
*
33
* This is based on gri_lfsr_15_1_0 with an extra 0 added at the end
34
* of the sequence.
35
*/
36
37
class
GR_CORE_API
gri_lfsr_32k
{
38
gri_lfsr_15_1_0
d_lfsr;
39
unsigned
int
d_count;
40
41
public
:
42
gri_lfsr_32k
() { reset (); }
43
44
void
reset
(){
45
d_lfsr.reset ();
46
d_count = 0;
47
}
48
49
int
next_bit
(){
50
if
(d_count == 32767){
51
d_count = 0;
52
return
0;
53
}
54
d_count++;
55
return
d_lfsr.next_bit ();
56
}
57
58
int
next_byte
(){
59
int
v = 0;
60
for
(
int
i = 0; i < 8; i++){
61
v >>= 1;
62
if
(next_bit ())
63
v |= 0x80;
64
}
65
return
v;
66
}
67
68
int
next_short
(){
69
int
v = 0;
70
for
(
int
i = 0; i < 16; i++){
71
v >>= 1;
72
if
(next_bit ())
73
v |= 0x8000;
74
}
75
return
v;
76
}
77
78
};
79
80
#endif
/* INCLUDED_GRI_LFSR_32k_H */
gnuradio-core
src
lib
general
gri_lfsr_32k.h
Generated on Wed Jul 11 2012 23:30:13 for GNU Radio C++ API by
1.8.1.1