summaryrefslogtreecommitdiff
path: root/gnuradio-core/src/lib/general/gri_lfsr.h
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-core/src/lib/general/gri_lfsr.h')
-rw-r--r--gnuradio-core/src/lib/general/gri_lfsr.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/gnuradio-core/src/lib/general/gri_lfsr.h b/gnuradio-core/src/lib/general/gri_lfsr.h
index 715da78a94..f691e36ecb 100644
--- a/gnuradio-core/src/lib/general/gri_lfsr.h
+++ b/gnuradio-core/src/lib/general/gri_lfsr.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2008 Free Software Foundation, Inc.
+ * Copyright 2008,2010 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -86,6 +86,7 @@ class gri_lfsr
private:
uint32_t d_shift_register;
uint32_t d_mask;
+ uint32_t d_seed;
uint32_t d_shift_register_length; // less than 32
static uint32_t
@@ -99,7 +100,10 @@ class gri_lfsr
public:
gri_lfsr(uint32_t mask, uint32_t seed, uint32_t reg_len)
- : d_shift_register(seed), d_mask(mask), d_shift_register_length(reg_len)
+ : d_shift_register(seed),
+ d_mask(mask),
+ d_seed(seed),
+ d_shift_register_length(reg_len)
{
if (reg_len > 31)
throw std::invalid_argument("reg_len must be <= 31");
@@ -126,6 +130,10 @@ class gri_lfsr
return output;
}
+ /*!
+ * Reset shift register to initial seed value
+ */
+ void reset() { d_shift_register = d_seed; }
/*!
* Rotate the register through x number of bits