GNU Radio Manual and C++ API Reference
3.7.5
The Free & Open Software Radio Ecosystem
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
lfsr_32k.h
Go to the documentation of this file.
1
/* -*- c++ -*- */
2
/*
3
* Copyright 2004,2013 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 <
gnuradio/blocks/api.h
>
27
#include <
gnuradio/blocks/lfsr_15_1_0.h
>
28
29
namespace
gr {
30
namespace
blocks {
31
32
/*!
33
* \brief generate pseudo-random sequence of length 32768 bits.
34
* \ingroup misc
35
*
36
* \details
37
* This is based on gri_lfsr_15_1_0 with an extra 0 added at the
38
* end of the sequence.
39
*/
40
class
BLOCKS_API
lfsr_32k
41
{
42
private
:
43
lfsr_15_1_0
d_lfsr;
44
unsigned
int
d_count;
45
46
public
:
47
lfsr_32k
() { reset (); }
48
49
void
reset()
50
{
51
d_lfsr.reset();
52
d_count = 0;
53
}
54
55
int
next_bit()
56
{
57
if
(d_count == 32767) {
58
d_count = 0;
59
return
0;
60
}
61
d_count++;
62
return
d_lfsr.next_bit();
63
}
64
65
int
next_byte()
66
{
67
int
v
= 0;
68
for
(
int
i = 0; i < 8; i++) {
69
v >>= 1;
70
if
(next_bit ())
71
v |= 0x80;
72
}
73
return
v;
74
}
75
76
int
next_short()
77
{
78
int
v
= 0;
79
for
(
int
i = 0; i < 16; i++) {
80
v >>= 1;
81
if
(next_bit ())
82
v |= 0x8000;
83
}
84
return
v;
85
}
86
};
87
88
}
/* namespace blocks */
89
}
/* namespace gr */
90
91
#endif
/* INCLUDED_GRI_LFSR_32k_H */
gr-blocks
include
gnuradio
blocks
lfsr_32k.h
Generated on Fri Oct 3 2014 00:33:51 for GNU Radio Manual and C++ API Reference by
1.8.1.2