summaryrefslogtreecommitdiff
path: root/gr-digital/lib
diff options
context:
space:
mode:
Diffstat (limited to 'gr-digital/lib')
-rw-r--r--gr-digital/lib/CMakeLists.txt2
-rw-r--r--gr-digital/lib/simple_correlator_impl.cc204
-rw-r--r--gr-digital/lib/simple_correlator_impl.h84
-rw-r--r--gr-digital/lib/simple_framer_impl.cc92
-rw-r--r--gr-digital/lib/simple_framer_impl.h41
5 files changed, 0 insertions, 423 deletions
diff --git a/gr-digital/lib/CMakeLists.txt b/gr-digital/lib/CMakeLists.txt
index 6b449ad6e7..b3d81ce506 100644
--- a/gr-digital/lib/CMakeLists.txt
+++ b/gr-digital/lib/CMakeLists.txt
@@ -82,8 +82,6 @@ add_library(gnuradio-digital
probe_density_b_impl.cc
probe_mpsk_snr_est_c_impl.cc
scrambler_bb_impl.cc
- simple_correlator_impl.cc
- simple_framer_impl.cc
interpolating_resampler.cc
symbol_sync_cc_impl.cc
symbol_sync_ff_impl.cc
diff --git a/gr-digital/lib/simple_correlator_impl.cc b/gr-digital/lib/simple_correlator_impl.cc
deleted file mode 100644
index d062f24726..0000000000
--- a/gr-digital/lib/simple_correlator_impl.cc
+++ /dev/null
@@ -1,204 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2010,2013 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "simple_correlator_impl.h"
-#include <gnuradio/blocks/count_bits.h>
-#include <gnuradio/digital/simple_framer_sync.h>
-#include <gnuradio/io_signature.h>
-#include <cstring>
-#include <stdexcept>
-
-namespace gr {
-namespace digital {
-
-static const int THRESHOLD = 3;
-
-simple_correlator::sptr simple_correlator::make(int payload_bytesize)
-{
- return gnuradio::make_block_sptr<simple_correlator_impl>(payload_bytesize);
-}
-
-simple_correlator_impl::simple_correlator_impl(int payload_bytesize)
- : block("simple_correlator",
- io_signature::make(1, 1, sizeof(float)),
- io_signature::make(1, 1, sizeof(unsigned char))),
- d_payload_bytesize(payload_bytesize),
- d_bblen((payload_bytesize + GRSF_PAYLOAD_OVERHEAD) * GRSF_BITS_PER_BYTE),
- d_bitbuf(d_bblen),
- d_pktbuf(d_bblen / GRSF_BITS_PER_BYTE)
-{
- for (int i = 0; i < AVG_PERIOD; i++) {
- d_avgbuf[i] = 0.0;
- }
-
- enter_looking();
-}
-
-simple_correlator_impl::~simple_correlator_impl() {}
-
-void simple_correlator_impl::enter_looking()
-{
- fflush(stdout);
- // fprintf(stderr, ">>> enter_looking\n");
- d_state = ST_LOOKING;
- for (int i = 0; i < OVERSAMPLE; i++)
- d_shift_reg[i] = 0;
- d_osi = 0;
-
- d_avbi = 0;
- d_avg = d_avg * 0.5;
- d_accum = 0;
- for (int i = 0; i < AVG_PERIOD; i++)
- d_avgbuf[i] = 0.0;
-}
-
-void simple_correlator_impl::enter_under_threshold()
-{
- fflush(stdout);
- // fprintf(stderr, ">>> enter_under_threshold\n");
- d_state = ST_UNDER_THRESHOLD;
- d_transition_osi = d_osi;
-}
-
-void simple_correlator_impl::enter_locked()
-{
- d_state = ST_LOCKED;
- int delta = sub_index(d_osi, d_transition_osi);
- d_center_osi = add_index(d_transition_osi, delta / 2);
- // d_center_osi = add_index(d_center_osi, 3); // FIXME
- d_bbi = 0;
- fflush(stdout);
- // fprintf(stderr, ">>> enter_locked d_center_osi = %d\n", d_center_osi);
-
- d_avg = std::max(-1.0, std::min(1.0, d_accum * (1.0 / AVG_PERIOD)));
- // fprintf(stderr, ">>> enter_locked d_avg = %g\n", d_avg);
-}
-
-static void packit(unsigned char* pktbuf, const unsigned char* bitbuf, int bitcount)
-{
- for (int i = 0; i < bitcount; i += 8) {
- int t = bitbuf[i + 0] & 0x1;
- t = (t << 1) | (bitbuf[i + 1] & 0x1);
- t = (t << 1) | (bitbuf[i + 2] & 0x1);
- t = (t << 1) | (bitbuf[i + 3] & 0x1);
- t = (t << 1) | (bitbuf[i + 4] & 0x1);
- t = (t << 1) | (bitbuf[i + 5] & 0x1);
- t = (t << 1) | (bitbuf[i + 6] & 0x1);
- t = (t << 1) | (bitbuf[i + 7] & 0x1);
- *pktbuf++ = t;
- }
-}
-
-void simple_correlator_impl::update_avg(float x)
-{
- d_accum -= d_avgbuf[d_avbi];
- d_avgbuf[d_avbi] = x;
- d_accum += x;
- d_avbi = (d_avbi + 1) & (AVG_PERIOD - 1);
-}
-
-int simple_correlator_impl::general_work(int noutput_items,
- gr_vector_int& ninput_items,
- gr_vector_const_void_star& input_items,
- gr_vector_void_star& output_items)
-{
- const float* in = (const float*)input_items[0];
- unsigned char* out = (unsigned char*)output_items[0];
-
- int n = 0;
- int nin = ninput_items[0];
- int decision;
- int hamming_dist;
-
-#ifdef DEBUG_SIMPLE_CORRELATOR
- struct debug_data {
- float raw_data;
- bool sampled;
- bool enter_locked;
- } debug_data;
-#endif
-
- while (n < nin) {
-
-#ifdef DEBUG_SIMPLE_CORRELATOR
- debug_data.raw_data = in[n];
- debug_data.sampled = false;
- debug_data.enter_locked = false;
-#endif
-
- switch (d_state) {
- case ST_LOCKED:
- if (d_osi == d_center_osi) {
-
-#ifdef DEBUG_SIMPLE_CORRELATOR
- debug_data.sampled = true;
-#endif
- decision = slice(in[n]);
-
- d_bitbuf[d_bbi] = decision;
- d_bbi++;
- if (d_bbi >= d_bblen) {
- // printf("got whole packet\n");
- packit(d_pktbuf.data(), d_bitbuf.data(), d_bbi);
- // printf("seqno %3d\n", d_pktbuf[0]);
- memcpy(out, &d_pktbuf[GRSF_PAYLOAD_OVERHEAD], d_payload_bytesize);
- enter_looking();
- consume_each(n + 1);
- return d_payload_bytesize;
- }
- }
- break;
-
- case ST_LOOKING:
- case ST_UNDER_THRESHOLD:
- update_avg(in[n]);
- decision = slice(in[n]);
- d_shift_reg[d_osi] = (d_shift_reg[d_osi] << 1) | decision;
-
- hamming_dist = gr::blocks::count_bits64(d_shift_reg[d_osi] ^ GRSF_SYNC);
- // printf("%2d %d\n", hamming_dist, d_osi);
-
- if (d_state == ST_LOOKING && hamming_dist <= THRESHOLD) {
- // We're seeing a good PN code, remember location
- enter_under_threshold();
- } else if (d_state == ST_UNDER_THRESHOLD && hamming_dist > THRESHOLD) {
- // no longer seeing good PN code, compute center of goodness
- enter_locked();
-#ifdef DEBUG_SIMPLE_CORRELATOR
- debug_data.enter_locked = true;
-#endif
- }
- break;
- default:
- GR_LOG_ERROR(d_logger, "Unknown simple correlator state encountered");
- throw std::runtime_error("unknown simple correlator state");
- }
-
-#ifdef DEBUG_SIMPLE_CORRELATOR
- GR_LOG_TRACE(d_debug_logger,
- (boost::format("%e %c%c") % debug_data.raw_data %
- (debug_data.sampled ? 'S' : ' ') %
- (debug_data.enter_locked ? 'L' : ' ')));
-#endif
-
- d_osi = add_index(d_osi, 1);
- n++;
- }
-
- consume_each(n);
- return 0;
-}
-
-} /* namespace digital */
-} /* namespace gr */
diff --git a/gr-digital/lib/simple_correlator_impl.h b/gr-digital/lib/simple_correlator_impl.h
deleted file mode 100644
index 3a5514dcc9..0000000000
--- a/gr-digital/lib/simple_correlator_impl.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2013 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#ifndef INCLUDED_GR_SIMPLE_CORRELATOR_IMPL_H
-#define INCLUDED_GR_SIMPLE_CORRELATOR_IMPL_H
-
-#include <gnuradio/digital/simple_correlator.h>
-
-// To enable tracing to the debug logger, un-comment the following line
-//#define DEBUG_SIMPLE_CORRELATOR
-
-namespace gr {
-namespace digital {
-
-class simple_correlator_impl : public simple_correlator
-{
-private:
- static constexpr int OVERSAMPLE = 8;
- enum state_t { ST_LOOKING, ST_UNDER_THRESHOLD, ST_LOCKED };
-
- int d_payload_bytesize;
- state_t d_state = ST_LOOKING;
- unsigned int d_osi = 0; // over sample index [0,OVERSAMPLE-1]
- unsigned int d_transition_osi = 0; // first index where Hamming dist < thresh
- unsigned int d_center_osi = 0; // center of bit
- unsigned long long int d_shift_reg[OVERSAMPLE];
- int d_bblen; // length of bitbuf
- std::vector<unsigned char> d_bitbuf; // demodulated bits
- std::vector<unsigned char> d_pktbuf; // temp packet buf
- int d_bbi = 0; // bitbuf index
-
- static const int AVG_PERIOD = 512; // must be power of 2 (for freq offset correction)
- int d_avbi = 0;
- float d_avgbuf[AVG_PERIOD];
- float d_avg = 0.0;
- float d_accum = 0.0;
-
- inline int slice(float x) { return x >= d_avg ? 1 : 0; }
-
- void update_avg(float x);
-
- void enter_locked();
- void enter_under_threshold();
- void enter_looking();
-
- static int add_index(int a, int b)
- {
- int t = a + b;
- if (t >= OVERSAMPLE)
- t -= OVERSAMPLE;
- assert(t >= 0 && t < OVERSAMPLE);
- return t;
- }
-
- static int sub_index(int a, int b)
- {
- int t = a - b;
- if (t < 0)
- t += OVERSAMPLE;
- assert(t >= 0 && t < OVERSAMPLE);
- return t;
- }
-
-public:
- simple_correlator_impl(int payload_bytesize);
- ~simple_correlator_impl() override;
-
- int general_work(int noutput_items,
- gr_vector_int& ninput_items,
- gr_vector_const_void_star& input_items,
- gr_vector_void_star& output_items) override;
-};
-
-} /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_SIMPLE_CORRELATOR_IMPL_H */
diff --git a/gr-digital/lib/simple_framer_impl.cc b/gr-digital/lib/simple_framer_impl.cc
deleted file mode 100644
index 13eb29c78c..0000000000
--- a/gr-digital/lib/simple_framer_impl.cc
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2010,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "simple_framer_impl.h"
-#include <gnuradio/digital/simple_framer_sync.h>
-#include <gnuradio/io_signature.h>
-#include <cassert>
-#include <string>
-
-namespace gr {
-namespace digital {
-
-simple_framer::sptr simple_framer::make(int payload_bytesize)
-{
- return gnuradio::make_block_sptr<simple_framer_impl>(payload_bytesize);
-}
-
-simple_framer_impl::simple_framer_impl(int payload_bytesize)
- : block("simple_framer",
- io_signature::make(1, 1, sizeof(unsigned char)),
- io_signature::make(1, 1, sizeof(unsigned char))),
- d_seqno(0),
- d_input_block_size(payload_bytesize),
- d_output_block_size(payload_bytesize + GRSF_OVERHEAD)
-{
- set_output_multiple(d_output_block_size);
-}
-
-simple_framer_impl::~simple_framer_impl() {}
-
-void simple_framer_impl::forecast(int noutput_items, gr_vector_int& ninput_items_required)
-{
- assert(noutput_items % d_output_block_size == 0);
-
- int nblocks = noutput_items / d_output_block_size;
- int input_required = nblocks * d_input_block_size;
-
- unsigned ninputs = ninput_items_required.size();
- for (unsigned int i = 0; i < ninputs; i++)
- ninput_items_required[i] = input_required;
-}
-
-int simple_framer_impl::general_work(int noutput_items,
- gr_vector_int& ninput_items,
- gr_vector_const_void_star& input_items,
- gr_vector_void_star& output_items)
-{
- const unsigned char* in = (const unsigned char*)input_items[0];
- unsigned char* out = (unsigned char*)output_items[0];
-
- int n = 0;
- int nblocks = 0;
-
- memset(out, 0x55, noutput_items);
-
- while (n < noutput_items) {
- out[0] = (GRSF_SYNC >> 56) & 0xff;
- out[1] = (GRSF_SYNC >> 48) & 0xff;
- out[2] = (GRSF_SYNC >> 40) & 0xff;
- out[3] = (GRSF_SYNC >> 32) & 0xff;
- out[4] = (GRSF_SYNC >> 24) & 0xff;
- out[5] = (GRSF_SYNC >> 16) & 0xff;
- out[6] = (GRSF_SYNC >> 8) & 0xff;
- out[7] = (GRSF_SYNC >> 0) & 0xff;
- out[8] = d_seqno++;
-
- memcpy(&out[9], in, d_input_block_size);
- in += d_input_block_size;
- out += d_output_block_size;
- n += d_output_block_size;
- nblocks++;
- }
-
- assert(n == noutput_items);
-
- consume_each(nblocks * d_input_block_size);
- return n;
-}
-
-} /* namespace digital */
-} /* namespace gr */
diff --git a/gr-digital/lib/simple_framer_impl.h b/gr-digital/lib/simple_framer_impl.h
deleted file mode 100644
index 5c4b9da676..0000000000
--- a/gr-digital/lib/simple_framer_impl.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *
- */
-
-#ifndef INCLUDED_GR_SIMPLE_FRAMER_IMPL_H
-#define INCLUDED_GR_SIMPLE_FRAMER_IMPL_H
-
-#include <gnuradio/digital/simple_framer.h>
-
-namespace gr {
-namespace digital {
-
-class simple_framer_impl : public simple_framer
-{
-private:
- int d_seqno;
- int d_input_block_size; // bytes
- int d_output_block_size; // bytes
-
-public:
- simple_framer_impl(int payload_bytesize);
- ~simple_framer_impl() override;
-
- void forecast(int noutput_items, gr_vector_int& ninput_items_required) override;
-
- int general_work(int noutput_items,
- gr_vector_int& ninput_items,
- gr_vector_const_void_star& input_items,
- gr_vector_void_star& output_items) override;
-};
-
-} /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_SIMPLE_FRAMER_IMPL_H */