GNU Radio Manual and C++ API Reference 3.7.14.0
The Free & Open Software Radio Ecosystem
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>
28
29namespace gr {
30namespace 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 */
41{
42private:
43 lfsr_15_1_0 d_lfsr;
44 unsigned int d_count;
45
46public:
47 lfsr_32k() { reset(); }
48
49 void reset()
50 {
51 d_lfsr.reset();
52 d_count = 0;
53 }
54
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
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
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 */
Linear Feedback Shift Register using primitive polynomial x^15 + x + 1.
Definition: lfsr_15_1_0.h:40
int next_bit()
Definition: lfsr_15_1_0.h:49
void reset()
Definition: lfsr_15_1_0.h:47
generate pseudo-random sequence of length 32768 bits.
Definition: lfsr_32k.h:41
int next_short()
Definition: lfsr_32k.h:76
int next_byte()
Definition: lfsr_32k.h:65
void reset()
Definition: lfsr_32k.h:49
lfsr_32k()
Definition: lfsr_32k.h:47
int next_bit()
Definition: lfsr_32k.h:55
#define BLOCKS_API
Definition: gr-blocks/include/gnuradio/blocks/api.h:30
Include this header to use the message passing features.
Definition: basic_block.h:45
Definition: cc_common.h:45