summaryrefslogtreecommitdiff
path: root/gr-digital/lib/glfsr_source_b_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-digital/lib/glfsr_source_b_impl.cc')
-rw-r--r--gr-digital/lib/glfsr_source_b_impl.cc11
1 files changed, 4 insertions, 7 deletions
diff --git a/gr-digital/lib/glfsr_source_b_impl.cc b/gr-digital/lib/glfsr_source_b_impl.cc
index f10eafb71c..13ee0393da 100644
--- a/gr-digital/lib/glfsr_source_b_impl.cc
+++ b/gr-digital/lib/glfsr_source_b_impl.cc
@@ -32,6 +32,7 @@ glfsr_source_b_impl::glfsr_source_b_impl(unsigned int degree,
: sync_block("glfsr_source_b",
io_signature::make(0, 0, 0),
io_signature::make(1, 1, sizeof(unsigned char))),
+ d_glfsr(mask ? mask : glfsr::glfsr_mask(degree), seed),
d_repeat(repeat),
d_index(0),
d_length((((uint32_t)1) << degree) - 1)
@@ -39,15 +40,11 @@ glfsr_source_b_impl::glfsr_source_b_impl(unsigned int degree,
if (degree < 1 || degree > 32)
throw std::runtime_error(
"glfsr_source_b_impl: degree must be between 1 and 32 inclusive");
-
- if (mask == 0)
- mask = glfsr::glfsr_mask(degree);
- d_glfsr = new glfsr(mask, seed);
}
-glfsr_source_b_impl::~glfsr_source_b_impl() { delete d_glfsr; }
+glfsr_source_b_impl::~glfsr_source_b_impl() {}
-uint32_t glfsr_source_b_impl::mask() const { return d_glfsr->mask(); }
+uint32_t glfsr_source_b_impl::mask() const { return d_glfsr.mask(); }
int glfsr_source_b_impl::work(int noutput_items,
gr_vector_const_void_star& input_items,
@@ -59,7 +56,7 @@ int glfsr_source_b_impl::work(int noutput_items,
int i;
for (i = 0; i < noutput_items; i++) {
- out[i] = d_glfsr->next_bit();
+ out[i] = d_glfsr.next_bit();
d_index++;
if (d_index > d_length && d_repeat == false)
break;