GNU Radio Manual and C++ API Reference
3.8.5.0
The Free & Open Software Radio Ecosystem
Loading...
Searching...
No Matches
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::lfsr_15_1_0
Linear Feedback Shift Register using primitive polynomial x^15 + x + 1.
Definition
lfsr_15_1_0.h:40
gr::blocks::lfsr_32k::next_short
int next_short()
Definition
lfsr_32k.h:76
gr::blocks::lfsr_32k::next_byte
int next_byte()
Definition
lfsr_32k.h:65
gr::blocks::lfsr_32k::reset
void reset()
Definition
lfsr_32k.h:49
gr::blocks::lfsr_32k::lfsr_32k
lfsr_32k()
Definition
lfsr_32k.h:47
gr::blocks::lfsr_32k::next_bit
int next_bit()
Definition
lfsr_32k.h:55
api.h
BLOCKS_API
#define BLOCKS_API
Definition
gr-blocks/include/gnuradio/blocks/api.h:30
lfsr_15_1_0.h
gr::blocks
Definition
abs_blk.h:32
gr
GNU Radio logging wrapper for log4cpp library (C++ port of log4j)
Definition
basic_block.h:46
v
Definition
cc_common.h:45
gnuradio-3.8.5.0
gr-blocks
include
gnuradio
blocks
lfsr_32k.h
Generated by
1.14.0