From f3e2e07201c50033bf6c9d0c6a6f068557b4f17f Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Wed, 17 Apr 2013 13:43:52 -0400
Subject: runtime: converting runtime core to gr namespace, gnuradio include
 dir.

---
 gr-digital/lib/diff_phasor_cc_impl.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'gr-digital/lib/diff_phasor_cc_impl.h')

diff --git a/gr-digital/lib/diff_phasor_cc_impl.h b/gr-digital/lib/diff_phasor_cc_impl.h
index 844fc826d8..7e06b35ad4 100644
--- a/gr-digital/lib/diff_phasor_cc_impl.h
+++ b/gr-digital/lib/diff_phasor_cc_impl.h
@@ -24,7 +24,7 @@
 #define INCLUDED_GR_DIFF_PHASOR_CC_IMPL_H
 
 #include <digital/diff_phasor_cc.h>
-#include <gr_sync_block.h>
+#include <gnuradio/sync_block.h>
 
 namespace gr {
   namespace digital {
-- 
cgit v1.2.3


From bc462ac6f6841c16fe3f6a777f32589c3b546aba Mon Sep 17 00:00:00 2001
From: Johnathan Corgan <johnathan@corganlabs.com>
Date: Mon, 29 Apr 2013 20:59:55 -0700
Subject: digital: moved include dir to gnuradio/digital

---
 gr-digital/CMakeLists.txt                          |   2 +-
 gr-digital/include/digital/CMakeLists.txt          | 143 ------
 gr-digital/include/digital/additive_scrambler_bb.h |  74 ----
 gr-digital/include/digital/api.h                   |  33 --
 gr-digital/include/digital/binary_slicer_fb.h      |  55 ---
 .../include/digital/chunks_to_symbols_XX.h.t       |  76 ----
 gr-digital/include/digital/clock_recovery_mm_cc.h  |  81 ----
 gr-digital/include/digital/clock_recovery_mm_ff.h  |  78 ----
 gr-digital/include/digital/cma_equalizer_cc.h      |  75 ----
 gr-digital/include/digital/constellation.h         | 478 ---------------------
 .../include/digital/constellation_decoder_cb.h     |  62 ---
 .../include/digital/constellation_receiver_cb.h    |  72 ----
 .../include/digital/correlate_access_code_bb.h     |  75 ----
 .../include/digital/correlate_access_code_tag_bb.h |  71 ---
 gr-digital/include/digital/costas_loop_cc.h        |  78 ----
 gr-digital/include/digital/cpmmod_bc.h             | 117 -----
 gr-digital/include/digital/crc32.h                 |  58 ---
 gr-digital/include/digital/crc32_bb.h              |  61 ---
 gr-digital/include/digital/descrambler_bb.h        |  60 ---
 gr-digital/include/digital/diff_decoder_bb.h       |  57 ---
 gr-digital/include/digital/diff_encoder_bb.h       |  57 ---
 gr-digital/include/digital/diff_phasor_cc.h        |  57 ---
 gr-digital/include/digital/fll_band_edge_cc.h      | 179 --------
 gr-digital/include/digital/framer_sink_1.h         |  68 ---
 gr-digital/include/digital/glfsr.h                 |  65 ---
 gr-digital/include/digital/glfsr_source_b.h        |  63 ---
 gr-digital/include/digital/glfsr_source_f.h        |  63 ---
 gr-digital/include/digital/header_payload_demux.h  |  91 ----
 gr-digital/include/digital/kurtotic_equalizer_cc.h |  63 ---
 gr-digital/include/digital/lfsr.h                  | 163 -------
 gr-digital/include/digital/lms_dd_equalizer_cc.h   | 101 -----
 gr-digital/include/digital/map_bb.h                |  63 ---
 gr-digital/include/digital/metric_type.h           |  37 --
 gr-digital/include/digital/mpsk_receiver_cc.h      | 144 -------
 gr-digital/include/digital/mpsk_snr_est.h          | 288 -------------
 gr-digital/include/digital/mpsk_snr_est_cc.h       |  96 -----
 .../include/digital/ofdm_carrier_allocator_cvc.h   | 108 -----
 gr-digital/include/digital/ofdm_chanest_vcvc.h     |  96 -----
 gr-digital/include/digital/ofdm_cyclic_prefixer.h  |  72 ----
 gr-digital/include/digital/ofdm_equalizer_base.h   | 109 -----
 .../include/digital/ofdm_equalizer_simpledfe.h     | 131 ------
 gr-digital/include/digital/ofdm_equalizer_static.h | 103 -----
 .../include/digital/ofdm_frame_acquisition.h       |  82 ----
 .../include/digital/ofdm_frame_equalizer_vcvc.h    |  64 ---
 gr-digital/include/digital/ofdm_frame_sink.h       |  71 ---
 gr-digital/include/digital/ofdm_insert_preamble.h  |  79 ----
 gr-digital/include/digital/ofdm_mapper_bcv.h       |  67 ---
 gr-digital/include/digital/ofdm_sampler.h          |  57 ---
 gr-digital/include/digital/ofdm_serializer_vcc.h   |  92 ----
 gr-digital/include/digital/ofdm_sync_sc_cfb.h      |  79 ----
 gr-digital/include/digital/packet_header_default.h | 113 -----
 gr-digital/include/digital/packet_header_ofdm.h    | 102 -----
 .../include/digital/packet_headergenerator_bb.h    |  73 ----
 gr-digital/include/digital/packet_headerparser_b.h |  71 ---
 gr-digital/include/digital/packet_sink.h           |  80 ----
 gr-digital/include/digital/pfb_clock_sync_ccf.h    | 330 --------------
 gr-digital/include/digital/pfb_clock_sync_fff.h    | 316 --------------
 gr-digital/include/digital/pn_correlator_cc.h      |  63 ---
 gr-digital/include/digital/probe_density_b.h       |  68 ---
 gr-digital/include/digital/probe_mpsk_snr_est_c.h  |  95 ----
 gr-digital/include/digital/scrambler_bb.h          |  60 ---
 gr-digital/include/digital/simple_correlator.h     |  49 ---
 gr-digital/include/digital/simple_framer.h         |  59 ---
 gr-digital/include/digital/simple_framer_sync.h    |  56 ---
 gr-digital/include/gnuradio/digital/CMakeLists.txt | 143 ++++++
 .../gnuradio/digital/additive_scrambler_bb.h       |  74 ++++
 gr-digital/include/gnuradio/digital/api.h          |  33 ++
 .../include/gnuradio/digital/binary_slicer_fb.h    |  55 +++
 .../gnuradio/digital/chunks_to_symbols_XX.h.t      |  76 ++++
 .../gnuradio/digital/clock_recovery_mm_cc.h        |  81 ++++
 .../gnuradio/digital/clock_recovery_mm_ff.h        |  78 ++++
 .../include/gnuradio/digital/cma_equalizer_cc.h    |  75 ++++
 .../include/gnuradio/digital/constellation.h       | 478 +++++++++++++++++++++
 .../gnuradio/digital/constellation_decoder_cb.h    |  62 +++
 .../gnuradio/digital/constellation_receiver_cb.h   |  72 ++++
 .../gnuradio/digital/correlate_access_code_bb.h    |  75 ++++
 .../digital/correlate_access_code_tag_bb.h         |  71 +++
 .../include/gnuradio/digital/costas_loop_cc.h      |  78 ++++
 gr-digital/include/gnuradio/digital/cpmmod_bc.h    | 117 +++++
 gr-digital/include/gnuradio/digital/crc32.h        |  58 +++
 gr-digital/include/gnuradio/digital/crc32_bb.h     |  61 +++
 .../include/gnuradio/digital/descrambler_bb.h      |  60 +++
 .../include/gnuradio/digital/diff_decoder_bb.h     |  57 +++
 .../include/gnuradio/digital/diff_encoder_bb.h     |  57 +++
 .../include/gnuradio/digital/diff_phasor_cc.h      |  57 +++
 .../include/gnuradio/digital/fll_band_edge_cc.h    | 179 ++++++++
 .../include/gnuradio/digital/framer_sink_1.h       |  68 +++
 gr-digital/include/gnuradio/digital/glfsr.h        |  65 +++
 .../include/gnuradio/digital/glfsr_source_b.h      |  63 +++
 .../include/gnuradio/digital/glfsr_source_f.h      |  63 +++
 .../gnuradio/digital/header_payload_demux.h        |  91 ++++
 .../gnuradio/digital/kurtotic_equalizer_cc.h       |  63 +++
 gr-digital/include/gnuradio/digital/lfsr.h         | 163 +++++++
 .../include/gnuradio/digital/lms_dd_equalizer_cc.h | 101 +++++
 gr-digital/include/gnuradio/digital/map_bb.h       |  63 +++
 gr-digital/include/gnuradio/digital/metric_type.h  |  37 ++
 .../include/gnuradio/digital/mpsk_receiver_cc.h    | 144 +++++++
 gr-digital/include/gnuradio/digital/mpsk_snr_est.h | 288 +++++++++++++
 .../include/gnuradio/digital/mpsk_snr_est_cc.h     |  96 +++++
 .../gnuradio/digital/ofdm_carrier_allocator_cvc.h  | 108 +++++
 .../include/gnuradio/digital/ofdm_chanest_vcvc.h   |  96 +++++
 .../gnuradio/digital/ofdm_cyclic_prefixer.h        |  72 ++++
 .../include/gnuradio/digital/ofdm_equalizer_base.h | 109 +++++
 .../gnuradio/digital/ofdm_equalizer_simpledfe.h    | 131 ++++++
 .../gnuradio/digital/ofdm_equalizer_static.h       | 103 +++++
 .../gnuradio/digital/ofdm_frame_acquisition.h      |  82 ++++
 .../gnuradio/digital/ofdm_frame_equalizer_vcvc.h   |  64 +++
 .../include/gnuradio/digital/ofdm_frame_sink.h     |  71 +++
 .../gnuradio/digital/ofdm_insert_preamble.h        |  79 ++++
 .../include/gnuradio/digital/ofdm_mapper_bcv.h     |  67 +++
 gr-digital/include/gnuradio/digital/ofdm_sampler.h |  57 +++
 .../include/gnuradio/digital/ofdm_serializer_vcc.h |  92 ++++
 .../include/gnuradio/digital/ofdm_sync_sc_cfb.h    |  79 ++++
 .../gnuradio/digital/packet_header_default.h       | 113 +++++
 .../include/gnuradio/digital/packet_header_ofdm.h  | 102 +++++
 .../gnuradio/digital/packet_headergenerator_bb.h   |  73 ++++
 .../gnuradio/digital/packet_headerparser_b.h       |  71 +++
 gr-digital/include/gnuradio/digital/packet_sink.h  |  80 ++++
 .../include/gnuradio/digital/pfb_clock_sync_ccf.h  | 330 ++++++++++++++
 .../include/gnuradio/digital/pfb_clock_sync_fff.h  | 316 ++++++++++++++
 .../include/gnuradio/digital/pn_correlator_cc.h    |  63 +++
 .../include/gnuradio/digital/probe_density_b.h     |  68 +++
 .../gnuradio/digital/probe_mpsk_snr_est_c.h        |  95 ++++
 gr-digital/include/gnuradio/digital/scrambler_bb.h |  60 +++
 .../include/gnuradio/digital/simple_correlator.h   |  49 +++
 .../include/gnuradio/digital/simple_framer.h       |  59 +++
 .../include/gnuradio/digital/simple_framer_sync.h  |  56 +++
 gr-digital/lib/additive_scrambler_bb_impl.h        |   4 +-
 gr-digital/lib/binary_slicer_fb_impl.h             |   2 +-
 gr-digital/lib/chunks_to_symbols_XX_impl.h.t       |   2 +-
 gr-digital/lib/clock_recovery_mm_cc_impl.h         |   2 +-
 gr-digital/lib/clock_recovery_mm_ff_impl.h         |   2 +-
 gr-digital/lib/cma_equalizer_cc_impl.h             |   2 +-
 gr-digital/lib/constellation.cc                    |   2 +-
 gr-digital/lib/constellation_decoder_cb_impl.h     |   2 +-
 gr-digital/lib/constellation_receiver_cb_impl.h    |   2 +-
 gr-digital/lib/correlate_access_code_bb_impl.h     |   2 +-
 gr-digital/lib/correlate_access_code_tag_bb_impl.h |   2 +-
 gr-digital/lib/costas_loop_cc_impl.h               |   2 +-
 gr-digital/lib/cpmmod_bc_impl.h                    |   2 +-
 gr-digital/lib/crc32.cc                            |   2 +-
 gr-digital/lib/crc32_bb_impl.cc                    |   2 +-
 gr-digital/lib/crc32_bb_impl.h                     |   2 +-
 gr-digital/lib/descrambler_bb_impl.h               |   4 +-
 gr-digital/lib/diff_decoder_bb_impl.h              |   2 +-
 gr-digital/lib/diff_encoder_bb_impl.h              |   2 +-
 gr-digital/lib/diff_phasor_cc_impl.h               |   2 +-
 gr-digital/lib/fll_band_edge_cc_impl.h             |   2 +-
 gr-digital/lib/framer_sink_1_impl.h                |   2 +-
 gr-digital/lib/glfsr.cc                            |   2 +-
 gr-digital/lib/glfsr_source_b_impl.h               |   4 +-
 gr-digital/lib/glfsr_source_f_impl.h               |   4 +-
 gr-digital/lib/header_payload_demux_impl.h         |   2 +-
 gr-digital/lib/kurtotic_equalizer_cc_impl.h        |   2 +-
 gr-digital/lib/lms_dd_equalizer_cc_impl.h          |   2 +-
 gr-digital/lib/map_bb_impl.h                       |   2 +-
 gr-digital/lib/mpsk_receiver_cc_impl.h             |   2 +-
 gr-digital/lib/mpsk_snr_est.cc                     |   2 +-
 gr-digital/lib/mpsk_snr_est_cc_impl.h              |   4 +-
 gr-digital/lib/ofdm_carrier_allocator_cvc_impl.h   |   2 +-
 gr-digital/lib/ofdm_chanest_vcvc_impl.h            |   2 +-
 gr-digital/lib/ofdm_cyclic_prefixer_impl.h         |   2 +-
 gr-digital/lib/ofdm_equalizer_base.cc              |   2 +-
 gr-digital/lib/ofdm_equalizer_simpledfe.cc         |   2 +-
 gr-digital/lib/ofdm_equalizer_static.cc            |   2 +-
 gr-digital/lib/ofdm_frame_acquisition_impl.h       |   2 +-
 gr-digital/lib/ofdm_frame_equalizer_vcvc_impl.h    |   2 +-
 gr-digital/lib/ofdm_frame_sink_impl.h              |   2 +-
 gr-digital/lib/ofdm_insert_preamble_impl.h         |   2 +-
 gr-digital/lib/ofdm_mapper_bcv_impl.h              |   2 +-
 gr-digital/lib/ofdm_sampler_impl.h                 |   2 +-
 gr-digital/lib/ofdm_serializer_vcc_impl.h          |   2 +-
 gr-digital/lib/ofdm_sync_sc_cfb_impl.h             |   2 +-
 gr-digital/lib/packet_header_default.cc            |   2 +-
 gr-digital/lib/packet_header_ofdm.cc               |   2 +-
 gr-digital/lib/packet_headergenerator_bb_impl.h    |   2 +-
 gr-digital/lib/packet_headerparser_b_impl.h        |   2 +-
 gr-digital/lib/packet_sink_impl.h                  |   2 +-
 gr-digital/lib/pfb_clock_sync_ccf_impl.h           |   2 +-
 gr-digital/lib/pfb_clock_sync_fff_impl.h           |   2 +-
 gr-digital/lib/pn_correlator_cc_impl.h             |   4 +-
 gr-digital/lib/probe_density_b_impl.h              |   2 +-
 gr-digital/lib/probe_mpsk_snr_est_c_impl.h         |   2 +-
 gr-digital/lib/scrambler_bb_impl.h                 |   4 +-
 gr-digital/lib/simple_correlator_impl.cc           |   2 +-
 gr-digital/lib/simple_correlator_impl.h            |   2 +-
 gr-digital/lib/simple_framer_impl.cc               |   2 +-
 gr-digital/lib/simple_framer_impl.h                |   2 +-
 gr-digital/swig/CMakeLists.txt                     |   2 +-
 gr-digital/swig/digital_swig.i                     | 262 +++++------
 gr-trellis/include/trellis/calc_metric.h           |   2 +-
 .../include/trellis/constellation_metrics_cf.h     |   4 +-
 gr-trellis/include/trellis/core_algorithms.h       |   2 +-
 gr-trellis/swig/trellis_swig.i                     |   4 +-
 194 files changed, 6354 insertions(+), 6354 deletions(-)
 delete mode 100644 gr-digital/include/digital/CMakeLists.txt
 delete mode 100644 gr-digital/include/digital/additive_scrambler_bb.h
 delete mode 100644 gr-digital/include/digital/api.h
 delete mode 100644 gr-digital/include/digital/binary_slicer_fb.h
 delete mode 100644 gr-digital/include/digital/chunks_to_symbols_XX.h.t
 delete mode 100644 gr-digital/include/digital/clock_recovery_mm_cc.h
 delete mode 100644 gr-digital/include/digital/clock_recovery_mm_ff.h
 delete mode 100644 gr-digital/include/digital/cma_equalizer_cc.h
 delete mode 100644 gr-digital/include/digital/constellation.h
 delete mode 100644 gr-digital/include/digital/constellation_decoder_cb.h
 delete mode 100644 gr-digital/include/digital/constellation_receiver_cb.h
 delete mode 100644 gr-digital/include/digital/correlate_access_code_bb.h
 delete mode 100644 gr-digital/include/digital/correlate_access_code_tag_bb.h
 delete mode 100644 gr-digital/include/digital/costas_loop_cc.h
 delete mode 100644 gr-digital/include/digital/cpmmod_bc.h
 delete mode 100644 gr-digital/include/digital/crc32.h
 delete mode 100644 gr-digital/include/digital/crc32_bb.h
 delete mode 100644 gr-digital/include/digital/descrambler_bb.h
 delete mode 100644 gr-digital/include/digital/diff_decoder_bb.h
 delete mode 100644 gr-digital/include/digital/diff_encoder_bb.h
 delete mode 100644 gr-digital/include/digital/diff_phasor_cc.h
 delete mode 100644 gr-digital/include/digital/fll_band_edge_cc.h
 delete mode 100644 gr-digital/include/digital/framer_sink_1.h
 delete mode 100644 gr-digital/include/digital/glfsr.h
 delete mode 100644 gr-digital/include/digital/glfsr_source_b.h
 delete mode 100644 gr-digital/include/digital/glfsr_source_f.h
 delete mode 100644 gr-digital/include/digital/header_payload_demux.h
 delete mode 100644 gr-digital/include/digital/kurtotic_equalizer_cc.h
 delete mode 100644 gr-digital/include/digital/lfsr.h
 delete mode 100644 gr-digital/include/digital/lms_dd_equalizer_cc.h
 delete mode 100644 gr-digital/include/digital/map_bb.h
 delete mode 100644 gr-digital/include/digital/metric_type.h
 delete mode 100644 gr-digital/include/digital/mpsk_receiver_cc.h
 delete mode 100644 gr-digital/include/digital/mpsk_snr_est.h
 delete mode 100644 gr-digital/include/digital/mpsk_snr_est_cc.h
 delete mode 100644 gr-digital/include/digital/ofdm_carrier_allocator_cvc.h
 delete mode 100644 gr-digital/include/digital/ofdm_chanest_vcvc.h
 delete mode 100644 gr-digital/include/digital/ofdm_cyclic_prefixer.h
 delete mode 100644 gr-digital/include/digital/ofdm_equalizer_base.h
 delete mode 100644 gr-digital/include/digital/ofdm_equalizer_simpledfe.h
 delete mode 100644 gr-digital/include/digital/ofdm_equalizer_static.h
 delete mode 100644 gr-digital/include/digital/ofdm_frame_acquisition.h
 delete mode 100644 gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h
 delete mode 100644 gr-digital/include/digital/ofdm_frame_sink.h
 delete mode 100644 gr-digital/include/digital/ofdm_insert_preamble.h
 delete mode 100644 gr-digital/include/digital/ofdm_mapper_bcv.h
 delete mode 100644 gr-digital/include/digital/ofdm_sampler.h
 delete mode 100644 gr-digital/include/digital/ofdm_serializer_vcc.h
 delete mode 100644 gr-digital/include/digital/ofdm_sync_sc_cfb.h
 delete mode 100644 gr-digital/include/digital/packet_header_default.h
 delete mode 100644 gr-digital/include/digital/packet_header_ofdm.h
 delete mode 100644 gr-digital/include/digital/packet_headergenerator_bb.h
 delete mode 100644 gr-digital/include/digital/packet_headerparser_b.h
 delete mode 100644 gr-digital/include/digital/packet_sink.h
 delete mode 100644 gr-digital/include/digital/pfb_clock_sync_ccf.h
 delete mode 100644 gr-digital/include/digital/pfb_clock_sync_fff.h
 delete mode 100644 gr-digital/include/digital/pn_correlator_cc.h
 delete mode 100644 gr-digital/include/digital/probe_density_b.h
 delete mode 100644 gr-digital/include/digital/probe_mpsk_snr_est_c.h
 delete mode 100644 gr-digital/include/digital/scrambler_bb.h
 delete mode 100644 gr-digital/include/digital/simple_correlator.h
 delete mode 100644 gr-digital/include/digital/simple_framer.h
 delete mode 100644 gr-digital/include/digital/simple_framer_sync.h
 create mode 100644 gr-digital/include/gnuradio/digital/CMakeLists.txt
 create mode 100644 gr-digital/include/gnuradio/digital/additive_scrambler_bb.h
 create mode 100644 gr-digital/include/gnuradio/digital/api.h
 create mode 100644 gr-digital/include/gnuradio/digital/binary_slicer_fb.h
 create mode 100644 gr-digital/include/gnuradio/digital/chunks_to_symbols_XX.h.t
 create mode 100644 gr-digital/include/gnuradio/digital/clock_recovery_mm_cc.h
 create mode 100644 gr-digital/include/gnuradio/digital/clock_recovery_mm_ff.h
 create mode 100644 gr-digital/include/gnuradio/digital/cma_equalizer_cc.h
 create mode 100644 gr-digital/include/gnuradio/digital/constellation.h
 create mode 100644 gr-digital/include/gnuradio/digital/constellation_decoder_cb.h
 create mode 100644 gr-digital/include/gnuradio/digital/constellation_receiver_cb.h
 create mode 100644 gr-digital/include/gnuradio/digital/correlate_access_code_bb.h
 create mode 100644 gr-digital/include/gnuradio/digital/correlate_access_code_tag_bb.h
 create mode 100644 gr-digital/include/gnuradio/digital/costas_loop_cc.h
 create mode 100644 gr-digital/include/gnuradio/digital/cpmmod_bc.h
 create mode 100644 gr-digital/include/gnuradio/digital/crc32.h
 create mode 100644 gr-digital/include/gnuradio/digital/crc32_bb.h
 create mode 100644 gr-digital/include/gnuradio/digital/descrambler_bb.h
 create mode 100644 gr-digital/include/gnuradio/digital/diff_decoder_bb.h
 create mode 100644 gr-digital/include/gnuradio/digital/diff_encoder_bb.h
 create mode 100644 gr-digital/include/gnuradio/digital/diff_phasor_cc.h
 create mode 100644 gr-digital/include/gnuradio/digital/fll_band_edge_cc.h
 create mode 100644 gr-digital/include/gnuradio/digital/framer_sink_1.h
 create mode 100644 gr-digital/include/gnuradio/digital/glfsr.h
 create mode 100644 gr-digital/include/gnuradio/digital/glfsr_source_b.h
 create mode 100644 gr-digital/include/gnuradio/digital/glfsr_source_f.h
 create mode 100644 gr-digital/include/gnuradio/digital/header_payload_demux.h
 create mode 100644 gr-digital/include/gnuradio/digital/kurtotic_equalizer_cc.h
 create mode 100644 gr-digital/include/gnuradio/digital/lfsr.h
 create mode 100644 gr-digital/include/gnuradio/digital/lms_dd_equalizer_cc.h
 create mode 100644 gr-digital/include/gnuradio/digital/map_bb.h
 create mode 100644 gr-digital/include/gnuradio/digital/metric_type.h
 create mode 100644 gr-digital/include/gnuradio/digital/mpsk_receiver_cc.h
 create mode 100644 gr-digital/include/gnuradio/digital/mpsk_snr_est.h
 create mode 100644 gr-digital/include/gnuradio/digital/mpsk_snr_est_cc.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_carrier_allocator_cvc.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_chanest_vcvc.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_cyclic_prefixer.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_equalizer_base.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_equalizer_simpledfe.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_equalizer_static.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_frame_acquisition.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_frame_equalizer_vcvc.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_frame_sink.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_insert_preamble.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_mapper_bcv.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_sampler.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_serializer_vcc.h
 create mode 100644 gr-digital/include/gnuradio/digital/ofdm_sync_sc_cfb.h
 create mode 100644 gr-digital/include/gnuradio/digital/packet_header_default.h
 create mode 100644 gr-digital/include/gnuradio/digital/packet_header_ofdm.h
 create mode 100644 gr-digital/include/gnuradio/digital/packet_headergenerator_bb.h
 create mode 100644 gr-digital/include/gnuradio/digital/packet_headerparser_b.h
 create mode 100644 gr-digital/include/gnuradio/digital/packet_sink.h
 create mode 100644 gr-digital/include/gnuradio/digital/pfb_clock_sync_ccf.h
 create mode 100644 gr-digital/include/gnuradio/digital/pfb_clock_sync_fff.h
 create mode 100644 gr-digital/include/gnuradio/digital/pn_correlator_cc.h
 create mode 100644 gr-digital/include/gnuradio/digital/probe_density_b.h
 create mode 100644 gr-digital/include/gnuradio/digital/probe_mpsk_snr_est_c.h
 create mode 100644 gr-digital/include/gnuradio/digital/scrambler_bb.h
 create mode 100644 gr-digital/include/gnuradio/digital/simple_correlator.h
 create mode 100644 gr-digital/include/gnuradio/digital/simple_framer.h
 create mode 100644 gr-digital/include/gnuradio/digital/simple_framer_sync.h

(limited to 'gr-digital/lib/diff_phasor_cc_impl.h')

diff --git a/gr-digital/CMakeLists.txt b/gr-digital/CMakeLists.txt
index 7d5a7541d1..4c7647a4db 100644
--- a/gr-digital/CMakeLists.txt
+++ b/gr-digital/CMakeLists.txt
@@ -91,7 +91,7 @@ CPACK_COMPONENT("digital_swig"
 ########################################################################
 # Add subdirectories
 ########################################################################
-add_subdirectory(include/digital)
+add_subdirectory(include/gnuradio/digital)
 add_subdirectory(lib)
 add_subdirectory(doc)
 if(ENABLE_PYTHON)
diff --git a/gr-digital/include/digital/CMakeLists.txt b/gr-digital/include/digital/CMakeLists.txt
deleted file mode 100644
index 275da16d87..0000000000
--- a/gr-digital/include/digital/CMakeLists.txt
+++ /dev/null
@@ -1,143 +0,0 @@
-# Copyright 2011,2012 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-
-########################################################################
-# generate helper scripts to expand templated files
-########################################################################
-include(GrPython)
-
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/generate_helper.py "
-#!${PYTHON_EXECUTABLE}
-
-import sys, os, re
-sys.path.append('${GR_RUNTIME_PYTHONPATH}')
-os.environ['srcdir'] = '${CMAKE_CURRENT_SOURCE_DIR}'
-os.chdir('${CMAKE_CURRENT_BINARY_DIR}')
-
-if __name__ == '__main__':
-    import build_utils
-    root, inp = sys.argv[1:3]
-    for sig in sys.argv[3:]:
-        name = re.sub ('X+', sig, root)
-        d = build_utils.standard_dict2(name, sig, 'digital')
-        build_utils.expand_template(d, inp)
-
-")
-
-macro(expand_h root)
-  #make a list of all the generated files
-  unset(expanded_files_h)
-  foreach(sig ${ARGN})
-    string(REGEX REPLACE "X+" ${sig} name ${root})
-    list(APPEND expanded_files_h ${CMAKE_CURRENT_BINARY_DIR}/${name}.h)
-  endforeach(sig)
-  
-  #create a command to generate the files
-  add_custom_command(
-    OUTPUT ${expanded_files_h}
-    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${root}.h.t
-    COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B}
-    ${CMAKE_CURRENT_BINARY_DIR}/generate_helper.py
-    ${root} ${root}.h.t ${ARGN}
-    )
-
-  #install rules for the generated h files
-  list(APPEND generated_includes ${expanded_files_h})
-endmacro(expand_h)
-
-########################################################################
-# Invoke macro to generate various sources
-#######################################################################
-expand_h(chunks_to_symbols_XX     bf bc sf sc if ic)
-
-add_custom_target(digital_generated_includes DEPENDS
-    ${generated_includes}
-)
-
-########################################################################
-# Install header files
-########################################################################
-install(FILES
-    ${generated_includes}
-    additive_scrambler_bb.h
-    api.h
-    binary_slicer_fb.h
-    clock_recovery_mm_cc.h
-    clock_recovery_mm_ff.h
-    cma_equalizer_cc.h
-    constellation.h
-    constellation_decoder_cb.h
-    constellation_receiver_cb.h
-    correlate_access_code_bb.h
-    correlate_access_code_tag_bb.h
-    costas_loop_cc.h
-    cpmmod_bc.h
-    crc32.h
-    crc32_bb.h
-    descrambler_bb.h
-    diff_decoder_bb.h
-    diff_encoder_bb.h
-    diff_phasor_cc.h
-    fll_band_edge_cc.h
-    framer_sink_1.h
-    glfsr.h
-    glfsr_source_b.h
-    glfsr_source_f.h
-    header_payload_demux.h
-    kurtotic_equalizer_cc.h
-    lfsr.h
-    lms_dd_equalizer_cc.h
-    map_bb.h
-    metric_type.h
-    mpsk_receiver_cc.h
-    mpsk_snr_est.h
-    mpsk_snr_est_cc.h
-    ofdm_carrier_allocator_cvc.h
-    ofdm_chanest_vcvc.h
-    ofdm_cyclic_prefixer.h
-    ofdm_equalizer_base.h
-    ofdm_equalizer_simpledfe.h
-    ofdm_equalizer_static.h
-    ofdm_frame_acquisition.h
-    ofdm_frame_equalizer_vcvc.h
-    ofdm_frame_sink.h
-    ofdm_insert_preamble.h
-    ofdm_mapper_bcv.h
-    ofdm_sampler.h
-    ofdm_serializer_vcc.h
-    ofdm_sync_sc_cfb.h
-    packet_header_default.h
-    packet_header_ofdm.h
-    packet_headergenerator_bb.h
-    packet_headerparser_b.h
-    packet_sink.h
-    pfb_clock_sync_ccf.h
-    pfb_clock_sync_fff.h
-    pn_correlator_cc.h
-    probe_density_b.h
-    probe_mpsk_snr_est_c.h
-    scrambler_bb.h
-    simple_correlator.h
-    simple_framer.h
-    simple_framer_sync.h
-    header_payload_demux.h
-    DESTINATION ${GR_INCLUDE_DIR}/gnuradio/digital
-    COMPONENT "digital_devel"
-)
-
diff --git a/gr-digital/include/digital/additive_scrambler_bb.h b/gr-digital/include/digital/additive_scrambler_bb.h
deleted file mode 100644
index 9f0493b756..0000000000
--- a/gr-digital/include/digital/additive_scrambler_bb.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2008,2010,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_ADDITIVE_SCRAMBLER_BB_H
-#define INCLUDED_DIGITAL_ADDITIVE_SCRAMBLER_BB_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-    
-    /*!
-     * \ingroup coding_blk
-     *
-     * \brief
-     * Scramble an input stream using an LFSR.
-     *
-     * \details
-     * This block works on the LSB only of the input data stream,
-     * i.e., on an "unpacked binary" stream, and produces the same
-     * format on its output.
-     *
-     * The scrambler works by XORing the incoming bit stream by the
-     * output of the LFSR. Optionally, after 'count' bits have been
-     * processed, the shift register is reset to the seed value.
-     * This allows processing fixed length vectors of samples.
-     */
-    class DIGITAL_API additive_scrambler_bb : virtual public sync_block
-    {
-    public:
-      // gr::digital::additive_scrambler_bb::sptr
-      typedef boost::shared_ptr<additive_scrambler_bb> sptr;
-
-      /*!
-       * \brief Create additive scrambler.
-       *
-       * \param mask   Polynomial mask for LFSR
-       * \param seed   Initial shift register contents
-       * \param len    Shift register length
-       * \param count  Number of bits after which shift register is reset, 0=never
-       *
-       */
-      static sptr make(int mask, int seed, int len, int count=0);
-
-      virtual int mask() const = 0;
-      virtual int seed() const = 0;
-      virtual int len() const = 0;
-      virtual int count() const = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_ADDITIVE_SCRAMBLER_BB_H */
diff --git a/gr-digital/include/digital/api.h b/gr-digital/include/digital/api.h
deleted file mode 100644
index 71ca19ad58..0000000000
--- a/gr-digital/include/digital/api.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2011 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_API_H
-#define INCLUDED_DIGITAL_API_H
-
-#include <gnuradio/attributes.h>
-
-#ifdef gnuradio_digital_EXPORTS
-#  define DIGITAL_API __GR_ATTR_EXPORT
-#else
-#  define DIGITAL_API __GR_ATTR_IMPORT
-#endif
-
-#endif /* INCLUDED_DIGITAL_API_H */
diff --git a/gr-digital/include/digital/binary_slicer_fb.h b/gr-digital/include/digital/binary_slicer_fb.h
deleted file mode 100644
index 2d5bf6e51d..0000000000
--- a/gr-digital/include/digital/binary_slicer_fb.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_BINARY_SLICER_FB_H
-#define INCLUDED_DIGITAL_BINARY_SLICER_FB_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-    
-    /*!
-     * \brief slice float binary symbol outputting 1 bit output
-     * \ingroup symbol_coding_blk
-     *
-     * \details
-     * x <  0 --> 0
-     * x >= 0 --> 1
-     */
-    class DIGITAL_API binary_slicer_fb : virtual public sync_block
-    {
-    public:
-      // gr::digital::binary_slicer_fb::sptr
-      typedef boost::shared_ptr<binary_slicer_fb> sptr;
-
-      /*!
-       * \brief Make binary symbol slicer block.
-       */
-      static sptr make();
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_BINARY_SLICER_FB_H */
diff --git a/gr-digital/include/digital/chunks_to_symbols_XX.h.t b/gr-digital/include/digital/chunks_to_symbols_XX.h.t
deleted file mode 100644
index 5d25e68943..0000000000
--- a/gr-digital/include/digital/chunks_to_symbols_XX.h.t
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-/* @WARNING@ */
-
-#ifndef @GUARD_NAME@
-#define @GUARD_NAME@
-
-#include <digital/api.h>
-#include <gnuradio/sync_interpolator.h>
-
-namespace gr {
-  namespace digital {
-    
-    /*!
-     * \brief Map a stream of symbol indexes (unpacked bytes or
-     * shorts) to stream of float or complex constellation points in D
-     * dimensions (D = 1 by default)
-     * \ingroup converter_blk
-     *
-     * input: stream of @I_TYPE@; output: stream of @O_TYPE@
-     *
-     * out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1
-     *
-     * The combination of gr::blocks::packed_to_unpacked_XX followed by
-     * digital_chunks_to_symbols_XY handles the general case of mapping
-     * from a stream of bytes or shorts into arbitrary float
-     * or complex symbols.
-     *
-     * \sa gr::blocks::packed_to_unpacked_bb, gr::blocks::unpacked_to_packed_bb,
-     * \sa gr::blocks::packed_to_unpacked_ss, gr::blocks::unpacked_to_packed_ss,
-     * \sa gr::digital::chunks_to_symbols_bf, gr::digital::chunks_to_symbols_bc.
-     * \sa gr::digital::chunks_to_symbols_sf, gr::digital::chunks_to_symbols_sc.
-     */
-
-    class DIGITAL_API @NAME@ : virtual public sync_interpolator
-    {
-    public:
-      // gr::digital::@BASE_NAME@::sptr
-      typedef boost::shared_ptr<@BASE_NAME@> sptr;
-
-      /*!
-       * Make a chunks-to-symbols block.
-       *
-       * \param symbol_table: list that maps chunks to symbols.
-       * \param D: dimension of table.
-       */
-      static sptr make(const std::vector<@O_TYPE@> &symbol_table, const int D = 1);
-
-      virtual int D() const = 0;
-      virtual std::vector<@O_TYPE@> symbol_table() const = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* @GUARD_NAME@ */
diff --git a/gr-digital/include/digital/clock_recovery_mm_cc.h b/gr-digital/include/digital/clock_recovery_mm_cc.h
deleted file mode 100644
index e2c948ac4d..0000000000
--- a/gr-digital/include/digital/clock_recovery_mm_cc.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2011,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_CC_H
-#define	INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_CC_H
-
-#include <digital/api.h>
-#include <gnuradio/block.h>
-
-namespace gr {
-  namespace digital {
-    
-    /*!
-     * \brief Mueller and Müller (M&M) based clock recovery block with complex input, complex output.
-     * \ingroup synchronizers_blk
-     *
-     * \details
-     * This implements the Mueller and Müller (M&M) discrete-time
-     * error-tracking synchronizer.
-     *
-     * The complex version here is based on: Modified Mueller and
-     * Muller clock recovery circuit:
-     *
-     *    G. R. Danesfahani, T.G. Jeans, "Optimisation of modified Mueller
-     *    and Muller algorithm," Electronics Letters, Vol. 31, no. 13, 22
-     *    June 1995, pp. 1032 - 1033.
-     */
-    class DIGITAL_API clock_recovery_mm_cc : virtual public block
-    {
-    public:
-      // gr::digital::clock_recovery_mm_cc::sptr
-      typedef boost::shared_ptr<clock_recovery_mm_cc> sptr;
-
-      /*!
-       * Make a M&M clock recovery block.
-       *
-       * \param omega Initial estimate of samples per symbol
-       * \param gain_omega Gain setting for omega update loop
-       * \param mu Initial estimate of phase of sample
-       * \param gain_mu Gain setting for mu update loop
-       * \param omega_relative_limit limit on omega
-       */
-      static sptr make(float omega, float gain_omega,
-		       float mu, float gain_mu,
-		       float omega_relative_limit);
-
-      virtual float mu() const = 0;
-      virtual float omega() const = 0;
-      virtual float gain_mu() const = 0;
-      virtual float gain_omega() const = 0;
-
-      virtual void set_verbose(bool verbose) = 0;
-      virtual void set_gain_mu (float gain_mu) = 0;
-      virtual void set_gain_omega (float gain_omega) = 0;
-      virtual void set_mu (float mu) = 0;
-      virtual void set_omega (float omega) = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_CC_H */
diff --git a/gr-digital/include/digital/clock_recovery_mm_ff.h b/gr-digital/include/digital/clock_recovery_mm_ff.h
deleted file mode 100644
index e5a229c704..0000000000
--- a/gr-digital/include/digital/clock_recovery_mm_ff.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2011,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_FF_H
-#define	INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_FF_H
-
-#include <digital/api.h>
-#include <gnuradio/block.h>
-
-namespace gr {
-  namespace digital {
-    
-    /*!
-     * \brief Mueller and Müller (M&M) based clock recovery block with float input, float output.
-     * \ingroup synchronizers_blk
-     *
-     * \details
-     * This implements the Mueller and Müller (M&M) discrete-time
-     * error-tracking synchronizer.
-     *
-     * See "Digital Communication Receivers: Synchronization, Channel
-     * Estimation and Signal Processing" by Heinrich Meyr, Marc
-     * Moeneclaey, & Stefan Fechtel.  ISBN 0-471-50275-8.
-     */
-    class DIGITAL_API clock_recovery_mm_ff : virtual public block
-    {
-    public:
-      // gr::digital::clock_recovery_mm_ff::sptr
-      typedef boost::shared_ptr<clock_recovery_mm_ff> sptr;
-
-      /*!
-       * Make a M&M clock recovery block.
-       *
-       * \param omega Initial estimate of samples per symbol
-       * \param gain_omega Gain setting for omega update loop
-       * \param mu Initial estimate of phase of sample
-       * \param gain_mu Gain setting for mu update loop
-       * \param omega_relative_limit limit on omega
-       */
-      static sptr make(float omega, float gain_omega,
-		       float mu, float gain_mu,
-		       float omega_relative_limit);
-      
-      virtual float mu() const = 0;
-      virtual float omega() const = 0;
-      virtual float gain_mu() const = 0;
-      virtual float gain_omega() const = 0;
-
-      virtual void set_verbose(bool verbose) = 0;
-      virtual void set_gain_mu (float gain_mu) = 0;
-      virtual void set_gain_omega (float gain_omega) = 0;
-      virtual void set_mu (float mu) = 0;
-      virtual void set_omega (float omega) = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_FF_H */
diff --git a/gr-digital/include/digital/cma_equalizer_cc.h b/gr-digital/include/digital/cma_equalizer_cc.h
deleted file mode 100644
index bfe851e689..0000000000
--- a/gr-digital/include/digital/cma_equalizer_cc.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H
-#define	INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_decimator.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Implements constant modulus adaptive filter on complex stream
-     * \ingroup equalizers_blk
-     *
-     * \details
-     * The error value and tap update equations (for p=2) can be found in:
-     *
-     * D. Godard, "Self-Recovering Equalization and Carrier Tracking
-     * in Two-Dimensional Data Communication Systems," IEEE
-     * Transactions on Communications, Vol. 28, No. 11, pp. 1867 -
-     * 1875, 1980.
-     */
-    class DIGITAL_API cma_equalizer_cc: virtual public sync_decimator
-    {
-    protected:
-      virtual gr_complex error(const gr_complex &out) = 0;
-      virtual void update_tap(gr_complex &tap, const gr_complex &in) = 0;
-  
-    public:
-      // gr::digital::cma_equalizer_cc::sptr
-      typedef boost::shared_ptr<cma_equalizer_cc> sptr;
-
-      /*!
-       * Make a CMA Equalizer block
-       *
-       * \param num_taps Numer of taps in the equalizer (channel size)
-       * \param modulus Modulus of the modulated signals
-       * \param mu Gain of the update loop
-       * \param sps Number of samples per symbol of the input signal
-       */
-      static sptr make(int num_taps, float modulus, float mu, int sps);
-
-      virtual void set_taps(const std::vector<gr_complex> &taps) = 0;
-      virtual std::vector<gr_complex> taps() const = 0;
-      virtual float gain() const = 0;
-      virtual void set_gain(float mu) = 0;
-      virtual float modulus() const = 0;
-      virtual void set_modulus(float mod) = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H */
diff --git a/gr-digital/include/digital/constellation.h b/gr-digital/include/digital/constellation.h
deleted file mode 100644
index d81cac478e..0000000000
--- a/gr-digital/include/digital/constellation.h
+++ /dev/null
@@ -1,478 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2010-2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_CONSTELLATION_H
-#define	INCLUDED_DIGITAL_CONSTELLATION_H
-
-#include <digital/api.h>
-#include <digital/metric_type.h>
-#include <boost/enable_shared_from_this.hpp>
-#include <gnuradio/gr_complex.h>
-#include <vector>
-
-namespace gr {
-  namespace digital {
-
-    /************************************************************/
-    /* constellation                                            */
-    /*                                                          */
-    /* Base class defining interface.                           */
-    /************************************************************/
-    
-    class constellation;
-    typedef boost::shared_ptr<constellation> constellation_sptr;
-
-    /*!
-     * \brief An abstracted constellation object
-     * \ingroup symbol_coding_blk
-     *
-     * \details
-     * The constellation objects hold the necessary information to pass
-     * around constellation information for modulators and
-     * demodulators. These objects contain the mapping between the bits
-     * and the constellation points used to represent them as well as
-     * methods for slicing the symbol space. Various implementations are
-     * possible for efficiency and ease of use.
-     *
-     * Standard constellations (BPSK, QPSK, QAM, etc) can be inherited
-     * from this class and overloaded to perform optimized slicing and
-     * constellation mappings.
-     */
-    class DIGITAL_API constellation
-      : public boost::enable_shared_from_this<constellation>
-    {
-    public:
-      constellation(std::vector<gr_complex> constell,
-		    std::vector<int> pre_diff_code,
-		    unsigned int rotational_symmetry,
-		    unsigned int dimensionality);
-      constellation();
-      virtual ~constellation();
-
-      //! Returns the constellation points for a symbol value
-      void map_to_points(unsigned int value, gr_complex *points);
-      std::vector<gr_complex> map_to_points_v(unsigned int value);
-
-      //! Returns the constellation point that matches best.
-      virtual unsigned int decision_maker(const gr_complex *sample) = 0;
-      //! Takes a vector rather than a pointer.  Better for SWIG wrapping.
-      unsigned int decision_maker_v(std::vector<gr_complex> sample);
-      //! Also calculates the phase error.
-      unsigned int decision_maker_pe(const gr_complex *sample, float *phase_error);
-      //! Calculates distance.
-      //unsigned int decision_maker_e(const gr_complex *sample, float *error);
-  
-      //! Calculates metrics for all points in the constellation.
-      //! For use with the viterbi algorithm.
-      virtual void calc_metric(const gr_complex *sample, float *metric, gr::digital::trellis_metric_type_t type);
-      virtual void calc_euclidean_metric(const gr_complex *sample, float *metric);
-      virtual void calc_hard_symbol_metric(const gr_complex *sample, float *metric);
-  
-      //! Returns the set of points in this constellation.
-      std::vector<gr_complex> points() { return d_constellation;}
-      //! Returns the vector of points in this constellation.
-      //! Raise error if dimensionality is not one.
-      std::vector<gr_complex> s_points();
-      //! Returns a vector of vectors of points.
-      std::vector<std::vector<gr_complex> > v_points();
-      //! Whether to apply an encoding before doing differential encoding. (e.g. gray coding)
-      bool apply_pre_diff_code() { return d_apply_pre_diff_code;}
-      //! Whether to apply an encoding before doing differential encoding. (e.g. gray coding)
-      void set_pre_diff_code(bool a) { d_apply_pre_diff_code = a;}
-      //! Returns the encoding to apply before differential encoding.
-      std::vector<int> pre_diff_code() { return d_pre_diff_code;}
-      //! Returns the order of rotational symmetry.
-      unsigned int rotational_symmetry() { return d_rotational_symmetry;}
-      //! Returns the number of complex numbers in a single symbol.
-      unsigned int dimensionality() {return d_dimensionality;}
-
-      unsigned int bits_per_symbol()
-      {
-	return floor(log(double(d_constellation.size()))/d_dimensionality/log(2.0));
-      }
-  
-      unsigned int arity()
-      {
-	return d_arity;
-      }
-
-      constellation_sptr base()
-      {
-	return shared_from_this();
-      }  
-
-    protected:
-      std::vector<gr_complex> d_constellation;
-      std::vector<int> d_pre_diff_code; 
-      bool d_apply_pre_diff_code;
-      unsigned int d_rotational_symmetry;
-      unsigned int d_dimensionality;
-      unsigned int d_arity;
-      //! The factor by which the user given constellation points were
-      //! scaled by to achieve an average amplitude of 1.
-      float d_scalefactor;
-
-      float get_distance(unsigned int index, const gr_complex *sample);
-      unsigned int get_closest_point(const gr_complex *sample);
-      void calc_arity();
-    };
-
-    /************************************************************/
-    /* constellation_calcdist                                   */
-    /*                                                          */
-    /************************************************************/
-
-    /*! \brief Calculate Euclidian distance for any constellation
-     *  \ingroup digital
-     *
-     * Constellation which calculates the distance to each point in the
-     * constellation for decision making. Inefficient for large
-     * constellations.
-     */
-    class DIGITAL_API constellation_calcdist
-      : public constellation
-    {
-    public:
-      typedef boost::shared_ptr<constellation_calcdist> sptr;
-
-      // public constructor
-      static sptr make(std::vector<gr_complex> constell,
-		       std::vector<int> pre_diff_code,
-		       unsigned int rotational_symmetry,
-		       unsigned int dimensionality);
-
-      unsigned int decision_maker(const gr_complex *sample);
-      // void calc_metric(gr_complex *sample, float *metric, trellis_metric_type_t type);
-      // void calc_euclidean_metric(gr_complex *sample, float *metric);
-      // void calc_hard_symbol_metric(gr_complex *sample, float *metric);
-
-    protected:
-      constellation_calcdist(std::vector<gr_complex> constell,
-			     std::vector<int> pre_diff_code,
-			     unsigned int rotational_symmetry,
-			     unsigned int dimensionality);
-    };
-
-
-    /************************************************************/
-    /*! constellation_sector                                    */
-    /************************************************************/
-
-    /*!
-     * \brief Sectorized digital constellation
-     * \ingroup digital
-     *
-     * Constellation space is divided into sectors. Each sector is
-     * associated with the nearest constellation point.
-     *
-     */
-    class DIGITAL_API constellation_sector : public constellation
-    {
-    public:
-
-      constellation_sector(std::vector<gr_complex> constell,
-			   std::vector<int> pre_diff_code,
-			   unsigned int rotational_symmetry,
-			   unsigned int dimensionality,
-			   unsigned int n_sectors);
-
-      ~constellation_sector();
-
-      unsigned int decision_maker(const gr_complex *sample);
-
-    protected:
-      virtual unsigned int get_sector(const gr_complex *sample) = 0;
-      virtual unsigned int calc_sector_value(unsigned int sector) = 0;
-      void find_sector_values();
-
-      unsigned int n_sectors;
-
-    private:
-      std::vector<int> sector_values;
-    };
-
-    /************************************************************/
-    /* constellation_rect                                       */
-    /************************************************************/
-
-    /*!
-     * \brief Rectangular digital constellation
-     * \ingroup digital
-     *
-     * Only implemented for 1-(complex)dimensional constellation.
-     *
-     * Constellation space is divided into rectangular sectors. Each
-     * sector is associated with the nearest constellation point.
-     *
-     * Works well for square QAM.
-     *
-     * Works for any generic constellation provided sectors are not
-     * too large.
-     */
-
-
-    class DIGITAL_API constellation_rect
-      : public constellation_sector
-    {
-    public:
-      typedef boost::shared_ptr<constellation_rect> sptr;
-
-      // public constructor
-      static constellation_rect::sptr make(std::vector<gr_complex> constell,
-					   std::vector<int> pre_diff_code,
-					   unsigned int rotational_symmetry,
-					   unsigned int real_sectors,
-					   unsigned int imag_sectors,
-					   float width_real_sectors,
-					   float width_imag_sectors);
-      ~constellation_rect();
-
-    protected:
-
-      constellation_rect(std::vector<gr_complex> constell,
-			 std::vector<int> pre_diff_code,
-			 unsigned int rotational_symmetry,
-			 unsigned int real_sectors,
-			 unsigned int imag_sectors,
-			 float width_real_sectors,
-			 float width_imag_sectors);
-
-      unsigned int get_sector(const gr_complex *sample);
-  
-      unsigned int calc_sector_value(unsigned int sector);
-
-    private:
-      unsigned int n_real_sectors;
-      unsigned int n_imag_sectors;
-      float d_width_real_sectors;
-      float d_width_imag_sectors;
-    };
-
-
-    /************************************************************/
-    /* constellation_expl_rect                                  */
-    /************************************************************/
-
-    /*!
-     * \brief Rectangular digital constellation
-     * \ingroup digital
-     *
-     * Only implemented for 1-(complex)dimensional constellation.
-     *
-     * Constellation space is divided into rectangular sectors. Each
-     * sector is associated with the nearest constellation point.
-     *
-     * This class is different from constellation_rect in that the
-     * mapping from sector to constellation point is explicitly passed
-     * into the constructor as sector_values.  Usually we do not need
-     * this, since we want each sector to be automatically mapped to
-     * the closest constellation point, however sometimes it's nice to
-     * have the flexibility.
-     */
-    class DIGITAL_API constellation_expl_rect 
-      : public constellation_rect
-    {
-    public:
-      typedef boost::shared_ptr<constellation_expl_rect> sptr;
-
-      static sptr make(std::vector<gr_complex> constellation,
-                       std::vector<int> pre_diff_code,
-                       unsigned int rotational_symmetry,
-                       unsigned int real_sectors,
-                       unsigned int imag_sectors,
-                       float width_real_sectors,
-                       float width_imag_sectors,
-                       std::vector<unsigned int> sector_values);
-      ~constellation_expl_rect();
-
-    protected:
-      constellation_expl_rect(std::vector<gr_complex> constellation,
-                              std::vector<int> pre_diff_code,
-                              unsigned int rotational_symmetry,
-                              unsigned int real_sectors,
-                              unsigned int imag_sectors,
-                              float width_real_sectors,
-                              float width_imag_sectors,
-                              std::vector<unsigned int> sector_values);
-
-      unsigned int calc_sector_value (unsigned int sector) {
-        return d_sector_values[sector];
-      }
-
-    private:
-      std::vector<unsigned int> d_sector_values;
-    };
-
-    /************************************************************/
-    /* constellation_psk                                        */
-    /************************************************************/
-
-    /*! 
-     * \brief constellation_psk
-     * \ingroup digital
-     *
-     * Constellation space is divided into pie slices sectors.
-     *
-     * Each slice is associated with the nearest constellation point. 
-     *
-     * Works well for PSK but nothing else.  
-     *
-     * Assumes that there is a constellation point at 1.x 
-     */
-    class DIGITAL_API constellation_psk : public constellation_sector
-    {
-    public:
-      typedef boost::shared_ptr<constellation_psk> sptr;
-
-      // public constructor
-      static sptr make(std::vector<gr_complex> constell,
-		       std::vector<int> pre_diff_code,
-		       unsigned int n_sectors);
-
-      ~constellation_psk();
-
-    protected:
-      unsigned int get_sector(const gr_complex *sample);
-  
-      unsigned int calc_sector_value(unsigned int sector);
-
-      constellation_psk(std::vector<gr_complex> constell,
-			std::vector<int> pre_diff_code,
-			unsigned int n_sectors);
-    };
-
-
-    /************************************************************/
-    /* constellation_bpsk                                       */
-    /*                                                          */
-    /* Only works for BPSK.                                     */
-    /*                                                          */
-    /************************************************************/
-
-    /*! 
-     * \brief Digital constellation for BPSK 
-     * \ingroup digital
-     */
-    class DIGITAL_API constellation_bpsk : public constellation
-    {
-    public:
-      typedef boost::shared_ptr<constellation_bpsk> sptr;
-
-      // public constructor
-      static sptr make();
-
-      ~constellation_bpsk();
-
-      unsigned int decision_maker(const gr_complex *sample);
-
-    protected:
-      constellation_bpsk();
-    };
-
-
-    /************************************************************/
-    /* constellation_qpsk                                       */
-    /*                                                          */
-    /* Only works for QPSK.                                     */
-    /*                                                          */
-    /************************************************************/
-
-    /*! 
-     * \brief Digital constellation for QPSK
-     * \ingroup digital
-     */
-    class DIGITAL_API constellation_qpsk : public constellation
-    {
-    public:
-      typedef boost::shared_ptr<constellation_qpsk> sptr;
-
-      // public constructor
-      static sptr make();
-
-      ~constellation_qpsk();
-
-      unsigned int decision_maker(const gr_complex *sample);
-
-    protected:
-      constellation_qpsk();
-    };
-
-
-    /************************************************************/
-    /* constellation_dqpsk                                      */
-    /*                                                          */
-    /* Works with differential encoding; slower decisions.      */
-    /*                                                          */
-    /************************************************************/
-
-    /*!
-     * \brief Digital constellation for DQPSK
-     * \ingroup digital
-     */
-    class DIGITAL_API constellation_dqpsk : public constellation
-    {
-    public:
-      typedef boost::shared_ptr<constellation_dqpsk> sptr;
-
-      // public constructor
-      static sptr make();
-
-      ~constellation_dqpsk();
-
-      unsigned int decision_maker(const gr_complex *sample);
-
-    protected:
-      constellation_dqpsk();
-    };
-
-
-    /************************************************************/
-    /* constellation_8psk                                       */
-    /*                                                          */
-    /* Only works for 8PSK.                                     */
-    /*                                                          */
-    /************************************************************/
-
-    /*! 
-     * \brief Digital constellation for 8PSK
-     * \ingroup digital
-     */
-    class DIGITAL_API constellation_8psk : public constellation
-    {
-    public:
-      typedef boost::shared_ptr<constellation_8psk> sptr;
-
-      // public constructor
-      static sptr make();
-
-      ~constellation_8psk();
-
-      unsigned int decision_maker(const gr_complex *sample);
-
-    protected:
-      constellation_8psk();
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_CONSTELLATION_H */
diff --git a/gr-digital/include/digital/constellation_decoder_cb.h b/gr-digital/include/digital/constellation_decoder_cb.h
deleted file mode 100644
index fd6e3d0ec3..0000000000
--- a/gr-digital/include/digital/constellation_decoder_cb.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_CONSTELLATION_DECODER_CB_H
-#define INCLUDED_DIGITAL_CONSTELLATION_DECODER_CB_H
-
-#include <digital/api.h>
-#include <digital/constellation.h>
-#include <gnuradio/block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Constellation Decoder
-     * \ingroup symbol_coding_blk
-     *
-     * \details
-     * Decode a constellation's points from a complex space to
-     * (unpacked) bits based on the map of the \p consetllation
-     * object.
-     */
-    class DIGITAL_API constellation_decoder_cb
-      : virtual public block
-    {
-    public:
-      // gr::digital::constellation_decoder_cb::sptr
-      typedef boost::shared_ptr<constellation_decoder_cb> sptr;
-
-      /*!
-       * \brief Make constellation decoder block.
-       *
-       * \param constellation A constellation derived from class
-       * 'constellation'. Use base() method to get a shared pointer to
-       * this base class type.
-       */
-      static sptr make(constellation_sptr constellation);
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_CONSTELLATION_DECODER_CB_H */
diff --git a/gr-digital/include/digital/constellation_receiver_cb.h b/gr-digital/include/digital/constellation_receiver_cb.h
deleted file mode 100644
index 255ae4da67..0000000000
--- a/gr-digital/include/digital/constellation_receiver_cb.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2011,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_CONSTELLATION_RECEIVER_CB_H
-#define	INCLUDED_DIGITAL_CONSTELLATION_RECEIVER_CB_H
-
-#include <digital/api.h>
-#include <digital/constellation.h>
-#include <gnuradio/block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief This block makes hard decisions about the received
-     * symbols (using a constellation object) and also fine tunes
-     * phase synchronization.
-     *
-     * \details
-     *
-     * The phase and frequency synchronization are based on a Costas
-     * loop that finds the error of the incoming signal point compared
-     * to its nearest constellation point. The frequency and phase of
-     * the NCO are updated according to this error.
-     */
-    class DIGITAL_API constellation_receiver_cb
-      : virtual public block
-    {
-    public:
-      // gr::digital::constellation_receiver_cb::sptr
-      typedef boost::shared_ptr<constellation_receiver_cb> sptr;
-
-      /*!
-       * \brief Constructor to synchronize incoming M-PSK symbols
-       *
-       * \param constellation constellation of points for generic modulation
-       * \param loop_bw	Loop  bandwidth of the Costas Loop (~ 2pi/100)
-       * \param fmin          minimum normalized frequency value the loop can achieve
-       * \param fmax          maximum normalized frequency value the loop can achieve
-       *
-       * The constructor chooses which phase detector and decision
-       * maker to use in the work loop based on the value of M.
-       */
-      static sptr make(constellation_sptr constellation, 
-		       float loop_bw, float fmin, float fmax);
-
-      virtual void phase_error_tracking(float phase_error) = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_CONSTELLATION_RECEIVER_CB_H */
diff --git a/gr-digital/include/digital/correlate_access_code_bb.h b/gr-digital/include/digital/correlate_access_code_bb.h
deleted file mode 100644
index 544d427f60..0000000000
--- a/gr-digital/include/digital/correlate_access_code_bb.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2005,2006,2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_BB_H
-#define INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_BB_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-#include <string>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Examine input for specified access code, one bit at a time.
-     * \ingroup packet_operators_blk
-     * \ingroup deprecated_blk
-     *
-     * \details
-     * input:  stream of bits, 1 bit per input byte (data in LSB)
-     * output: stream of bits, 2 bits per output byte (data in LSB, flag in next higher bit)
-     *
-     * Each output byte contains two valid bits, the data bit, and the
-     * flag bit. The LSB (bit 0) is the data bit, and is the original
-     * input data, delayed 64 bits. Bit 1 is the flag bit and is 1 if
-     * the corresponding data bit is the first data bit following the
-     * access code. Otherwise the flag bit is 0.
-     */
-    class DIGITAL_API correlate_access_code_bb : virtual public sync_block
-    {
-    public:
-      // gr::digital::correlate_access_code_bb::sptr
-      typedef boost::shared_ptr<correlate_access_code_bb> sptr;
-
-      /*!
-       * Make a correlate_access_code block.
-       *
-       * \param access_code is represented with 1 byte per bit,
-       *                    e.g., "010101010111000100" 
-       * \param threshold maximum number of bits that may be wrong
-       */
-      static sptr make(const std::string &access_code, int threshold);
-
-      /*!
-       * Set a new access code.
-       *
-       * \param access_code is represented with 1 byte per bit,
-       *                    e.g., "010101010111000100"
-       */
-      virtual bool set_access_code(const std::string &access_code) = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_BB_H */
diff --git a/gr-digital/include/digital/correlate_access_code_tag_bb.h b/gr-digital/include/digital/correlate_access_code_tag_bb.h
deleted file mode 100644
index 51d088e82f..0000000000
--- a/gr-digital/include/digital/correlate_access_code_tag_bb.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2005,2006,2011,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_TAG_BB_H
-#define INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_TAG_BB_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-#include <string>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Examine input for specified access code, one bit at a time.
-     * \ingroup packet_operators_blk
-     *
-     * \details
-     * input:  stream of bits, 1 bit per input byte (data in LSB)
-     * output: unaltered stream of bits (plus tags)
-     *
-     * This block annotates the input stream with tags. The tags have
-     * key name [tag_name], specified in the constructor. Used for
-     * searching an input data stream for preambles, etc.
-     */
-    class DIGITAL_API correlate_access_code_tag_bb : virtual public sync_block
-    {
-    public:
-      // gr::digital::correlate_access_code_tag_bb::sptr
-      typedef boost::shared_ptr<correlate_access_code_tag_bb> sptr;
-
-      /*!
-       * \param access_code is represented with 1 byte per bit,
-       *                    e.g., "010101010111000100"
-       * \param threshold maximum number of bits that may be wrong
-       * \param tag_name key of the tag inserted into the tag stream
-       */
-      static sptr make(const std::string &access_code,
-		       int threshold,
-		       const std::string &tag_name);
-      
-      /*!
-       * \param access_code is represented with 1 byte per bit,
-       *                    e.g., "010101010111000100"
-       */
-      virtual bool set_access_code(const std::string &access_code) = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_TAG_BB_H */
diff --git a/gr-digital/include/digital/costas_loop_cc.h b/gr-digital/include/digital/costas_loop_cc.h
deleted file mode 100644
index 555d5ad09f..0000000000
--- a/gr-digital/include/digital/costas_loop_cc.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_COSTAS_LOOP_CC_H
-#define INCLUDED_DIGITAL_COSTAS_LOOP_CC_H
-
-#include <digital/api.h>
-#include <gnuradio/blocks/control_loop.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*! 
-     * \brief A Costas loop carrier recovery module.
-     * \ingroup synchronizers_blk
-     *
-     * \details
-     * The Costas loop locks to the center frequency of a signal and
-     * downconverts it to baseband. The second (order=2) order loop
-     * is used for BPSK where the real part of the output signal is
-     * the baseband BPSK signal and the imaginary part is the error
-     * signal. When order=4, it can be used for quadrature
-     * modulations where both I and Q (real and imaginary) are
-     * outputted.
-     *
-     * More details can be found online:
-     *
-     * J. Feigin, "Practical Costas loop design: Designing a simple
-     * and inexpensive BPSK Costas loop carrier recovery circuit," RF
-     * signal processing, pp. 20-36, 2002.
-     *
-     * http://rfdesign.com/images/archive/0102Feigin20.pdf
-     *  
-     * The Costas loop can have two output streams:
-     *    stream 1 is the baseband I and Q;
-     *    stream 2 is the normalized frequency of the loop
-     */
-    class DIGITAL_API costas_loop_cc
-      : virtual public sync_block, 
-        virtual public blocks::control_loop
-    {
-    public:
-      // gr::digital::costas_loop_cc::sptr
-      typedef boost::shared_ptr<costas_loop_cc> sptr;
-
-      /*! 
-       * Make a Costas loop carrier recovery block.
-       *
-       * \param loop_bw  internal 2nd order loop bandwidth (~ 2pi/100)
-       * \param order the loop order, either 2, 4, or 8
-       */
-      static sptr make(float loop_bw, int order);
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_COSTAS_LOOP_CC_H */
diff --git a/gr-digital/include/digital/cpmmod_bc.h b/gr-digital/include/digital/cpmmod_bc.h
deleted file mode 100644
index 13c778943c..0000000000
--- a/gr-digital/include/digital/cpmmod_bc.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2010,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_CPMMOD_BC_H
-#define INCLUDED_DIGITAL_CPMMOD_BC_H
-
-#include <digital/api.h>
-#include <gnuradio/hier_block2.h>
-#include <gnuradio/analog/cpm.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Generic CPM modulator
-     * \ingroup modulators_blk
-     *
-     * \details
-     * Examples:
-     * - Setting h = 0.5, L = 1, type = LREC yields MSK.
-     * - Setting h = 0.5, type = GAUSSIAN and beta = 0.3 yields GMSK
-     *           as used in GSM.
-     *
-     * The input of this block are symbols from an M-ary alphabet
-     * +/-1, +/-3, ..., +/-(M-1). Usually, M = 2 and therefore, the
-     * valid inputs are +/-1.
-     * The modulator will silently accept any other inputs, though.
-     * The output is the phase-modulated signal.
-     */
-    class DIGITAL_API cpmmod_bc : virtual public hier_block2
-    {
-    public:
-      // gr::digital::cpmmod_bc::sptr
-      typedef boost::shared_ptr<cpmmod_bc> sptr;
-
-      /*!
-       * Make CPM modulator block.
-       *
-       * \param type The modulation type. Can be one of LREC, LRC, LSRC, TFM
-       *             or GAUSSIAN. See gr_cpm::phase_response() for a
-       *             detailed description.
-       * \param h The modulation index. \f$ h \cdot \pi\f$ is the maximum
-       *          phase change that can occur between two symbols, i.e., if
-       *          you only send ones, the phase will increase by \f$ h \cdot
-       *          \pi\f$ every \p samples_per_sym samples. Set this to 0.5
-       *          for Minimum Shift Keying variants.
-       * \param samples_per_sym Samples per symbol.
-       * \param L The length of the phase duration in symbols. For L=1, this
-       *          yields full- response CPM symbols, for L > 1,
-       *          partial-response.
-       * \param beta For LSRC, this is the rolloff factor. For Gaussian
-       *             pulses, this is the 3 dB time-bandwidth product.
-       */
-      static sptr make(analog::cpm::cpm_type type, float h,
-		       int samples_per_sym,
-		       int L, double beta=0.3);
-
-      /*!
-       * Make GMSK modulator block.
-       *
-       * The type is GAUSSIAN and the modulation index for GMSK is
-       * 0.5. This are populated automatically by this factory
-       * function.
-       *
-       * \param samples_per_sym Samples per symbol.
-       * \param L The length of the phase duration in symbols. For L=1, this
-       *          yields full- response CPM symbols, for L > 1,
-       *          partial-response.
-       * \param beta For LSRC, this is the rolloff factor. For Gaussian
-       *             pulses, this is the 3 dB time-bandwidth product.
-       */
-      static sptr make_gmskmod_bc(int samples_per_sym=2,
-				  int L=4, double beta=0.3);
-
-      //! Return the phase response FIR taps
-      virtual std::vector<float> taps() const = 0;
-
-      //! Return the type of CPM modulator
-      virtual int type() const = 0;
-
-      //! Return the modulation index of the modulator.
-      virtual float index() const = 0;
-
-      //! Return the number of samples per symbol
-      virtual int samples_per_sym() const = 0;
-
-      //! Return the length of the phase duration (in symbols)
-      virtual int length() const = 0;
-
-      //! Return the value of beta for the modulator
-      virtual double beta() const = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_CPMMOD_BC_H */
-
diff --git a/gr-digital/include/digital/crc32.h b/gr-digital/include/digital/crc32.h
deleted file mode 100644
index a10960084d..0000000000
--- a/gr-digital/include/digital/crc32.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2005,2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_CRC32_H
-#define INCLUDED_DIGITAL_CRC32_H
-
-#include <digital/api.h>
-#include <string>
-#include <gnuradio/types.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief update running CRC-32
-     * \ingroup packet_operators_blk
-     *
-     * \details
-     * Update a running CRC with the bytes buf[0..len-1] The CRC
-     * should be initialized to all 1's, and the transmitted value is
-     * the 1's complement of the final running CRC.  The resulting CRC
-     * should be transmitted in big endian order.
-     */
-    DIGITAL_API unsigned int 
-    update_crc32(unsigned int crc, const unsigned char *buf, size_t len);
-
-    DIGITAL_API unsigned int 
-    update_crc32(unsigned int crc, const std::string buf);
-
-    DIGITAL_API unsigned int 
-    crc32(const unsigned char *buf, size_t len);
-
-    DIGITAL_API unsigned int 
-    crc32(const std::string buf);
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_CRC32_H */
diff --git a/gr-digital/include/digital/crc32_bb.h b/gr-digital/include/digital/crc32_bb.h
deleted file mode 100644
index 8b44e79efa..0000000000
--- a/gr-digital/include/digital/crc32_bb.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- c++ -*- */
-/* 
- * Copyright 2013 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#ifndef INCLUDED_DIGITAL_CRC32_BB_H
-#define INCLUDED_DIGITAL_CRC32_BB_H
-
-#include <digital/api.h>
-#include <gnuradio/tagged_stream_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Byte-stream CRC block
-     * \ingroup packet_operators_blk
-     *
-     * \details
-     * Input: stream of bytes, which form a packet. The first byte of the packet
-     * has a tag with key "length" and the value being the number of bytes in the
-     * packet.
-     *
-     * Output: The same bytes as incoming, but trailing a CRC32 of the packet.
-     * The tag is re-set to the new length.
-     */
-    class DIGITAL_API crc32_bb : virtual public tagged_stream_block
-    {
-     public:
-      typedef boost::shared_ptr<crc32_bb> sptr;
-
-      /*!
-       * \param check Set to true if you want to check CRC, false to create CRC.
-       * \param lengthtagname Length tag key
-       */
-      static sptr make(bool check=false, const std::string& lengthtagname="packet_len");
-    };
-
-  } // namespace digital
-} // namespace gr
-
-#endif /* INCLUDED_DIGITAL_CRC32_BB_H */
-
diff --git a/gr-digital/include/digital/descrambler_bb.h b/gr-digital/include/digital/descrambler_bb.h
deleted file mode 100644
index 5494f3fac1..0000000000
--- a/gr-digital/include/digital/descrambler_bb.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2008,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_DESCRAMBLER_BB_H
-#define INCLUDED_GR_DESCRAMBLER_BB_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Descramber an input stream using an LFSR.
-     * \ingroup coding_blk
-     *
-     * \details
-     * Descramble an input stream using an LFSR. This block works on
-     * the LSB only of the input data stream, i.e., on an "unpacked
-     * binary" stream, and produces the same format on its output.
-     */
-    class DIGITAL_API descrambler_bb : virtual public sync_block
-    {
-    public:
-      // gr::digital::descrambler_bb::sptr
-      typedef boost::shared_ptr<descrambler_bb> sptr;
-
-      /*!
-       * \brief Make a descrambler block.
-       * 
-       * \param mask     Polynomial mask for LFSR
-       * \param seed     Initial shift register contents
-       * \param len      Shift register length
-       */
-      static sptr make(int mask, int seed, int len);
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_DESCRAMBLER_BB_H */
diff --git a/gr-digital/include/digital/diff_decoder_bb.h b/gr-digital/include/digital/diff_decoder_bb.h
deleted file mode 100644
index bb1b254f27..0000000000
--- a/gr-digital/include/digital/diff_decoder_bb.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_DIFF_DECODER_BB_H
-#define INCLUDED_GR_DIFF_DECODER_BB_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Differential encoder: y[0] = (x[0] - x[-1]) % M
-     * \ingroup symbol_coding_blk
-     *
-     * \details
-     * Uses current and previous symbols and the alphabet modulus to
-     * perform differential decoding.
-     */
-    class DIGITAL_API diff_decoder_bb : virtual public sync_block
-    {
-    public:
-      // gr::digital::diff_decoder_bb::sptr
-      typedef boost::shared_ptr<diff_decoder_bb> sptr;
-      
-      /*!
-       * Make a differntial decoder block.
-       *
-       * \param modulus Modulus of code's alphabet
-       */
-      static sptr make(unsigned int modulus);
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_DIFF_DECODER_BB_H */
diff --git a/gr-digital/include/digital/diff_encoder_bb.h b/gr-digital/include/digital/diff_encoder_bb.h
deleted file mode 100644
index 20ef12dae6..0000000000
--- a/gr-digital/include/digital/diff_encoder_bb.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_DIFF_ENCODER_BB_H
-#define INCLUDED_GR_DIFF_ENCODER_BB_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Differential decoder: y[0] = (x[0] + y[-1]) % M
-     * \ingroup symbol_coding_blk
-     *
-     * \details
-     * Uses current and previous symbols and the alphabet modulus to
-     * perform differential encoding.
-     */
-    class DIGITAL_API diff_encoder_bb : virtual public sync_block
-    {
-    public:
-      // gr::digital::diff_encoder_bb::sptr
-      typedef boost::shared_ptr<diff_encoder_bb> sptr;
-
-      /*!
-       * Make a differntial encoder block.
-       *
-       * \param modulus Modulus of code's alphabet
-       */
-      static sptr make(unsigned int modulus);
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_DIFF_ENCODER_BB_H */
diff --git a/gr-digital/include/digital/diff_phasor_cc.h b/gr-digital/include/digital/diff_phasor_cc.h
deleted file mode 100644
index 803f025ce0..0000000000
--- a/gr-digital/include/digital/diff_phasor_cc.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_DIFF_PHASOR_CC_H
-#define INCLUDED_GR_DIFF_PHASOR_CC_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Differential decoding based on phase change.
-     * \ingroup symbol_coding_blk
-     *
-     * \details
-     * Uses the phase difference between two symbols to determine the
-     * output symbol:
-     *
-     *     out[i] = in[i] * conj(in[i-1]);
-     */
-    class DIGITAL_API diff_phasor_cc : virtual public sync_block
-    {
-    public:
-      // gr::digital::diff_phasor_cc::sptr
-      typedef boost::shared_ptr<diff_phasor_cc> sptr;
-
-      /*!
-       * Make a differential phasor decoding block.
-       */
-      static sptr make();
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_DIFF_PHASOR_CC_H */
diff --git a/gr-digital/include/digital/fll_band_edge_cc.h b/gr-digital/include/digital/fll_band_edge_cc.h
deleted file mode 100644
index 9802f825b1..0000000000
--- a/gr-digital/include/digital/fll_band_edge_cc.h
+++ /dev/null
@@ -1,179 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2009,2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_FLL_BAND_EDGE_CC_H
-#define	INCLUDED_DIGITAL_FLL_BAND_EDGE_CC_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-#include <gnuradio/blocks/control_loop.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Frequency Lock Loop using band-edge filters
-     * \ingroup synchronizers_blk
-     *
-     * \details
-     * The frequency lock loop derives a band-edge filter that covers
-     * the upper and lower bandwidths of a digitally-modulated
-     * signal. The bandwidth range is determined by the excess
-     * bandwidth (e.g., rolloff factor) of the modulated signal. The
-     * placement in frequency of the band-edges is determined by the
-     * oversampling ratio (number of samples per symbol) and the
-     * excess bandwidth.  The size of the filters should be fairly
-     * large so as to average over a number of symbols.
-     *
-     * The FLL works by filtering the upper and lower band edges into
-     * x_u(t) and x_l(t), respectively.  These are combined to form
-     * cc(t) = x_u(t) + x_l(t) and ss(t) = x_u(t) - x_l(t). Combining
-     * these to form the signal e(t) = Re{cc(t) \\times ss(t)^*}
-     * (where ^* is the complex conjugate) provides an error signal at
-     * the DC term that is directly proportional to the carrier
-     * frequency.  We then make a second-order loop using the error
-     * signal that is the running average of e(t).
-     *
-     * In practice, the above equation can be simplified by just
-     * comparing the absolute value squared of the output of both
-     * filters: abs(x_l(t))^2 - abs(x_u(t))^2 = norm(x_l(t)) -
-     * norm(x_u(t)).
-     *
-     * In theory, the band-edge filter is the derivative of the
-     * matched filter in frequency, (H_be(f) = frac{H(f)}{df}). In
-     * practice, this comes down to a quarter sine wave at the point
-     * of the matched filter's rolloff (if it's a raised-cosine, the
-     * derivative of a cosine is a sine).  Extend this sine by another
-     * quarter wave to make a half wave around the band-edges is
-     * equivalent in time to the sum of two sinc functions. The
-     * baseband filter fot the band edges is therefore derived from
-     * this sum of sincs. The band edge filters are then just the
-     * baseband signal modulated to the correct place in
-     * frequency. All of these calculations are done in the
-     * 'design_filter' function.
-     *
-     * Note: We use FIR filters here because the filters have to have
-     * a flat phase response over the entire frequency range to allow
-     * their comparisons to be valid.
-     *
-     * It is very important that the band edge filters be the
-     * derivatives of the pulse shaping filter, and that they be
-     * linear phase. Otherwise, the variance of the error will be very
-     * large.
-     */
-    class DIGITAL_API fll_band_edge_cc
-      : virtual public sync_block,
-        virtual public blocks::control_loop
-    {
-    public:
-      // gr::digital::fll_band_edge_cc::sptr
-      typedef boost::shared_ptr<fll_band_edge_cc> sptr;
-
-      /*!
-       * Make an FLL block.
-       *
-       * \param samps_per_sym (float) number of samples per symbol
-       * \param rolloff (float) Rolloff (excess bandwidth) of signal filter
-       * \param filter_size (int) number of filter taps to generate
-       * \param bandwidth (float) Loop bandwidth
-       */
-      static sptr make(float samps_per_sym, float rolloff,
-		       int filter_size, float bandwidth);
-  
-      /*******************************************************************
-       SET FUNCTIONS
-      *******************************************************************/
-  
-      /*!
-       * \brief Set the number of samples per symbol
-       *
-       * Set's the number of samples per symbol the system should
-       * use. This value is uesd to calculate the filter taps and will
-       * force a recalculation.
-       *
-       * \param sps    (float) new samples per symbol
-       */
-      virtual void set_samples_per_symbol(float sps) = 0;
-
-      /*!
-       * \brief Set the rolloff factor of the shaping filter
-       *
-       * This sets the rolloff factor that is used in the pulse
-       * shaping filter and is used to calculate the filter
-       * taps. Changing this will force a recalculation of the filter
-       * taps.
-       *
-       * This should be the same value that is used in the
-       * transmitter's pulse shaping filter. It must be between 0 and
-       * 1 and is usually between 0.2 and 0.5 (where 0.22 and 0.35 are
-       * commonly used values).
-       *
-       * \param rolloff (float) new shaping filter rolloff factor [0,1]
-       */
-      virtual void set_rolloff(float rolloff) = 0;
-
-      /*!
-       * \brief Set the number of taps in the filter
-       *
-       * This sets the number of taps in the band-edge
-       * filters. Setting this will force a recalculation of the
-       * filter taps.
-       *
-       * This should be about the same number of taps used in the
-       * transmitter's shaping filter and also not very large. A large
-       * number of taps will result in a large delay between input and
-       * frequency estimation, and so will not be as accurate. Between
-       * 30 and 70 taps is usual.
-       *
-       * \param filter_size (float) number of taps in the filters
-       */
-      virtual void set_filter_size(int filter_size) = 0;
-
-      /*******************************************************************
-       GET FUNCTIONS
-      *******************************************************************/
-
-      /*!
-       * \brief Returns the number of sampler per symbol used for the filter
-       */
-      virtual float samples_per_symbol() const = 0;
-
-      /*!
-       * \brief Returns the rolloff factor used for the filter
-       */
-      virtual float rolloff() const = 0;
-
-      /*!
-       * \brief Returns the number of taps of the filter
-       */
-      virtual int filter_size() const = 0;
-
-      /*!
-       * Print the taps to screen.
-       */
-      virtual void print_taps() = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_FLL_BAND_EDGE_CC_H */
diff --git a/gr-digital/include/digital/framer_sink_1.h b/gr-digital/include/digital/framer_sink_1.h
deleted file mode 100644
index e317ada5bd..0000000000
--- a/gr-digital/include/digital/framer_sink_1.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2005,2006,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_FRAMER_SINK_1_H
-#define INCLUDED_GR_FRAMER_SINK_1_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-#include <gnuradio/msg_queue.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Given a stream of bits and access_code flags, assemble packets.
-     * \ingroup packet_operators_blk
-     *
-     * \details
-     * input: stream of bytes from digital_correlate_access_code_bb
-     * output: none. Pushes assembled packet into target queue
-     *
-     * The framer expects a fixed length header of 2 16-bit shorts
-     * containing the payload length, followed by the payload. If the
-     * 2 16-bit shorts are not identical, this packet is
-     * ignored. Better algs are welcome.
-     *
-     * The input data consists of bytes that have two bits used. Bit
-     * 0, the LSB, contains the data bit. Bit 1 if set, indicates that
-     * the corresponding bit is the the first bit of the packet. That
-     * is, this bit is the first one after the access code.
-     */
-    class DIGITAL_API framer_sink_1 : virtual public sync_block
-    {
-    public:
-      // gr::digital::framer_sink_1::sptr
-      typedef boost::shared_ptr<framer_sink_1> sptr;
-
-      /*!
-       * Make a framer_sink_1 block.
-       *
-       * \param target_queue The message queue where frames go.
-       */
-      static sptr make(msg_queue::sptr target_queue);
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_FRAMER_SINK_1_H */
diff --git a/gr-digital/include/digital/glfsr.h b/gr-digital/include/digital/glfsr.h
deleted file mode 100644
index 4c7701d7ee..0000000000
--- a/gr-digital/include/digital/glfsr.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2007,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_GLFSR_H
-#define INCLUDED_DIGITAL_GLFSR_H
-
-#include <digital/api.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Galois Linear Feedback Shift Register using specified polynomial mask
-     * \ingroup waveform_generators_blk
-     *
-     * \details
-     * Generates a maximal length pseudo-random sequence of length 2^degree-1
-     */
-    class DIGITAL_API glfsr
-    {
-    private:
-      int d_shift_register;
-      int d_mask;
-
-    public:
-      glfsr(int mask, int seed) { d_shift_register = seed; d_mask = mask; }
-      ~glfsr();
-
-      static int glfsr_mask(int degree);
-
-      unsigned char next_bit()
-      {
-	unsigned char bit = d_shift_register & 1;
-	d_shift_register >>= 1;
-	if(bit)
-	  d_shift_register ^= d_mask;
-	return bit;
-      }
-
-      int mask() const { return d_mask; }
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_GLFSR_H */
diff --git a/gr-digital/include/digital/glfsr_source_b.h b/gr-digital/include/digital/glfsr_source_b.h
deleted file mode 100644
index 1a08b5a328..0000000000
--- a/gr-digital/include/digital/glfsr_source_b.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2007,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_GLFSR_SOURCE_B_H
-#define INCLUDED_GR_GLFSR_SOURCE_B_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Galois LFSR pseudo-random source
-     * \ingroup waveform_generators_blk
-     */
-    class DIGITAL_API glfsr_source_b : virtual public sync_block
-    {
-    public:
-      // gr::digital::glfsr_source_b::sptr
-      typedef boost::shared_ptr<glfsr_source_b> sptr;
-
-      /*!
-       * Make a Galois LFSR pseudo-random source block.
-       *
-       * \param degree Degree of shift register must be in [1, 32]. If mask
-       *               is 0, the degree determines a default mask (see
-       *               digital_impl_glfsr.cc for the mapping).
-       * \param repeat Set to repeat sequence.
-       * \param mask   Allows a user-defined bit mask for indexes of the shift
-       *               register to feed back.
-       * \param seed   Initial setting for values in shift register.
-       */
-      static sptr make(int degree, bool repeat=true,
-		       int mask=0, int seed=1);
-	
-      virtual unsigned int period() const = 0;
-      virtual int mask() const = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_GLFSR_SOURCE_B_H */
diff --git a/gr-digital/include/digital/glfsr_source_f.h b/gr-digital/include/digital/glfsr_source_f.h
deleted file mode 100644
index bf840dc3b2..0000000000
--- a/gr-digital/include/digital/glfsr_source_f.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2007,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_GLFSR_SOURCE_F_H
-#define INCLUDED_GR_GLFSR_SOURCE_F_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Galois LFSR pseudo-random source generating float outputs -1.0 - 1.0.
-     * \ingroup waveform_generators_blk
-     */
-    class DIGITAL_API glfsr_source_f : virtual public sync_block
-    {
-    public:
-      // gr::digital::glfsr_source_f::sptr
-      typedef boost::shared_ptr<glfsr_source_f> sptr;
-
-      /*!
-       * Make a Galois LFSR pseudo-random source block.
-       *
-       * \param degree Degree of shift register must be in [1, 32]. If mask
-       *               is 0, the degree determines a default mask (see
-       *               digital_impl_glfsr.cc for the mapping).
-       * \param repeat Set to repeat sequence.
-       * \param mask   Allows a user-defined bit mask for indexes of the shift
-       *               register to feed back.
-       * \param seed   Initial setting for values in shift register.
-       */
-      static sptr make(int degree, bool repeat=true,
-		       int mask=0, int seed=1);
-
-      virtual unsigned int period() const = 0;
-      virtual int mask() const = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_GLFSR_SOURCE_F_H */
diff --git a/gr-digital/include/digital/header_payload_demux.h b/gr-digital/include/digital/header_payload_demux.h
deleted file mode 100644
index da703fb5fb..0000000000
--- a/gr-digital/include/digital/header_payload_demux.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- c++ -*- */
-/* Copyright 2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_HEADER_PAYLOAD_DEMUX_H
-#define INCLUDED_DIGITAL_HEADER_PAYLOAD_DEMUX_H
-
-#include <digital/api.h>
-#include <gnuradio/block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Header/Payload demuxer.
-     * \ingroup packet_operators_blk
-     *
-     * \details
-     * This block is designed to handle packets from a bursty transmission.
-     * Input 0 takes a continuous transmission of samples.
-     * If used, input 1 is a trigger signal. In this case, a 1 on input 1
-     * is a trigger. Otherwise, a tag with the key specified in \p trigger_tag_key
-     * is used as a trigger (its value is irrelevant).
-     *
-     * Until a trigger signal is detected, all samples are dropped onto the floor.
-     * Once a trigger is detected, a total of \p header_len items are copied to output 0.
-     * The block then stalls until it receives a message on the message port
-     * \p header_data. The message must be a PMT dictionary; all key/value pairs are
-     * copied as tags to the first item of the payload (which is assumed to be the
-     * first item after the header).
-     * The value corresponding to the key specified in \p length_tag_key is read
-     * and taken as the payload length. The payload, together with the header data
-     * as tags, is then copied to output 1.
-     *
-     * If specified, \p guard_interval items are discarded before every symbol.
-     * This is useful for demuxing bursts of OFDM signals.
-     *
-     * Any tags on the input stream are copied to the corresponding output *if* they're
-     * on an item that is propagated. Note that a tag on the header items is copied to the
-     * header stream; that means the header-parsing block must handle these tags if they
-     * should go on the payload.
-     * A special case are tags on items that make up the guard interval. These are copied
-     * to the first item of the following symbol.
-     */
-    class DIGITAL_API header_payload_demux : virtual public block
-    {
-     public:
-      typedef boost::shared_ptr<header_payload_demux> sptr;
-
-      /*!
-       * \param header_len Number of symbols per header
-       * \param items_per_symbol Number of items per symbol
-       * \param guard_interval Number of items between two consecutive symbols
-       * \param length_tag_key Key of the frame length tag
-       * \param trigger_tag_key Key of the trigger tag
-       * \param output_symbols Output symbols (true) or items (false)?
-       * \param itemsize Item size (bytes per item)
-       */
-      static sptr make(
-	int header_len,
-	int items_per_symbol,
-	int guard_interval=0,
-	const std::string &length_tag_key="frame_len",
-	const std::string &trigger_tag_key="",
-	bool output_symbols=false,
-	size_t itemsize=sizeof(gr_complex)
-      );
-    };
-
-  } // namespace digital
-} // namespace gr
-
-#endif /* INCLUDED_DIGITAL_HEADER_PAYLOAD_DEMUX_H */
-
diff --git a/gr-digital/include/digital/kurtotic_equalizer_cc.h b/gr-digital/include/digital/kurtotic_equalizer_cc.h
deleted file mode 100644
index e15e962776..0000000000
--- a/gr-digital/include/digital/kurtotic_equalizer_cc.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_KURTOTIC_EQUALIZER_CC_H
-#define	INCLUDED_DIGITAL_KURTOTIC_EQUALIZER_CC_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_decimator.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Implements a kurtosis-based adaptive equalizer on complex stream
-     * \ingroup equalizers_blk
-     *
-     * \details
-     * Warning: This block does not yet work.
-     *
-     * "Y. Guo, J. Zhao, Y. Sun, "Sign kurtosis maximization based blind
-     * equalization algorithm," IEEE Conf. on Control, Automation,
-     * Robotics and Vision, Vol. 3, Dec. 2004, pp. 2052 - 2057."
-     */
-    class DIGITAL_API kurtotic_equalizer_cc :
-      virtual public sync_decimator
-    {
-    protected:
-      virtual gr_complex error(const gr_complex &out) = 0;
-      virtual void update_tap(gr_complex &tap, const gr_complex &in) = 0;
-  
-    public:
-      // gr::digital::kurtotic_equalizer_cc::sptr
-      typedef boost::shared_ptr<kurtotic_equalizer_cc> sptr;
-
-      static sptr make(int num_taps, float mu);
-
-      virtual float gain() const = 0;
-      virtual void set_gain(float mu) = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_KURTOTIC_EQUALIZER_CC_H */
diff --git a/gr-digital/include/digital/lfsr.h b/gr-digital/include/digital/lfsr.h
deleted file mode 100644
index 0dd419b791..0000000000
--- a/gr-digital/include/digital/lfsr.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2008,2010,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_LFSR_H
-#define INCLUDED_DIGITAL_LFSR_H
-
-#include <digital/api.h>
-#include <stdexcept>
-#include <stdint.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Fibonacci Linear Feedback Shift Register using specified
-     * polynomial mask
-     * \ingroup misc
-     *
-     * \details
-     * Generates a maximal length pseudo-random sequence of length
-     * 2^degree-1
-     *
-     * Constructor: digital::lfsr(int mask, int seed, int reg_len);
-     *
-     * \param mask - polynomial coefficients representing the
-     *             locations of feedback taps from a shift register
-     *             which are xor'ed together to form the new high
-     *             order bit.
-     *
-     *             Some common masks might be:
-     *              x^4 + x^3 + x^0 = 0x19
-     *              x^5 + x^3 + x^0 = 0x29
-     *              x^6 + x^5 + x^0 = 0x61
-     *
-     * \param seed - the initialization vector placed into the
-     *             register durring initialization. Low order bit
-     *             corresponds to x^0 coefficient -- the first to be
-     *             shifted as output.
-     *
-     * \param reg_len - specifies the length of the feedback shift
-     *             register to be used. Durring each iteration, the
-     *             register is rightshifted one and the new bit is
-     *             placed in bit reg_len. reg_len should generally be
-     *             at least order(mask) + 1
-     *
-     *
-     * see http://en.wikipedia.org/wiki/Linear_feedback_shift_register
-     * for more explanation.
-     *
-     *  next_bit() - Standard LFSR operation
-     *
-     *      Perform one cycle of the LFSR.  The output bit is taken from
-     *      the shift register LSB.  The shift register MSB is assigned from
-     *      the modulo 2 sum of the masked shift register.
-     *
-     *  next_bit_scramble(unsigned char input) - Scramble an input stream
-     *
-     *      Perform one cycle of the LFSR.  The output bit is taken from
-     *      the shift register LSB.  The shift register MSB is assigned from
-     *      the modulo 2 sum of the masked shift register and the input LSB.
-     *
-     *  next_bit_descramble(unsigned char input) - Descramble an input stream
-     *
-     *      Perform one cycle of the LFSR.  The output bit is taken from
-     *      the modulo 2 sum of the masked shift register and the input LSB.
-     *      The shift register MSB is assigned from the LSB of the input.
-     *
-     * See http://en.wikipedia.org/wiki/Scrambler for operation of these
-     * last two functions (see multiplicative scrambler.)
-     */
-    class 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
-	popCount(uint32_t x)
-      {
-	uint32_t r = x - ((x >> 1) & 033333333333)
-	  - ((x >> 2) & 011111111111);
-	return ((r + (r >> 3)) & 030707070707) % 63;
-      }
-
-    public:
-      lfsr(uint32_t mask, uint32_t seed, uint32_t 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");
-	}
-
-      unsigned char next_bit()
-      {
-	unsigned char output = d_shift_register & 1;
-	unsigned char newbit = popCount( d_shift_register & d_mask )%2;
-	d_shift_register = ((d_shift_register>>1) | (newbit<<d_shift_register_length));
-	return output;
-      }
-
-      unsigned char next_bit_scramble(unsigned char input)
-      {
-	unsigned char output = d_shift_register & 1;
-	unsigned char newbit = (popCount( d_shift_register & d_mask )%2)^(input & 1);
-	d_shift_register = ((d_shift_register>>1) | (newbit<<d_shift_register_length));
-	return output;
-      }
-
-      unsigned char next_bit_descramble(unsigned char input)
-      {
-	unsigned char output = (popCount( d_shift_register & d_mask )%2)^(input & 1);
-	unsigned char newbit = input & 1;
-	d_shift_register = ((d_shift_register>>1) | (newbit<<d_shift_register_length));
-	return output;
-      }
-
-      /*!
-       * Reset shift register to initial seed value
-       */
-      void reset() { d_shift_register = d_seed; }
-
-      /*!
-       * Rotate the register through x number of bits
-       * where we are just throwing away the results to get queued up correctly
-       */
-      void pre_shift(int num)
-      {
-	for(int i=0; i<num; i++) {
-	  next_bit();
-	}
-      }
-
-      int mask() const { return d_mask; }
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_LFSR_H */
diff --git a/gr-digital/include/digital/lms_dd_equalizer_cc.h b/gr-digital/include/digital/lms_dd_equalizer_cc.h
deleted file mode 100644
index ca8d882358..0000000000
--- a/gr-digital/include/digital/lms_dd_equalizer_cc.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_LMS_DD_EQUALIZER_CC_H
-#define INCLUDED_DIGITAL_LMS_DD_EQUALIZER_CC_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_decimator.h>
-#include <digital/constellation.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Least-Mean-Square Decision Directed Equalizer (complex in/out)
-     * \ingroup equalizers_blk
-     *
-     * \details
-     * This block implements an LMS-based decision-directed equalizer.
-     * It uses a set of weights, w, to correlate against the inputs,
-     * u, and a decisions is then made from this output. The error in
-     * the decision is used to update teh weight vector.
-     *
-     * y[n] = conj(w[n]) u[n]
-     * d[n] = decision(y[n])
-     * e[n] = d[n] - y[n]
-     * w[n+1] = w[n] + mu u[n] conj(e[n])
-     *
-     * Where mu is a gain value (between 0 and 1 and usualy small,
-     * around 0.001 - 0.01.
-     *
-     * This block uses the digital_constellation object for making the
-     * decision from y[n]. Create the constellation object for
-     * whatever constellation is to be used and pass in the object.
-     * In Python, you can use something like:
-     *
-     *    self.constellation = digital.constellation_qpsk()
-     *
-     * To create a QPSK constellation (see the digital_constellation
-     * block for more details as to what constellations are available
-     * or how to create your own). You then pass the object to this
-     * block as an sptr, or using "self.constellation.base()".
-     *
-     * The theory for this algorithm can be found in Chapter 9 of:
-     * S. Haykin, Adaptive Filter Theory, Upper Saddle River, NJ:
-     *    Prentice Hall, 1996.
-     */
-    class DIGITAL_API lms_dd_equalizer_cc :
-      virtual public sync_decimator
-    {
-    protected:
-      virtual gr_complex error(const gr_complex &out) = 0;
-      virtual void update_tap(gr_complex &tap, const gr_complex &in) = 0;
-
-    public:
-      // gr::digital::lms_dd_equalizer_cc::sptr
-      typedef boost::shared_ptr<lms_dd_equalizer_cc> sptr;
-
-      /*!
-       * Make an LMS decision-directed equalizer
-       *
-       * \param num_taps Numer of taps in the equalizer (channel size)
-       * \param mu Gain of the update loop
-       * \param sps Number of samples per symbol of the input signal
-       * \param cnst A constellation derived from class
-       * 'constellation'. Use base() method to get a shared pointer to
-       * this base class type.
-       */
-      static sptr make(int num_taps,
-		       float mu, int sps,
-		       constellation_sptr cnst);
-
-      virtual void set_taps(const std::vector<gr_complex> &taps) = 0;
-      virtual std::vector<gr_complex> taps() const = 0;
-      virtual float gain() const = 0;
-      virtual void set_gain(float mu) = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_LMS_DD_EQUALIZER_CC_H */
diff --git a/gr-digital/include/digital/map_bb.h b/gr-digital/include/digital/map_bb.h
deleted file mode 100644
index 4ad04b95cb..0000000000
--- a/gr-digital/include/digital/map_bb.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_MAP_BB_H
-#define INCLUDED_GR_MAP_BB_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief output[i] = map[input[i]]
-     * \ingroup symbol_coding_blk
-     *
-     * \details
-     * This block maps an incoming signal to the value in the map.
-     * The block expects that the incoming signal has a maximum
-     * value of len(map)-1.
-     *
-     * -> output[i] = map[input[i]]
-     */
-    class DIGITAL_API map_bb : virtual public sync_block
-    {
-    public:
-      // gr::digital::map_bb::sptr
-      typedef boost::shared_ptr<map_bb> sptr;
-      
-      /*!
-       * Make a map block.
-       *
-       * \param map a vector of integers that maps x to map[x].
-       */
-      static sptr make(const std::vector<int> &map);
-
-      virtual void set_map(const std::vector<int> &map) = 0;
-      virtual std::vector<int> map() const = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_MAP_BB_H */
diff --git a/gr-digital/include/digital/metric_type.h b/gr-digital/include/digital/metric_type.h
deleted file mode 100644
index c277f01d27..0000000000
--- a/gr-digital/include/digital/metric_type.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_METRIC_TYPE_H
-#define INCLUDED_DIGITAL_METRIC_TYPE_H
-
-namespace gr {
-  namespace digital {
-
-    typedef enum {
-      TRELLIS_EUCLIDEAN = 200, TRELLIS_HARD_SYMBOL, TRELLIS_HARD_BIT
-    } trellis_metric_type_t;
-    
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_METRIC_TYPE_H */
-
diff --git a/gr-digital/include/digital/mpsk_receiver_cc.h b/gr-digital/include/digital/mpsk_receiver_cc.h
deleted file mode 100644
index fcf4030978..0000000000
--- a/gr-digital/include/digital/mpsk_receiver_cc.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2007,2011,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_MPSK_RECEIVER_CC_H
-#define	INCLUDED_DIGITAL_MPSK_RECEIVER_CC_H
-
-#include <digital/api.h>
-#include <gnuradio/block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief This block takes care of receiving M-PSK modulated
-     * signals through phase, frequency, and symbol synchronization.
-     * \ingroup synchronizers_blk
-     *
-     * \details
-     * It performs carrier frequency and phase locking as well as
-     * symbol timing recovery.  It works with (D)BPSK, (D)QPSK, and
-     * (D)8PSK as tested currently. It should also work for OQPSK and
-     * PI/4 DQPSK.
-     *
-     * The phase and frequency synchronization are based on a Costas
-     * loop that finds the error of the incoming signal point compared
-     * to its nearest constellation point. The frequency and phase of
-     * the NCO are updated according to this error. There are
-     * optimized phase error detectors for BPSK and QPSK, but 8PSK is
-     * done using a brute-force computation of the constellation
-     * points to find the minimum.
-     *
-     * The symbol synchronization is done using a modified Mueller and
-     * Muller circuit from the paper:
-     *
-     * "G. R. Danesfahani, T. G. Jeans, "Optimisation of modified Mueller
-     * and Muller algorithm," Electronics Letters, Vol. 31, no. 13, 22
-     * June 1995, pp. 1032 - 1033."
-     *
-     * This circuit interpolates the downconverted sample (using the
-     * NCO developed by the Costas loop) every mu samples, then it
-     * finds the sampling error based on this and the past symbols and
-     * the decision made on the samples. Like the phase error
-     * detector, there are optimized decision algorithms for BPSK and
-     * QPKS, but 8PSK uses another brute force computation against all
-     * possible symbols. The modifications to the M&M used here reduce
-     * self-noise.
-     *
-     */
-    class DIGITAL_API mpsk_receiver_cc : virtual public block
-    {
-    public:
-      // gr::digital::mpsk_receiver_cc::sptr
-      typedef boost::shared_ptr<mpsk_receiver_cc> sptr;
-
-      /*!
-       * \brief Make a M-PSK receiver block.
-       *
-       * \param M	        modulation order of the M-PSK modulation
-       * \param theta	    any constant phase rotation from the real axis of the constellation
-       * \param loop_bw	    Loop bandwidth to set gains of phase/freq tracking loop
-       * \param fmin        minimum normalized frequency value the loop can achieve
-       * \param fmax        maximum normalized frequency value the loop can achieve
-       * \param mu          initial parameter for the interpolator [0,1]
-       * \param gain_mu     gain parameter of the M&M error signal to adjust mu (~0.05)
-       * \param omega       initial value for the number of symbols between samples (~number of samples/symbol)
-       * \param gain_omega  gain parameter to adjust omega based on the error (~omega^2/4)
-       * \param omega_rel   sets the maximum (omega*(1+omega_rel)) and minimum (omega*(1+omega_rel)) omega (~0.005)
-       *
-       * The constructor also chooses which phase detector and
-       * decision maker to use in the work loop based on the value of
-       * M.
-       */
-      static sptr make(unsigned int M, float theta, 
-		       float loop_bw,
-		       float fmin, float fmax,
-		       float mu, float gain_mu, 
-		       float omega, float gain_omega, float omega_rel);
-      
-      //! Returns the modulation order (M) currently set
-      virtual float modulation_order() const = 0;
-
-      //! Returns current value of theta
-      virtual float theta() const = 0;
-
-      //! Returns current value of mu
-      virtual float mu() const = 0;
-
-      //! Returns current value of omega
-      virtual float omega() const = 0;
-
-      //! Returns mu gain factor
-      virtual float gain_mu() const = 0;
-
-      //! Returns omega gain factor
-      virtual float gain_omega() const = 0;
-
-      //! Returns the relative omega limit
-      virtual float gain_omega_rel() const = 0;
-
-      //! Sets the modulation order (M) currently
-      virtual void set_modulation_order(unsigned int M) = 0;
-
-      //! Sets value of theta
-      virtual void set_theta(float theta) = 0;
-
-      //! Sets value of mu
-      virtual void set_mu(float mu) = 0;
-  
-      //! Sets value of omega and its min and max values 
-      virtual void set_omega(float omega) = 0;
-
-      //! Sets value for mu gain factor
-      virtual void set_gain_mu(float gain_mu) = 0;
-
-      //! Sets value for omega gain factor
-      virtual void set_gain_omega(float gain_omega) = 0;
-
-      //! Sets the relative omega limit and resets omega min/max values
-      virtual void set_gain_omega_rel(float omega_rel) = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_MPSK_RECEIVER_CC_H */
diff --git a/gr-digital/include/digital/mpsk_snr_est.h b/gr-digital/include/digital/mpsk_snr_est.h
deleted file mode 100644
index 30c20e755e..0000000000
--- a/gr-digital/include/digital/mpsk_snr_est.h
+++ /dev/null
@@ -1,288 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_MPSK_SNR_EST_H
-#define INCLUDED_DIGITAL_MPSK_SNR_EST_H
-
-#include <digital/api.h>
-#include <gnuradio/gr_complex.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief A block for computing SNR of a signal.
-     * \ingroup measurement_tools_blk
-     *
-     * \details
-     * Below are some ROUGH estimates of what values of SNR each of
-     * these types of estimators is good for. In general, these offer
-     * a trade-off between accuracy and performance.
-     *
-     * \li SNR_EST_SIMPLE:  Simple estimator (>= 7 dB)
-     * \li SNR_EST_SKEW:    Skewness-base est (>= 5 dB)
-     * \li SNR_EST_M2M4:    2nd & 4th moment est (>= 1 dB)
-     * \li SNR_EST_SVR:     SVR-based est (>= 0dB)
-     */
-    typedef enum {
-      SNR_EST_SIMPLE = 0,   // Simple estimator (>= 7 dB)
-      SNR_EST_SKEW,	    // Skewness-base est (>= 5 dB)
-      SNR_EST_M2M4,         // 2nd & 4th moment est (>= 1 dB)
-      SNR_EST_SVR           // SVR-based est (>= 0dB)
-    } snr_est_type_t;
-
-    /*! \brief A parent class for SNR estimators, specifically for
-     *  M-PSK signals in AWGN channels.
-     *  \ingroup snr_blk
-     */
-    class DIGITAL_API mpsk_snr_est
-    {
-    protected:
-      double d_alpha, d_beta;
-
-    public:
-      /*! Constructor
-       *
-       *  Parameters:
-       *  \param alpha: the update rate of internal running average
-       *  calculations.
-       */
-      mpsk_snr_est(double alpha);
-      virtual ~mpsk_snr_est();
-
-      //! Get the running-average coefficient
-      double alpha() const;
-
-      //! Set the running-average coefficient
-      void set_alpha(double alpha);
-
-      //! Update the current registers
-      virtual int update(int noutput_items,
-			 const gr_complex *input);
-
-      //! Use the register values to compute a new estimate
-      virtual double snr();
-    };
-
-
-    //! \brief SNR Estimator using simple mean/variance estimates.
-    /*! \ingroup snr_blk
-     *
-     *  A very simple SNR estimator that just uses mean and variance
-     *  estimates of an M-PSK constellation. This esimator is quick
-     *  and cheap and accurate for high SNR (above 7 dB or so) but
-     *  quickly starts to overestimate the SNR at low SNR.
-     */
-    class DIGITAL_API mpsk_snr_est_simple :
-      public mpsk_snr_est
-    {
-    private:
-      double d_y1, d_y2;
-  
-    public:
-      /*! Constructor
-       *
-       *  Parameters:
-       *  \param alpha: the update rate of internal running average
-       *  calculations.
-       */
-      mpsk_snr_est_simple(double alpha);
-      ~mpsk_snr_est_simple() {}
-
-      int update(int noutput_items,
-		 const gr_complex *input);
-      double snr();
-    };
-
-
-    //! \brief SNR Estimator using skewness correction.
-    /*!  \ingroup snr_blk
-     *
-     *  This is an estimator that came from a discussion between Tom
-     *  Rondeau and fred harris with no known paper reference. The
-     *  idea is that at low SNR, the variance estimations will be
-     *  affected because of fold-over around the decision boundaries,
-     *  which results in a skewness to the samples. We estimate the
-     *  skewness and use this as a correcting term.
-     */
-    class DIGITAL_API mpsk_snr_est_skew :
-      public mpsk_snr_est
-    {
-    private:
-      double d_y1, d_y2, d_y3;
-  
-    public:
-      /*! Constructor
-       *
-       *  Parameters:
-       *  \param alpha: the update rate of internal running average
-       *  calculations.
-       */
-      mpsk_snr_est_skew(double alpha);
-      ~mpsk_snr_est_skew() {}
-
-      int update(int noutput_items,
-		 const gr_complex *input);
-      double snr();
-    };
-
-
-    //! \brief SNR Estimator using 2nd and 4th-order moments.
-    /*! \ingroup snr_blk
-     *
-     *  An SNR estimator for M-PSK signals that uses 2nd (M2) and 4th
-     *  (M4) order moments. This estimator uses knowledge of the
-     *  kurtosis of the signal (k_a) and noise (k_w) to make its
-     *  estimation. We use Beaulieu's approximations here to M-PSK
-     *  signals and AWGN channels such that k_a=1 and k_w=2. These
-     *  approximations significantly reduce the complexity of the
-     *  calculations (and computations) required.
-     *
-     *  Reference:
-     *  D. R. Pauluzzi and N. C. Beaulieu, "A comparison of SNR
-     *  estimation techniques for the AWGN channel," IEEE
-     *  Trans. Communications, Vol. 48, No. 10, pp. 1681-1691, 2000.
-     */
-    class DIGITAL_API mpsk_snr_est_m2m4 :
-      public mpsk_snr_est
-    {
-    private:
-      double d_y1, d_y2;
-  
-    public:
-      /*! Constructor
-       *
-       *  Parameters:
-       *  \param alpha: the update rate of internal running average
-       *  calculations.
-       */
-      mpsk_snr_est_m2m4(double alpha);
-      ~mpsk_snr_est_m2m4() {}
-
-      int update(int noutput_items,
-		 const gr_complex *input);
-      double snr();
-    };
-
-
-    //! \brief SNR Estimator using 2nd and 4th-order moments.
-    /*!  \ingroup snr_blk
-     *
-     *  An SNR estimator for M-PSK signals that uses 2nd (M2) and 4th
-     *  (M4) order moments. This estimator uses knowledge of the
-     *  kurtosis of the signal (k_a) and noise (k_w) to make its
-     *  estimation. In this case, you can set your own estimations for
-     *  k_a and k_w, the kurtosis of the signal and noise, to fit this
-     *  estimation better to your signal and channel conditions.
-     *
-     *  A word of warning: this estimator has not been fully tested or
-     *  proved with any amount of rigor. The estimation for M4 in
-     *  particular might be ignoring effectf of when k_a and k_w are
-     *  different. Use this estimator with caution and a copy of the
-     *  reference on hand.
-     *
-     *  The digital_mpsk_snr_est_m2m4 assumes k_a and k_w to simplify
-     *  the computations for M-PSK and AWGN channels. Use that
-     *  estimator unless you have a way to guess or estimate these
-     *  values here.
-     *
-     *  Original paper: 
-     *  R. Matzner, "An SNR estimation algorithm for complex baseband
-     *  signal using higher order statistics," Facta Universitatis
-     *  (Nis), no. 6, pp. 41-52, 1993.
-     *
-     *  Reference used in derivation:
-     *  D. R. Pauluzzi and N. C. Beaulieu, "A comparison of SNR
-     *  estimation techniques for the AWGN channel," IEEE
-     *  Trans. Communications, Vol. 48, No. 10, pp. 1681-1691, 2000.
-     */
-    class DIGITAL_API snr_est_m2m4 :
-      public mpsk_snr_est
-    {
-    private:
-      double d_y1, d_y2;
-      double d_ka, d_kw;
-  
-    public:
-      /*! Constructor
-       *
-       *  Parameters:
-       *  \param alpha: the update rate of internal running average
-       *  calculations.
-       *  \param ka: estimate of the signal kurtosis (1 for PSK)
-       *  \param kw: estimate of the channel noise kurtosis (2 for AWGN)
-       */
-      snr_est_m2m4(double alpha, double ka, double kw);
-      ~snr_est_m2m4() {}
-
-      int update(int noutput_items,
-		 const gr_complex *input);
-      double snr();
-    };
-
-
-    //! \brief Signal-to-Variation Ratio SNR Estimator.
-    /*! \ingroup snr_blk
-     *
-     *  This estimator actually comes from an SNR estimator for M-PSK
-     *  signals in fading channels, but this implementation is
-     *  specifically for AWGN channels. The math was simplified to
-     *  assume a signal and noise kurtosis (k_a and k_w) for M-PSK
-     *  signals in AWGN. These approximations significantly reduce the
-     *  complexity of the calculations (and computations) required.
-     *
-     *  Original paper:
-     *  A. L. Brandao, L. B. Lopes, and D. C. McLernon, "In-service
-     *  monitoring of multipath delay and cochannel interference for
-     *  indoor mobile communication systems," Proc. IEEE
-     *  Int. Conf. Communications, vol. 3, pp. 1458-1462, May 1994.
-     *
-     *  Reference:
-     *  D. R. Pauluzzi and N. C. Beaulieu, "A comparison of SNR
-     *  estimation techniques for the AWGN channel," IEEE
-     *  Trans. Communications, Vol. 48, No. 10, pp. 1681-1691, 2000.
-     */
-    class DIGITAL_API mpsk_snr_est_svr :
-      public mpsk_snr_est
-    {
-    private:
-      double d_y1, d_y2;
-  
-    public:
-      /*! Constructor
-       *
-       *  Parameters:
-       *  \param alpha: the update rate of internal running average
-       *  calculations.
-       */
-      mpsk_snr_est_svr(double alpha);
-      ~mpsk_snr_est_svr() {}
-
-      int update(int noutput_items,
-		 const gr_complex *input);
-      double snr();
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_MPSK_SNR_EST_H */
diff --git a/gr-digital/include/digital/mpsk_snr_est_cc.h b/gr-digital/include/digital/mpsk_snr_est_cc.h
deleted file mode 100644
index 45acda5764..0000000000
--- a/gr-digital/include/digital/mpsk_snr_est_cc.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_MPSK_SNR_EST_CC_H
-#define INCLUDED_DIGITAL_MPSK_SNR_EST_CC_H
-
-#include <digital/api.h>
-#include <digital/mpsk_snr_est.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief A block for computing SNR of a signal.
-     * \ingroup measurement_tools_blk
-     *
-     * \details
-     * This block can be used to monitor and retrieve estimations of
-     * the signal SNR. It is designed to work in a flowgraph and
-     * passes all incoming data along to its output.
-     *
-     * The block is designed for use with M-PSK signals
-     * especially. The type of estimator is specified as the \p type
-     * parameter in the constructor. The estimators tend to trade off
-     * performance for accuracy, although experimentation should be
-     * done to figure out the right approach for a given
-     * implementation. Further, the current set of estimators are
-     * designed and proven theoretically under AWGN conditions; some
-     * amount of error should be assumed and/or estimated for real
-     * channel conditions.
-     */
-    class DIGITAL_API mpsk_snr_est_cc : virtual public sync_block
-    {
-    public:
-      // gr::digital::mpsk_snr_est_cc::sptr
-      typedef boost::shared_ptr<mpsk_snr_est_cc> sptr;
-
-      /*! Factory function returning shared pointer of this class
-       *
-       *  \param type: the type of estimator to use gr::digital::snr_est_type_t
-       *  "snr_est_type_t" for details about the available types
-       *  \param tag_nsamples: after this many samples, a tag containing
-       *  the SNR (key='snr') will be sent
-       *  \param alpha: the update rate of internal running average
-       *  calculations
-       */
-      static sptr make(snr_est_type_t type,
-		       int tag_nsamples=10000,
-		       double alpha=0.001);
-
-      //! Return the estimated signal-to-noise ratio in decibels
-      virtual double snr() = 0;
-
-      //! Return the type of estimator in use
-      virtual snr_est_type_t type() const = 0;
-
-      //! Return how many samples between SNR tags
-      virtual int tag_nsample() const = 0;
-
-      //! Get the running-average coefficient
-      virtual double alpha() const = 0;
-
-      //! Set type of estimator to use
-      virtual void set_type(snr_est_type_t t) = 0;
-
-      //! Set the number of samples between SNR tags
-      virtual void set_tag_nsample(int n) = 0;
-
-      //! Set the running-average coefficient
-      virtual void set_alpha(double alpha) = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_MPSK_SNR_EST_CC_H */
diff --git a/gr-digital/include/digital/ofdm_carrier_allocator_cvc.h b/gr-digital/include/digital/ofdm_carrier_allocator_cvc.h
deleted file mode 100644
index 9ada039b31..0000000000
--- a/gr-digital/include/digital/ofdm_carrier_allocator_cvc.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* -*- c++ -*- */
-/* 
- * Copyright 2013 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#ifndef INCLUDED_DIGITAL_OFDM_CARRIER_ALLOCATOR_CVC_H
-#define INCLUDED_DIGITAL_OFDM_CARRIER_ALLOCATOR_CVC_H
-
-#include <digital/api.h>
-#include <gnuradio/tagged_stream_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Create frequency domain OFDM symbols from complex values, add pilots.
-     * \ingroup ofdm_blk
-     *
-     * \details
-     * This block turns a stream of complex, scalar modulation symbols into vectors
-     * which are the input for an IFFT in an OFDM transmitter. It also supports the
-     * possibility of placing pilot symbols onto the carriers.
-     *
-     * The carriers can be allocated freely, if a carrier is not allocated, it is set
-     * to zero. This allows doing OFDMA-style carrier allocations.
-     *
-     * Input: A tagged stream of complex scalars. The first item must have a tag
-     *        containing the number of complex symbols in this frame.
-     * Output: A tagged stream of complex vectors of length fft_len. This can directly
-     *         be connected to an FFT block. Make sure to set this block to 'reverse'
-     *         for the IFFT. If \p output_is_shifted is true, the FFT block must activate
-     *         FFT shifting, otherwise, set shifting to false. If given, sync words are
-     *         prepended to the output. Note that sync words are prepended verbatim,
-     *         make sure they are shifted (or not).
-     *
-     * Carrier indexes are always such that index 0 is the DC carrier (note: you should
-     * not allocate this carrier). The carriers below the DC carrier are either indexed
-     * with negative numbers, or with indexes larger than \p fft_len/2. Index -1 and index
-     * \p fft_len-1 both identify the carrier below the DC carrier.
-     *
-     */
-    class DIGITAL_API ofdm_carrier_allocator_cvc : virtual public tagged_stream_block
-    {
-     public:
-      typedef boost::shared_ptr<ofdm_carrier_allocator_cvc> sptr;
-
-      virtual std::string len_tag_key() = 0;
-      virtual const int fft_len() = 0;
-      virtual std::vector<std::vector<int> > occupied_carriers() = 0;
-
-      /*
-       * \param fft_len FFT length, is also the maximum width of the OFDM symbols, the
-       *                output vector size and maximum value for elements in
-       *                \p occupied_carriers and \p pilot_carriers.
-       * \param occupied_carriers A vector of vectors of indexes. Example: if
-       *                          occupied_carriers = ((1, 2, 3), (1, 2, 4)), the first
-       *                          three input symbols will be mapped to carriers 1, 2
-       *                          and 3. After that, a new OFDM symbol is started. The next
-       *                          three input symbols will be placed onto carriers 1, 2
-       *                          and 4 of the second OFDM symbol. The allocation then
-       *                          starts from the beginning.
-       *                          Order matters! The first input symbol is always mapped
-       *                          onto occupied_carriers[0][0].
-       * \param pilot_carriers The position of the pilot symbols. Same as occupied_carriers,
-       *                       but the actual symbols are taken from pilot_symbols instead
-       *                       of the input stream.
-       * \param pilot_symbols The pilot symbols which are placed onto the pilot carriers.
-       *                      pilot_symbols[0][0] is placed onto the first OFDM symbol, on
-       *                      carrier index pilot_carriers[0][0] etc.
-       * \param sync_words OFDM symbols that are prepended to the OFDM frame (usually for
-       *                   synchronisation purposes, e.g. OFDM symbols with every second
-       *                   sub-carrier being idle). Is a vector of complex vectors of length
-       *                   \p fft_len
-       * \param len_tag_key The key of the tag identifying the length of the input packet.
-       */
-      static sptr make(
-	  int fft_len,
-	  const std::vector<std::vector<int> > &occupied_carriers,
-	  const std::vector<std::vector<int> > &pilot_carriers,
-	  const std::vector<std::vector<gr_complex> > &pilot_symbols,
-	  const std::vector<std::vector<gr_complex> > &sync_words,
-	  const std::string &len_tag_key = "packet_len",
-	  const bool output_is_shifted=true);
-    };
-
-  } // namespace digital
-} // namespace gr
-
-#endif /* INCLUDED_DIGITAL_OFDM_CARRIER_ALLOCATOR_CVC_H */
-
diff --git a/gr-digital/include/digital/ofdm_chanest_vcvc.h b/gr-digital/include/digital/ofdm_chanest_vcvc.h
deleted file mode 100644
index cfea140a9b..0000000000
--- a/gr-digital/include/digital/ofdm_chanest_vcvc.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -*- c++ -*- */
-/* 
- * Copyright 2013 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_OFDM_CHANEST_VCVC_H
-#define INCLUDED_DIGITAL_OFDM_CHANEST_VCVC_H
-
-#include <digital/api.h>
-#include <gnuradio/block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Estimate channel and coarse frequency offset for OFDM from preambles
-     * \ingroup ofdm_blk
-     * \ingroup synchronizers_blk
-     *
-     * \details
-     * Input: OFDM symbols (in frequency domain). The first one (or two) symbols are expected
-     *        to be synchronisation symbols, which are used to estimate the coarse freq offset
-     *        and the initial equalizer taps (these symbols are removed from the stream).
-     *        The following \p n_data_symbols are passed through unmodified (the actual equalisation
-     *        must be done elsewhere).
-     * Output: The data symbols, without the synchronisation symbols.
-     *         The first data symbol passed through has two tags:
-     *         'ofdm_sync_carr_offset' (integer), the coarse frequency offset as number of carriers,
-     *         and 'ofdm_sync_eq_taps' (complex vector).
-     *         Any tags attached to the synchronisation symbols are attached to the first data
-     *         symbol. All other tags are propagated normally.
-     *
-     * This block assumes the frequency offset is even (i.e. an integer multiple of 2).
-     *
-     * [1] Schmidl, T.M. and Cox, D.C., "Robust frequency and timing synchronization for OFDM",
-     *     Communications, IEEE Transactions on, 1997.
-     * [2] K.D. Kammeyer, "Nachrichtenuebertragung," Chapter. 16.3.2.
-     */
-    class DIGITAL_API ofdm_chanest_vcvc : virtual public block
-    {
-     public:
-      typedef boost::shared_ptr<ofdm_chanest_vcvc> sptr;
-
-      /*
-       * \param sync_symbol1 First synchronisation symbol in the frequency domain. Its length must be
-       *                     the FFT length. For Schmidl & Cox synchronisation, every second sub-carrier
-       *                     has to be zero.
-       * \param sync_symbol2 Second synchronisation symbol in the frequency domain. Must be equal to
-       *                     the FFT length, or zero length if only one synchronisation symbol is used.
-       *                     Using this symbol is how synchronisation is described in [1]. Leaving this
-       *                     empty forces us to interpolate the equalizer taps.
-       *                     If you are using an unusual sub-carrier configuration (e.g. because of OFDMA),
-       *                     this sync symbol is used to identify the active sub-carriers. If you only
-       *                     have one synchronisation symbol, set the active sub-carriers to a non-zero
-       *                     value in here, and also set \p force_one_sync_symbol parameter to true.
-       * \param n_data_symbols The number of data symbols following each set of synchronisation symbols.
-       *                       Must be at least 1.
-       * \param eq_noise_red_len If non-zero, noise reduction for the equalizer taps is done according
-       *                         to [2]. In this case, it is the channel influence time in number of
-       *                         samples. A good value is usually the length of the cyclic prefix.
-       * \param max_carr_offset Limit the number of sub-carriers the frequency offset can maximally be.
-       *                        Leave this zero to try all possibilities.
-       * \param force_one_sync_symbol See \p sync_symbol2.
-       */
-      static sptr make(
-	  const std::vector<gr_complex> &sync_symbol1,
-	  const std::vector<gr_complex> &sync_symbol2,
-	  int n_data_symbols,
-	  int eq_noise_red_len=0,
-	  int max_carr_offset=-1,
-	  bool force_one_sync_symbol=false
-      );
-    };
-
-  } // namespace digital
-} // namespace gr
-
-#endif /* INCLUDED_DIGITAL_OFDM_CHANEST_VCVC_H */
-
diff --git a/gr-digital/include/digital/ofdm_cyclic_prefixer.h b/gr-digital/include/digital/ofdm_cyclic_prefixer.h
deleted file mode 100644
index e924adb92d..0000000000
--- a/gr-digital/include/digital/ofdm_cyclic_prefixer.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- c++ -*- */
-/* 
- * Copyright 2013 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_OFDM_CYCLIC_PREFIXER_H
-#define INCLUDED_DIGITAL_OFDM_CYCLIC_PREFIXER_H
-
-#include <digital/api.h>
-#include <gnuradio/tagged_stream_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Adds a cyclic prefix and performs pulse shaping on OFDM symbols.
-     * \ingroup ofdm_blk
-     *
-     * \details
-     * Input: OFDM symbols (in the time domain, i.e. after the IFFT). Optionally,
-     *        entire frames can be processed. In this case, \p len_tag_key must be
-     *        specified which holds the key of the tag that denotes how
-     *        many OFDM symbols are in a frame.
-     * Output: A stream of (scalar) complex symbols, which include the cyclic prefix
-     *         and the pulse shaping.
-     *         Note: If complete frames are processed, and \p rolloff_len is greater
-     *         than zero, the final OFDM symbol is followed by the delay line of
-     *         the pulse shaping.
-     *
-     * The pulse shape is a raised cosine in the time domain.
-     */
-    class DIGITAL_API ofdm_cyclic_prefixer : virtual public tagged_stream_block
-    {
-     public:
-      typedef boost::shared_ptr<ofdm_cyclic_prefixer> sptr;
-
-      /*!
-       * \param input_size FFT length (i.e. length of the OFDM symbols)
-       * \param output_size FFT length + cyclic prefix length (in samples)
-       * \param rolloff_len Length of the rolloff flank in samples
-       * \param len_tag_key For framed processing the key of the length tag
-       */
-      static sptr make(
-	  size_t input_size,
-	  size_t output_size,
-	  int rolloff_len=0,
-	  const std::string &len_tag_key=""
-      );
-    };
-
-  } // namespace digital
-} // namespace gr
-
-#endif /* INCLUDED_DIGITAL_OFDM_CYCLIC_PREFIXER_H */
-
diff --git a/gr-digital/include/digital/ofdm_equalizer_base.h b/gr-digital/include/digital/ofdm_equalizer_base.h
deleted file mode 100644
index a0b9c76673..0000000000
--- a/gr-digital/include/digital/ofdm_equalizer_base.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* -*- c++ -*- */
-/* Copyright 2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_OFDM_EQUALIZER_BASE_H
-#define INCLUDED_DIGITAL_OFDM_EQUALIZER_BASE_H
-
-#include <digital/api.h>
-#include <gnuradio/tags.h>
-#include <gnuradio/gr_complex.h>
-#include <boost/enable_shared_from_this.hpp>
-
-namespace gr {
-  namespace digital {
-
-    /* \brief Base class for implementation details of frequency-domain OFDM equalizers.
-     * \ingroup ofdm_blk
-     * \ingroup equalizers_blk
-     */
-    class DIGITAL_API ofdm_equalizer_base
-      : public boost::enable_shared_from_this<ofdm_equalizer_base>
-    {
-     protected:
-      int d_fft_len;
-      int d_carr_offset;
-
-     public:
-      typedef boost::shared_ptr<ofdm_equalizer_base> sptr;
-
-      ofdm_equalizer_base(int fft_len);
-      virtual ~ofdm_equalizer_base();
-
-      //! Reset the channel information state knowledge
-      virtual void reset() = 0;
-      //! Set the carrier offset in integer multiples
-      void set_carrier_offset(int offset) { d_carr_offset = offset; };
-      virtual void equalize(
-		      gr_complex *frame,
-		      int n_sym,
-		      const std::vector<gr_complex> &initial_taps = std::vector<gr_complex>(),
-		      const std::vector<tag_t> &tags = std::vector<tag_t>()) = 0;
-      //! Return the current channel state
-      virtual void get_channel_state(std::vector<gr_complex> &taps) = 0;
-      int fft_len() { return d_fft_len; };
-      sptr base() { return shared_from_this(); };
-    };
-
-
-    /* \brief Base class for implementation details of 1-dimensional OFDM FDEs which use pilot tones.
-     * \ingroup digital
-     *
-     */
-    class DIGITAL_API ofdm_equalizer_1d_pilots : public ofdm_equalizer_base
-    {
-     protected:
-      //! If \p d_occupied_carriers[k][l] is true, symbol k, carrier l is carrying data.
-      //  (this is a different format than occupied_carriers!)
-      std::vector<bool> d_occupied_carriers;
-      //! If \p d_pilot_carriers[k][l] is true, symbol k, carrier l is carrying data.
-      //  (this is a different format than pilot_carriers!)
-      std::vector<std::vector<bool> > d_pilot_carriers;
-      //! If \p d_pilot_carriers[k][l] is true, d_pilot_symbols[k][l] is its tx'd value.
-      //  (this is a different format than pilot_symbols!)
-      std::vector<std::vector<gr_complex> > d_pilot_symbols;
-      //! In case the frame doesn't begin with OFDM symbol 0, this is the index of the first symbol
-      int d_symbols_skipped;
-      //! The current position in the set of pilot symbols
-      int d_pilot_carr_set;
-      //! Vector of length d_fft_len saving the current channel state (on the occupied carriers)
-      std::vector<gr_complex> d_channel_state;
-
-     public:
-      typedef boost::shared_ptr<ofdm_equalizer_1d_pilots> sptr;
-
-      ofdm_equalizer_1d_pilots(
-	  int fft_len,
-	  const std::vector<std::vector<int> > &occupied_carriers,
-	  const std::vector<std::vector<int> > &pilot_carriers,
-	  const std::vector<std::vector<gr_complex> > &pilot_symbols,
-	  int symbols_skipped,
-	  bool input_is_shifted);
-      ~ofdm_equalizer_1d_pilots();
-
-      void reset();
-      void get_channel_state(std::vector<gr_complex> &taps);
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_OFDM_EQUALIZER_BASE_H */
-
diff --git a/gr-digital/include/digital/ofdm_equalizer_simpledfe.h b/gr-digital/include/digital/ofdm_equalizer_simpledfe.h
deleted file mode 100644
index b81f3c7022..0000000000
--- a/gr-digital/include/digital/ofdm_equalizer_simpledfe.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/* -*- c++ -*- */
-/* Copyright 2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_OFDM_EQUALIZER_SIMPLEDFE_H
-#define INCLUDED_DIGITAL_OFDM_EQUALIZER_SIMPLEDFE_H
-
-#include <digital/api.h>
-#include <digital/constellation.h>
-#include <digital/ofdm_equalizer_base.h>
-
-namespace gr {
-  namespace digital {
-
-    /* \brief Simple decision feedback equalizer for OFDM.
-     * \ingroup ofdm_blk
-     * \ingroup equalizers_blk
-     *
-     * \details
-     * Equalizes an OFDM signal symbol by symbol using knowledge of the
-     * complex modulations symbols.
-     * For every symbol, the following steps are performed:
-     * - On every sub-carrier, decode the modulation symbol
-     * - Use the difference between the decoded symbol and the received symbol
-     *   to update the channel state on this carrier
-     * - Whenever a pilot symbol is found, it uses the known pilot symbol to
-     *   update the channel state.
-     *
-     * This equalizer makes a lot of assumptions:
-     * - The initial channel state is good enough to decode the first
-     *   symbol without error (unless the first symbol only consists of pilot
-     *   tones)
-     * - The channel changes only very slowly, such that the channel state
-     *   from one symbol is enough to decode the next
-     * - SNR low enough that equalization will always suffice to correctly
-     *   decode a symbol
-     * If these assumptions are not met, the most common error is that the
-     * channel state is estimated incorrectly during equalization; after that,
-     * all subsequent symbols will be completely wrong.
-     *
-     * Note that the equalized symbols are *exact points* on the constellation.
-     * This means soft information of the modulation symbols is lost after the
-     * equalization, which is suboptimal for channel codes that use soft decision.
-     *
-     */
-    class DIGITAL_API ofdm_equalizer_simpledfe : public ofdm_equalizer_1d_pilots
-    {
-     public:
-      typedef boost::shared_ptr<ofdm_equalizer_simpledfe> sptr;
-
-      ofdm_equalizer_simpledfe(
-	  int fft_len,
-	  const gr::digital::constellation_sptr &constellation,
-	  const std::vector<std::vector<int> > &occupied_carriers = std::vector<std::vector<int> >(),
-	  const std::vector<std::vector<int> > &pilot_carriers = std::vector<std::vector<int> >(),
-	  const std::vector<std::vector<gr_complex> > &pilot_symbols = std::vector<std::vector<gr_complex> >(),
-	  int symbols_skipped = 0,
-	  float alpha = 0.1,
-	  bool input_is_shifted = true);
-
-      ~ofdm_equalizer_simpledfe();
-
-      void equalize(gr_complex *frame,
-		      int n_sym,
-		      const std::vector<gr_complex> &initial_taps = std::vector<gr_complex>(),
-		      const std::vector<tag_t> &tags = std::vector<tag_t>());
-
-      /*
-       * \param fft_len FFT length
-       * \param constellation The constellation object describing the modulation used
-       *                      on the subcarriers (e.g. QPSK). This is used to decode
-       *                      the individual symbols.
-       * \param occupied_carriers List of occupied carriers, see ofdm_carrier_allocator
-       *                          for a description.
-       * \param pilot_carriers Position of pilot symbols, see ofdm_carrier_allocator
-       *                          for a description.
-       * \param pilot_symbols Value of pilot symbols, see ofdm_carrier_allocator
-       *                          for a description.
-       * \param alpha Averaging coefficient (in a nutshell, if \f$H_{i,k}\f$ is the channel
-       *              state for carrier i and symbol k,
-       *              \f$H_{i,k+1} =  \alpha H_{i,k} + (1 - \alpha) H_{i,k+1}\f$. Make this
-       *              larger if there's more noise, but keep in mind that larger values
-       *              of alpha mean slower response to channel changes).
-       * \param symbols_skipped Starting position within occupied_carriers and pilot_carriers.
-       *                        If the first symbol of the frame was removed (e.g. to decode the
-       *                        header), set this make sure the pilot symbols are correctly
-       *                        identified.
-       * \param input_is_shifted Set this to false if the input signal is not shifted, i.e.
-       *                         the first input items is on the DC carrier.
-       *                         Note that a lot of the OFDM receiver blocks operate on shifted
-       *                         signals!
-       */
-      static sptr make(
-	  int fft_len,
-	  const gr::digital::constellation_sptr &constellation,
-	  const std::vector<std::vector<int> > &occupied_carriers = std::vector<std::vector<int> >(),
-	  const std::vector<std::vector<int> > &pilot_carriers = std::vector<std::vector<int> >(),
-	  const std::vector<std::vector<gr_complex> > &pilot_symbols = std::vector<std::vector<gr_complex> >(),
-	  int symbols_skipped=0,
-	  float alpha=0.1,
-	  bool input_is_shifted=true
-      );
-
-     private:
-      gr::digital::constellation_sptr d_constellation;
-      //! Averaging coefficient
-      float d_alpha;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_OFDM_EQUALIZER_SIMPLEDFE_H */
-
diff --git a/gr-digital/include/digital/ofdm_equalizer_static.h b/gr-digital/include/digital/ofdm_equalizer_static.h
deleted file mode 100644
index 3856871c99..0000000000
--- a/gr-digital/include/digital/ofdm_equalizer_static.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/* -*- c++ -*- */
-/* Copyright 2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_OFDM_EQUALIZER_STATIC_H
-#define INCLUDED_DIGITAL_OFDM_EQUALIZER_STATIC_H
-
-#include <digital/api.h>
-#include <digital/constellation.h>
-#include <digital/ofdm_equalizer_base.h>
-
-namespace gr {
-  namespace digital {
-
-    /* \brief Very simple static equalizer for OFDM.
-     * \ingroup ofdm_blk
-     * \ingroup equalizers_blk
-     *
-     * \details
-     * This is an extremely simple equalizer. It will only work for
-     * high-SNR, very, very slowly changing channels.
-     *
-     * It simply divides the signal with the currently known channel
-     * state. Whenever a pilot symbol comes around, it updates the
-     * channel state on that particular carrier by dividing the
-     * received symbol with the known pilot symbol.
-     */
-    class DIGITAL_API ofdm_equalizer_static : public ofdm_equalizer_1d_pilots
-    {
-     public:
-      typedef boost::shared_ptr<ofdm_equalizer_static> sptr;
-
-      ofdm_equalizer_static(
-	  int fft_len,
-	  const std::vector<std::vector<int> > &occupied_carriers = std::vector<std::vector<int> >(),
-	  const std::vector<std::vector<int> > &pilot_carriers = std::vector<std::vector<int> >(),
-	  const std::vector<std::vector<gr_complex> > &pilot_symbols = std::vector<std::vector<gr_complex> >(),
-	  int symbols_skipped = 0,
-	  bool input_is_shifted = true
-      );
-      ~ofdm_equalizer_static();
-
-      /*! \brief Divide the input signal with the current channel state.
-       *
-       * Does the following (and nothing else):
-       * - Divide every OFDM symbol with the current channel state
-       * - If a pilot symbol is found, re-set the channel state by dividing the received
-       *   symbol with the known pilot symbol
-       */
-      void equalize(gr_complex *frame,
-		      int n_sym,
-		      const std::vector<gr_complex> &initial_taps = std::vector<gr_complex>(),
-		      const std::vector<tag_t> &tags = std::vector<tag_t>());
-
-      /*
-       * \param fft_len FFT length
-       * \param occupied_carriers List of occupied carriers, see ofdm_carrier_allocator
-       *                          for a description.
-       * \param pilot_carriers Position of pilot symbols, see ofdm_carrier_allocator
-       *                          for a description.
-       * \param pilot_symbols Value of pilot symbols, see ofdm_carrier_allocator
-       *                          for a description.
-       * \param symbols_skipped Starting position within occupied_carriers and pilot_carriers.
-       *                        If the first symbol of the frame was removed (e.g. to decode the
-       *                        header), set this make sure the pilot symbols are correctly
-       *                        identified.
-       * \param input_is_shifted Set this to false if the input signal is not shifted, i.e.
-       *                         the first input items is on the DC carrier.
-       *                         Note that a lot of the OFDM receiver blocks operate on shifted
-       *                         signals!
-       */
-      static sptr make(
-	int fft_len,
-	const std::vector<std::vector<int> > &occupied_carriers = std::vector<std::vector<int> >(),
-	const std::vector<std::vector<int> > &pilot_carriers = std::vector<std::vector<int> >(),
-	const std::vector<std::vector<gr_complex> > &pilot_symbols = std::vector<std::vector<gr_complex> >(),
-	int symbols_skipped = 0,
-	bool input_is_shifted = true
-      );
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_OFDM_EQUALIZER_STATIC_H */
-
diff --git a/gr-digital/include/digital/ofdm_frame_acquisition.h b/gr-digital/include/digital/ofdm_frame_acquisition.h
deleted file mode 100644
index cf2ae27e21..0000000000
--- a/gr-digital/include/digital/ofdm_frame_acquisition.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2007,2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_OFDM_FRAME_ACQUISITION_H
-#define INCLUDED_DIGITAL_OFDM_FRAME_ACQUISITION_H
-
-#include <digital/api.h>
-#include <gnuradio/block.h>
-#include <vector>
-
-namespace gr {
-  namespace digital {
-    
-    /*!
-     * \brief take a vector of complex constellation points in from an
-     * FFT and performs a correlation and equalization.
-     * \ingroup ofdm_blk
-     *
-     * \details
-     * This block takes the output of an FFT of a received OFDM symbol
-     * and finds the start of a frame based on two known symbols. It
-     * also looks at the surrounding bins in the FFT output for the
-     * correlation in case there is a large frequency shift in the
-     * data. This block assumes that the fine frequency shift has
-     * already been corrected and that the samples fall in the middle
-     * of one FFT bin.
-     *
-     * It then uses one of those known symbols to estimate the channel
-     * response over all subcarriers and does a simple 1-tap
-     * equalization on all subcarriers. This corrects for the phase
-     * and amplitude distortion caused by the channel.
-     */
-    class DIGITAL_API ofdm_frame_acquisition : virtual public block
-    {
-    public:
-      // gr::digital::ofdm_frame_acquisition::sptr
-      typedef boost::shared_ptr<ofdm_frame_acquisition> sptr;
-
-      /*! 
-       * Make an OFDM correlator and equalizer.
-       *
-       * \param occupied_carriers   The number of subcarriers with data in the received symbol
-       * \param fft_length          The size of the FFT vector (occupied_carriers + unused carriers)
-       * \param cplen		    The length of the cycle prefix
-       * \param known_symbol        A vector of complex numbers representing a known symbol at the
-       *                            start of a frame (usually a BPSK PN sequence)
-       * \param max_fft_shift_len   Set's the maximum distance you can look between bins for correlation
-       */
-      static sptr make(unsigned int occupied_carriers, unsigned int fft_length,
-		       unsigned int cplen,
-		       const std::vector<gr_complex> &known_symbol, 
-		       unsigned int max_fft_shift_len=4);
-  
-      /*!
-       * \brief Return an estimate of the SNR of the channel
-       */
-      virtual float snr() = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_OFDM_FRAME_ACQUISITION_H */
diff --git a/gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h b/gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h
deleted file mode 100644
index e0ecb6a004..0000000000
--- a/gr-digital/include/digital/ofdm_frame_equalizer_vcvc.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- c++ -*- */
-/* Copyright 2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_OFDM_FRAME_EQUALIZER_VCVC_H
-#define INCLUDED_OFDM_FRAME_EQUALIZER_VCVC_H
-
-#include <digital/api.h>
-#include <digital/ofdm_equalizer_base.h>
-#include <gnuradio/tagged_stream_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief OFDM frame equalizer
-     * \ingroup ofdm_blk
-     *
-     * \details
-     * Performs equalization in one or two dimensions on a tagged OFDM frame.
-     * Input: a tagged series of OFDM symbols.
-     * Output: The same as the input, but equalized.
-     */
-    class DIGITAL_API ofdm_frame_equalizer_vcvc : virtual public tagged_stream_block
-    {
-     public:
-      typedef boost::shared_ptr<ofdm_frame_equalizer_vcvc> sptr;
-
-      /*!
-       * \param equalizer The equalizer object that will do the actual work
-       * \param len_tag_key Length tag key
-       * \param propagate_channel_state If true, the channel state after the last symbol
-       *                                will be added to the first symbol as a tag
-       */
-      static sptr make(
-	   ofdm_equalizer_base::sptr equalizer,
-	   const std::string &len_tag_key = "frame_len",
-	   bool propagate_channel_state=false,
-	   int fixed_frame_len=0
-      );
-    };
-
-  } // namespace digital
-} // namespace gr
-
-#endif /* INCLUDED_OFDM_FRAME_EQUALIZER_VCVC_H */
-
diff --git a/gr-digital/include/digital/ofdm_frame_sink.h b/gr-digital/include/digital/ofdm_frame_sink.h
deleted file mode 100644
index 9408578554..0000000000
--- a/gr-digital/include/digital/ofdm_frame_sink.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2007,2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_OFDM_FRAME_SINK_H
-#define INCLUDED_DIGITAL_OFDM_FRAME_SINK_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-#include <gnuradio/msg_queue.h>
-
-namespace gr {
-  namespace digital {
-    
-    /*!
-     * \brief Takes an OFDM symbol in, demaps it into bits of 0's and
-     * 1's, packs them into packets, and sends to to a message queue
-     * sink.
-     * \ingroup ofdm_blk
-     *
-     * \details
-     * NOTE: The mod input parameter simply chooses a pre-defined
-     * demapper/slicer. Eventually, we want to be able to pass in a
-     * reference to an object to do the demapping and slicing for a
-     * given modulation type.
-     */
-    class DIGITAL_API ofdm_frame_sink : virtual public sync_block
-    {
-    public:
-      // gr::digital::ofdm_frame_sink::sptr
-      typedef boost::shared_ptr<ofdm_frame_sink> sptr;
-
-      /*!
-       * Make an OFDM frame sink block.
-       *
-       * \param sym_position vector of OFDM carrier symbols in complex space
-       * \param sym_value_out vector of bit mapped from the complex symbol space
-       * \param target_queue message queue for the packets to go into
-       * \param occupied_tones The number of subcarriers with data in the received symbol
-       * \param phase_gain gain of the phase tracking loop
-       * \param freq_gain gain of the frequency tracking loop
-       */
-      static sptr make(const std::vector<gr_complex> &sym_position, 
-		       const std::vector<char> &sym_value_out,
-		       msg_queue::sptr target_queue,
-		       int occupied_tones,
-		       float phase_gain=0.25, float freq_gain=0.25*0.25/4);
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_OFDM_FRAME_SINK_H */
diff --git a/gr-digital/include/digital/ofdm_insert_preamble.h b/gr-digital/include/digital/ofdm_insert_preamble.h
deleted file mode 100644
index 8abe4772b7..0000000000
--- a/gr-digital/include/digital/ofdm_insert_preamble.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2007,2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef INCLUDED_DIGITAL_OFDM_INSERT_PREAMBLE_H
-#define INCLUDED_DIGITAL_OFDM_INSERT_PREAMBLE_H
-
-#include <digital/api.h>
-#include <gnuradio/block.h>
-#include <vector>
-
-namespace gr {
-  namespace digital {
-    
-    /*!
-     * \brief insert "pre-modulated" preamble symbols before each payload.
-     * \ingroup ofdm_blk
-     * \ingroup synchronizers_blk
-     *
-     * \details
-     * <pre>
-     * input 1: stream of vectors of gr_complex [fft_length]
-     *          These are the modulated symbols of the payload.
-     *
-     * input 2: stream of char.  The LSB indicates whether the corresponding
-     *          symbol on input 1 is the first symbol of the payload or not.
-     *          It's a 1 if the corresponding symbol is the first symbol,
-     *          otherwise 0.
-     *
-     * N.B., this implies that there must be at least 1 symbol in the payload.
-     *
-     * output 1: stream of vectors of gr_complex [fft_length]
-     *           These include the preamble symbols and the payload symbols.
-     *
-     * output 2: stream of char.  The LSB indicates whether the corresponding
-     *           symbol on input 1 is the first symbol of a packet (i.e., the
-     *           first symbol of the preamble.)   It's a 1 if the corresponding
-     *           symbol is the first symbol, otherwise 0.
-     * </pre>
-     */
-    class DIGITAL_API ofdm_insert_preamble : virtual public block
-    {
-    public:
-      // gr::digital::ofdm_insert_preamble::sptr
-      typedef boost::shared_ptr<ofdm_insert_preamble> sptr;
-      
-      /*!
-       * Make an OFDM preamble inserter block.
-       *
-       * \param fft_length length of each symbol in samples.
-       * \param preamble   vector of symbols that represent the pre-modulated preamble.
-       */
-      static sptr make(int fft_length,
-		       const std::vector<std::vector<gr_complex> > &preamble);
-
-      virtual void enter_preamble() = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_OFDM_INSERT_PREAMBLE_H */
diff --git a/gr-digital/include/digital/ofdm_mapper_bcv.h b/gr-digital/include/digital/ofdm_mapper_bcv.h
deleted file mode 100644
index 9719ab3e86..0000000000
--- a/gr-digital/include/digital/ofdm_mapper_bcv.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2007,2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_OFDM_MAPPER_BCV_H
-#define INCLUDED_DIGITAL_OFDM_MAPPER_BCV_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-#include <gnuradio/msg_queue.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief take a stream of bytes in and map to a vector of complex
-     * constellation points suitable for IFFT input to be used in an
-     * ofdm modulator.
-     * \ingroup ofdm_blk
-     *
-     * \details
-     * Abstract class must be subclassed with specific mapping.
-     */
-    class DIGITAL_API ofdm_mapper_bcv : virtual public sync_block
-    {
-    public:
-      // gr::digital::ofdm_mapper_bcv::sptr
-      typedef boost::shared_ptr<ofdm_mapper_bcv> sptr;
-
-      /*!
-       * Make an OFDM mapper block.
-       *
-       * \param constellation vector of OFDM carrier symbols in complex space
-       * \param msgq_limit limit on number of messages the queue can store
-       * \param occupied_carriers The number of subcarriers with data in the received symbol
-       * \param fft_length The size of the FFT vector (occupied_carriers + unused carriers)
-       */
-      static sptr make(const std::vector<gr_complex> &constellation,
-		       unsigned msgq_limit, 
-		       unsigned occupied_carriers,
-		       unsigned int fft_length);
-
-      virtual msg_queue::sptr msgq() const = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_OFDM_MAPPER_BCV_H */
diff --git a/gr-digital/include/digital/ofdm_sampler.h b/gr-digital/include/digital/ofdm_sampler.h
deleted file mode 100644
index 10c43c28ef..0000000000
--- a/gr-digital/include/digital/ofdm_sampler.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2007,2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_OFDM_SAMPLER_H
-#define INCLUDED_DIGITAL_OFDM_SAMPLER_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-    
-    /*!
-     * \brief does the rest of the OFDM stuff
-     * \ingroup ofdm_blk
-     */
-    class DIGITAL_API ofdm_sampler : virtual public block
-    {
-    public:
-      // gr::digital::ofdm_sampler::sptr
-      typedef boost::shared_ptr<ofdm_sampler> sptr;
-
-      /*!
-       * Make an OFDM sampler block.
-       *
-       * \param fft_length The size of the FFT vector (occupied_carriers + unused carriers)
-       * \param symbol_length Length of the full symbol (fft_length + CP length)
-       * \param timeout timeout in samples when we stop looking for a symbol after initial ack.
-       */
-      static sptr make(unsigned int fft_length, 
-		       unsigned int symbol_length,
-		       unsigned int timeout=1000);
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_OFDM_SAMPLER_H */
diff --git a/gr-digital/include/digital/ofdm_serializer_vcc.h b/gr-digital/include/digital/ofdm_serializer_vcc.h
deleted file mode 100644
index 6210821699..0000000000
--- a/gr-digital/include/digital/ofdm_serializer_vcc.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- c++ -*- */
-/* Copyright 2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_OFDM_SERIALIZER_VCC_H
-#define INCLUDED_DIGITAL_OFDM_SERIALIZER_VCC_H
-
-#include <digital/api.h>
-#include <gnuradio/tagged_stream_block.h>
-#include <digital/ofdm_carrier_allocator_cvc.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Serializes complex modulations symbols from OFDM sub-carriers
-     * \ingroup ofdm_blk
-     *
-     * \details
-     * This is the inverse block to the carrier_allocator_cvc. It outputs the
-     * complex data symbols as a tagged stream, discarding the pilot symbols.
-     *
-     * If given, two different tags are parsed: The first key (\p len_tag_key)
-     * specifies the number of OFDM symbols in the frame at the input. The
-     * second key (\p packet_len_tag_key) specifies the number of complex symbols
-     * that are coded into this frame. If given, this second key is then used
-     * at the output, otherwise, \p len_tag_key is used.
-     * If both are given, the packet length specifies the maximum number of
-     * output items, and the frame length specifies the exact number of
-     * consumed input items.
-     *
-     * Input: Complex vectors of length \p fft_len
-     * Output: Complex scalars, in the same order as specified in occupied_carriers.
-     */
-    class DIGITAL_API ofdm_serializer_vcc : virtual public tagged_stream_block
-    {
-     public:
-      typedef boost::shared_ptr<ofdm_serializer_vcc> sptr;
-
-      /*!
-       * \param fft_len FFT length
-       * \param occupied_carriers See ofdm_carrier_allocator_cvc.
-       * \param len_tag_key The key of the tag identifying the length of the input frame in OFDM symbols.
-       * \param packet_len_tag_key The key of the tag identifying the number of complex symbols in this packet.
-       * \param symbols_skipped If the first symbol is not allocated as in \p occupied_carriers[0], set this
-       * \param input_is_shifted If the input has the DC carrier on index 0 (i.e. it is not FFT shifted), set this to false
-       */
-      static sptr make(
-	  int fft_len,
-	  const std::vector<std::vector<int> > &occupied_carriers,
-	  const std::string &len_tag_key="frame_len",
-	  const std::string &packet_len_tag_key="",
-	  int symbols_skipped=0,
-	  bool input_is_shifted=true
-      );
-
-      /*!
-       * \param allocator The carrier allocator block of which this shall be the inverse
-       * \param packet_len_tag_key The key of the tag identifying the number of complex symbols in this packet.
-       * \param symbols_skipped If the first symbol is not allocated as in \p occupied_carriers[0], set this
-       * \param input_is_shifted If the input has the DC carrier on index 0 (i.e. it is not FFT shifted), set this to false
-       */
-      static sptr make(
-	  const gr::digital::ofdm_carrier_allocator_cvc::sptr &allocator,
-	  const std::string &packet_len_tag_key="",
-	  int symbols_skipped=0,
-	  bool input_is_shifted=true
-      );
-    };
-
-  } // namespace digital
-} // namespace gr
-
-#endif /* INCLUDED_DIGITAL_OFDM_SERIALIZER_VCC_H */
-
diff --git a/gr-digital/include/digital/ofdm_sync_sc_cfb.h b/gr-digital/include/digital/ofdm_sync_sc_cfb.h
deleted file mode 100644
index db01e14dc7..0000000000
--- a/gr-digital/include/digital/ofdm_sync_sc_cfb.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- c++ -*- */
-/* 
- * Copyright 2013 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#ifndef INCLUDED_DIGITAL_OFDM_SYNC_SC_CFB_H
-#define INCLUDED_DIGITAL_OFDM_SYNC_SC_CFB_H
-
-#include <digital/api.h>
-#include <gnuradio/hier_block2.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Schmidl & Cox synchronisation for OFDM
-     * \ingroup ofdm_blk
-     * \ingroup synchronizers_blk
-     *
-     * \details
-     * Input: complex samples.
-     * Output 0: Fine frequency offset, scaled by the OFDM symbol duration.
-     *           This is \f$\hat{\varphi}\f$ in [1]. The normalized frequency
-     *           offset is then 2.0*output0/fft_len.
-     * Output 1: Beginning of the first OFDM symbol after the first (doubled) OFDM
-     *           symbol. The beginning is marked with a 1 (it's 0 everywhere else).
-     *
-     * The evaluation of the coarse frequency offset is *not* done in this block.
-     * Also, the initial equalizer taps are not calculated here.
-     *
-     * Note that we use a different normalization factor in the timing metric than
-     * the authors do in their original work[1]. If the timing metric (8) is
-     * \f[
-     * M(d) = \frac{|P(d)|^2}{(R(d))^2},
-     * \f]
-     * we calculate the normalization as
-     * \f[
-     * R(d) = \frac{1}{2} \sum_{k=0}^{N-1} |r_{k+d}|^2,
-     * \f]
-     * i.e., we estimate the energy from *both* half-symbols. This avoids spurious detects
-     * at the end of a burst, when the energy level suddenly drops.
-     *
-     * [1] Schmidl, T.M. and Cox, D.C., "Robust frequency and timing synchronization for OFDM",
-     *     Communications, IEEE Transactions on, 1997.
-     */
-    class DIGITAL_API ofdm_sync_sc_cfb : virtual public hier_block2
-    {
-     public:
-      typedef boost::shared_ptr<ofdm_sync_sc_cfb> sptr;
-
-      /*! \param fft_len FFT length
-       *  \param cp_len Length of the guard interval (cyclic prefix) in samples
-       */
-      static sptr make(int fft_len, int cp_len);
-    };
-
-  } // namespace digital
-} // namespace gr
-
-#endif /* INCLUDED_DIGITAL_OFDM_SYNC_SC_CFB_H */
-
diff --git a/gr-digital/include/digital/packet_header_default.h b/gr-digital/include/digital/packet_header_default.h
deleted file mode 100644
index 0e619c9a95..0000000000
--- a/gr-digital/include/digital/packet_header_default.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/* -*- c++ -*- */
-/* Copyright 2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_PACKET_HEADER_DEFAULT_H
-#define INCLUDED_DIGITAL_PACKET_HEADER_DEFAULT_H
-
-#include <gnuradio/tags.h>
-#include <digital/api.h>
-#include <boost/enable_shared_from_this.hpp>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Default header formatter for digital packet transmission.
-     * \ingroup packet_operators_blk
-     *
-     * \details
-     * For bursty/packetized digital transmission, packets are usually prepended
-     * with a packet header, containing the number of bytes etc.
-     * This class is not a block, but a tool to create these packet header.
-     *
-     * This is a default packet header (see header_formatter()) for a description
-     * on the header format). To create other header, derive packet header creator
-     * classes from this function.
-     *
-     * gr::digital::packet_headergenerator_bb uses header generators derived from
-     * this class to create packet headers from data streams.
-     */
-    class DIGITAL_API packet_header_default : public boost::enable_shared_from_this<gr::digital::packet_header_default>
-    {
-     public:
-      typedef boost::shared_ptr<packet_header_default> sptr;
-
-      packet_header_default(
-		      long header_len,
-		      const std::string &len_tag_key="packet_len",
-		      const std::string &num_tag_key="packet_num",
-		      int bits_per_byte=1);
-      ~packet_header_default();
-
-      sptr base() { return shared_from_this(); };
-      sptr formatter() { return shared_from_this(); };
-
-      void set_header_num(unsigned header_num) { d_header_number = header_num; };
-      long header_len() { return d_header_len; };
-      pmt::pmt_t len_tag_key() { return d_len_tag_key; };
-
-      /*!
-       * \brief Encodes the header information in the given tags into bits and places them into \p out
-       *
-       * Uses the following header format:
-       * Bits 0-11: The packet length (what was stored in the tag with key \p len_tag_key)
-       * Bits 12-27: The header number (counts up everytime this function is called)
-       * Bit 28: Even parity bit
-       * All other bits: Are set to zero
-       *
-       * If the header length is smaller than 29, bits are simply left out. For this
-       * reason, they always start with the LSB.
-       */
-      virtual bool header_formatter(
-	  long packet_len,
-	  unsigned char *out,
-	  const std::vector<tag_t> &tags=std::vector<tag_t>()
-      );
-
-      /*!
-       * \brief Inverse function to header_formatter().
-       *
-       * Reads the bit stream in \p header and writes a corresponding tag into \p tags.
-       */
-      virtual bool header_parser(
-	const unsigned char *header,
-	std::vector<tag_t> &tags);
-
-      static sptr make(
-	      long header_len,
-	      const std::string &len_tag_key="packet_len",
-	      const std::string &num_tag_key="packet_num",
-	      int bits_per_byte=1);
-
-    protected:
-      long d_header_len;
-      pmt::pmt_t d_len_tag_key;
-      pmt::pmt_t d_num_tag_key;
-      int d_bits_per_byte;
-      unsigned d_header_number;
-      unsigned d_mask;
-    };
-
-  } // namespace digital
-} // namespace gr
-
-#endif /* INCLUDED_DIGITAL_PACKET_HEADER_DEFAULT_H */
-
diff --git a/gr-digital/include/digital/packet_header_ofdm.h b/gr-digital/include/digital/packet_header_ofdm.h
deleted file mode 100644
index 734c04692a..0000000000
--- a/gr-digital/include/digital/packet_header_ofdm.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/* -*- c++ -*- */
-/* Copyright 2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_PACKET_HEADER_OFDM_H
-#define INCLUDED_DIGITAL_PACKET_HEADER_OFDM_H
-
-#include <vector>
-#include <digital/api.h>
-#include <digital/packet_header_default.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Header utility for OFDM signals.
-     * \ingroup ofdm_blk
-     */
-    class DIGITAL_API packet_header_ofdm : public packet_header_default
-    {
-     public:
-      typedef boost::shared_ptr<packet_header_ofdm> sptr;
-
-      packet_header_ofdm(
-		      const std::vector<std::vector<int> > &occupied_carriers,
-		      int n_syms,
-		      const std::string &len_tag_key,
-		      const std::string &frame_len_tag_key,
-		      const std::string &num_tag_key,
-		      int bits_per_header_sym,
-		      int bits_per_payload_sym);
-      ~packet_header_ofdm();
-
-      /*!
-       * \brief Inverse function to header_formatter().
-       *
-       * Does the same as packet_header_default::header_parser(), but
-       * adds another tag that stores the number of OFDM symbols in the
-       * packet.
-       * Note that there is usually no linear connection between the number
-       * of OFDM symbols and the packet length, because, a packet might
-       * finish mid-OFDM-symbol.
-       */
-      bool header_parser(
-	const unsigned char *header,
-	std::vector<tag_t> &tags);
-
-      /*!
-       * \param occupied_carriers See carrier allocator
-       * \param n_syms The number of OFDM symbols the header should be (usually 1)
-       * \param len_tag_key The tag key used for the packet length (number of bytes)
-       * \param frame_len_tag_key The tag key used for the frame length (number of
-       *                          OFDM symbols, this is the tag key required for the
-       *                          frame equalizer etc.)
-       * \param bits_per_header_sym Bits per complex symbol in the header, e.g. 1 if
-       *                            the header is BPSK modulated, 2 if it's QPSK
-       *                            modulated etc.
-       * \param bits_per_payload_sym Bits per complex symbol in the payload. This is
-       *                             required to figure out how many OFDM symbols
-       *                             are necessary to encode the given number of
-       *                             bytes.
-       */
-      static sptr make(
-	    const std::vector<std::vector<int> > &occupied_carriers,
-	    int n_syms,
-	    const std::string &len_tag_key="packet_len",
-	    const std::string &frame_len_tag_key="frame_len",
-	    const std::string &num_tag_key="packet_num",
-	    int bits_per_header_sym=1,
-	    int bits_per_payload_sym=1
-      );
-
-
-     protected:
-      pmt::pmt_t d_frame_len_tag_key;
-      const std::vector<std::vector<int> > d_occupied_carriers; //!< Which carriers/symbols carry data
-      int d_syms_per_set; //!< Helper variable: Total number of elements in d_occupied_carriers
-      int d_bits_per_payload_sym;
-    };
-
-  } // namespace digital
-} // namespace gr
-
-#endif /* INCLUDED_DIGITAL_PACKET_HEADER_OFDM_H */
-
diff --git a/gr-digital/include/digital/packet_headergenerator_bb.h b/gr-digital/include/digital/packet_headergenerator_bb.h
deleted file mode 100644
index 52e260f446..0000000000
--- a/gr-digital/include/digital/packet_headergenerator_bb.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- c++ -*- */
-/* Copyright 2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_PACKET_HEADERGENERATOR_BB_H
-#define INCLUDED_PACKET_HEADERGENERATOR_BB_H
-
-#include <digital/api.h>
-#include <gnuradio/tagged_stream_block.h>
-#include <digital/packet_header_default.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Generates a header for a tagged, streamed packet.
-     * \ingroup packet_operators_blk
-     *
-     * \details
-     * Input: A tagged stream. This is consumed entirely, it is not appended
-     *        to the output stream.
-     * Output: An tagged stream containing the header. The details on the header
-     *         are set in a header formatter object (of type packet_header_default
-     *         or a subclass thereof). If only a number of bits is specified, a
-     *         default header is generated (see packet_header_default).
-     */
-    class DIGITAL_API packet_headergenerator_bb : virtual public tagged_stream_block
-    {
-     public:
-      typedef boost::shared_ptr<packet_headergenerator_bb> sptr;
-
-      /* \param header_formatter A header formatter object.
-       * \param len_tag_key Length tag key. Note that for header generation,
-       *                    it is irrelevant which tag names are set in the
-       *                    formatter object, only this value is relevant!
-       */
-      static sptr make(
-	  const packet_header_default::sptr &header_formatter,
-	  const std::string &len_tag_key="packet_len"
-      );
-
-      /* \param header_len If this value is given, a packet_header_default
-       *                   object is used to generate the header. This is
-       *                   the number of bits per header.
-       * \param len_tag_key Length tag key.
-       */
-      static sptr make(
-	   long header_len,
-	   const std::string &len_tag_key = "packet_len");
-    };
-
-  } // namespace digital
-} // namespace gr
-
-#endif /* INCLUDED_PACKET_HEADERGENERATOR_BB_H */
-
diff --git a/gr-digital/include/digital/packet_headerparser_b.h b/gr-digital/include/digital/packet_headerparser_b.h
deleted file mode 100644
index a387cd7282..0000000000
--- a/gr-digital/include/digital/packet_headerparser_b.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- c++ -*- */
-/* Copyright 2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_PACKET_HEADERPARSER_B_H
-#define INCLUDED_DIGITAL_PACKET_HEADERPARSER_B_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-#include <digital/packet_header_default.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Post header metadata as a PMT
-     * \ingroup packet_operators_blk
-     *
-     * \details
-     * In a sense, this is the inverse block to packet_headergenerator_bb.
-     * The difference is, the parsed header is not output as a stream,
-     * but as a PMT dictionary, which is published to message port with
-     * the id "header_data".
-     *
-     * The dictionary consists of the tags created by the header formatter
-     * object. You should be able to use the exact same formatter object
-     * as used on the Tx side in the packet_headergenerator_bb.
-     *
-     * If only a header length is given, this block uses the default header
-     * format.
-     */
-    class DIGITAL_API packet_headerparser_b : virtual public sync_block
-    {
-     public:
-      typedef boost::shared_ptr<packet_headerparser_b> sptr;
-
-      /*!
-       * \param header_formatter Header object. This should be the same as used for
-       *                         packet_headergenerator_bb.
-       */
-      static sptr make(const gr::digital::packet_header_default::sptr &header_formatter);
-
-      /*!
-       * \param header_len Number of bytes per header
-       * \param len_tag_key Length Tag Key
-       */
-      static sptr make(long header_len, const std::string &len_tag_key);
-    };
-
-  } // namespace digital
-} // namespace gr
-
-#endif /* INCLUDED_DIGITAL_PACKET_HEADERPARSER_B_H */
-
diff --git a/gr-digital/include/digital/packet_sink.h b/gr-digital/include/digital/packet_sink.h
deleted file mode 100644
index 41992d98eb..0000000000
--- a/gr-digital/include/digital/packet_sink.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2005,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_PACKET_SINK_H
-#define INCLUDED_GR_PACKET_SINK_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-#include <gnuradio/msg_queue.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief process received bits looking for packet sync, header,
-     * and process bits into packet
-     * \ingroup packet_operators_blk
-     *
-     * \details
-     * input: stream of symbols to be sliced.
-     * 
-     * output: none. Pushes assembled packet into target queue
-     *
-     * The packet sink takes in a stream of binary symbols that are
-     * sliced around 0. The bits are then checked for the \p
-     * sync_vector to determine find and decode the packet. It then
-     * expects a fixed length header of 2 16-bit shorts containing the
-     * payload length, followed by the payload. If the 2 16-bit shorts
-     * are not identical, this packet is ignored. Better algs are
-     * welcome.
-     *
-     * This block is not very useful anymore as it only works with
-     * 2-level modulations such as BPSK or GMSK. The block can
-     * generally be replaced with a correlate access code and frame
-     * sink blocks.
-     */
-    class DIGITAL_API packet_sink : virtual public sync_block
-    {
-    public:
-      // gr::digital::packet_sink::sptr
-      typedef boost::shared_ptr<packet_sink> sptr;
-
-      /*!
-       * Make a packet_sink block.
-       *
-       * \param sync_vector The synchronization vector as a vector of 1's and 0's.
-       * \param target_queue The message queue that packets are sent to.
-       * \param threshold Number of bits that can be incorrect in the \p sync_vector.
-       */
-      static sptr make(const std::vector<unsigned char>& sync_vector,
-		       msg_queue::sptr target_queue,
-		       int threshold=-1);
-
-      //! return true if we detect carrier
-      virtual bool carrier_sensed() const = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_PACKET_SINK_H */
diff --git a/gr-digital/include/digital/pfb_clock_sync_ccf.h b/gr-digital/include/digital/pfb_clock_sync_ccf.h
deleted file mode 100644
index 29da5dff48..0000000000
--- a/gr-digital/include/digital/pfb_clock_sync_ccf.h
+++ /dev/null
@@ -1,330 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2009,2010,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-
-#ifndef INCLUDED_DIGITAL_PFB_CLOCK_SYNC_CCF_H
-#define	INCLUDED_DIGITAL_PFB_CLOCK_SYNC_CCF_H
-
-#include <digital/api.h>
-#include <filter/fir_filter.h>
-#include <gnuradio/block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Timing synchronizer using polyphase filterbanks
-     * \ingroup synchronizers_blk
-     *
-     * \details
-     * This block performs timing synchronization for PAM signals by
-     * minimizing the derivative of the filtered signal, which in turn
-     * maximizes the SNR and minimizes ISI.
-     *
-     * This approach works by setting up two filterbanks; one
-     * filterbank contains the signal's pulse shaping matched filter
-     * (such as a root raised cosine filter), where each branch of the
-     * filterbank contains a different phase of the filter.  The
-     * second filterbank contains the derivatives of the filters in
-     * the first filterbank. Thinking of this in the time domain, the
-     * first filterbank contains filters that have a sinc shape to
-     * them. We want to align the output signal to be sampled at
-     * exactly the peak of the sinc shape. The derivative of the sinc
-     * contains a zero at the maximum point of the sinc (sinc(0) = 1,
-     * sinc(0)' = 0).  Furthermore, the region around the zero point
-     * is relatively linear. We make use of this fact to generate the
-     * error signal.
-     *
-     * If the signal out of the derivative filters is d_i[n] for the
-     * ith filter, and the output of the matched filter is x_i[n], we
-     * calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} +
-     * Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error
-     * in the real and imaginary parts. There are two reasons we
-     * multiply by the signal itself. First, if the symbol could be
-     * positive or negative going, but we want the error term to
-     * always tell us to go in the same direction depending on which
-     * side of the zero point we are on. The sign of x_i[n] adjusts
-     * the error term to do this. Second, the magnitude of x_i[n]
-     * scales the error term depending on the symbol's amplitude, so
-     * larger signals give us a stronger error term because we have
-     * more confidence in that symbol's value.  Using the magnitude of
-     * x_i[n] instead of just the sign is especially good for signals
-     * with low SNR.
-     *
-     * The error signal, e[n], gives us a value proportional to how
-     * far away from the zero point we are in the derivative
-     * signal. We want to drive this value to zero, so we set up a
-     * second order loop. We have two variables for this loop; d_k is
-     * the filter number in the filterbank we are on and d_rate is the
-     * rate which we travel through the filters in the steady
-     * state. That is, due to the natural clock differences between
-     * the transmitter and receiver, d_rate represents that difference
-     * and would traverse the filter phase paths to keep the receiver
-     * locked. Thinking of this as a second-order PLL, the d_rate is
-     * the frequency and d_k is the phase. So we update d_rate and d_k
-     * using the standard loop equations based on two error signals,
-     * d_alpha and d_beta.  We have these two values set based on each
-     * other for a critically damped system, so in the block
-     * constructor, we just ask for "gain," which is d_alpha while
-     * d_beta is equal to (gain^2)/4.
-     *
-     * The block's parameters are:
-     *
-     * \li \p sps: The clock sync block needs to know the number of
-     * samples per symbol, because it defaults to return a single
-     * point representing the symbol. The sps can be any positive real
-     * number and does not need to be an integer.
-     *
-     * \li \p loop_bw: The loop bandwidth is used to set the gain of
-     * the inner control loop (see:
-     * http://gnuradio.squarespace.com/blog/2011/8/13/control-loop-gain-values.html).
-     * This should be set small (a value of around 2pi/100 is
-     * suggested in that blog post as the step size for the number of
-     * radians around the unit circle to move relative to the error).
-     *
-     * \li \p taps: One of the most important parameters for this
-     * block is the taps of the filter. One of the benefits of this
-     * algorithm is that you can put the matched filter in here as the
-     * taps, so you get both the matched filter and sample timing
-     * correction in one go. So create your normal matched filter. For
-     * a typical digital modulation, this is a root raised cosine
-     * filter. The number of taps of this filter is based on how long
-     * you expect the channel to be; that is, how many symbols do you
-     * want to combine to get the current symbols energy back (there's
-     * probably a better way of stating that). It's usually 5 to 10 or
-     * so. That gives you your filter, but now we need to think about
-     * it as a filter with different phase profiles in each filter. So
-     * take this number of taps and multiply it by the number of
-     * filters. This is the number you would use to create your
-     * prototype filter. When you use this in the PFB filerbank, it
-     * segments these taps into the filterbanks in such a way that
-     * each bank now represents the filter at different phases,
-     * equally spaced at 2pi/N, where N is the number of filters.
-     *
-     * \li \p filter_size (default=32): The number of filters can also
-     * be set and defaults to 32. With 32 filters, you get a good
-     * enough resolution in the phase to produce very small, almost
-     * unnoticeable, ISI.  Going to 64 filters can reduce this more,
-     * but after that there is very little gained for the extra
-     * complexity.
-     *
-     * \li \p init_phase (default=0): The initial phase is another
-     * settable parameter and refers to the filter path the algorithm
-     * initially looks at (i.e., d_k starts at init_phase). This value
-     * defaults to zero, but it might be useful to start at a
-     * different phase offset, such as the mid-point of the filters.
-     *
-     * \li \p max_rate_deviation (default=1.5): The next parameter is
-     * the max_rate_devitation, which defaults to 1.5. This is how far
-     * we allow d_rate to swing, positive or negative, from
-     * 0. Constraining the rate can help keep the algorithm from
-     * walking too far away to lock during times when there is no
-     * signal.
-     *
-     * \li \p osps (default=1): The osps is the number of output
-     * samples per symbol. By default, the algorithm produces 1 sample
-     * per symbol, sampled at the exact sample value. This osps value
-     * was added to better work with equalizers, which do a better job
-     * of modeling the channel if they have 2 samps/sym.
-     */
-    class DIGITAL_API pfb_clock_sync_ccf : virtual public block
-    {
-    public:
-      // gr::digital::pfb_clock_sync_ccf::sptr
-      typedef boost::shared_ptr<pfb_clock_sync_ccf> sptr;
-
-      /*!
-       * Build the polyphase filterbank timing synchronizer.
-       * \param sps (double) The number of samples per symbol in the incoming signal
-       * \param loop_bw (float) The bandwidth of the control loop; set's alpha and beta.
-       * \param taps (vector<int>) The filter taps.
-       * \param filter_size (uint) The number of filters in the filterbank (default = 32).
-       * \param init_phase (float) The initial phase to look at, or which filter to start
-       *                           with (default = 0).
-       * \param max_rate_deviation (float) Distance from 0 d_rate can get (default = 1.5).
-       * \param osps (int) The number of output samples per symbol (default=1).
-       */
-      static sptr make(double sps, float loop_bw,
-		       const std::vector<float> &taps,
-		       unsigned int filter_size=32,
-		       float init_phase=0,
-		       float max_rate_deviation=1.5,
-		       int osps=1);
-
-      /*! \brief update the system gains from omega and eta
-       *
-       *  This function updates the system gains based on the loop
-       *  bandwidth and damping factor of the system.
-       *  These two factors can be set separately through their own
-       *  set functions.
-       */
-      virtual void update_gains() = 0;
-
-      /*!
-       * Resets the filterbank's filter taps with the new prototype filter
-       */
-      virtual void set_taps(const std::vector<float> &taps,
-			    std::vector< std::vector<float> > &ourtaps,
-			    std::vector<gr::filter::kernel::fir_filter_ccf*> &ourfilter) = 0;
-
-      /*!
-       * Returns all of the taps of the matched filter
-       */
-      virtual std::vector< std::vector<float> > taps() const = 0;
-
-      /*!
-       * Returns all of the taps of the derivative filter
-       */
-      virtual std::vector< std::vector<float> > diff_taps() const = 0;
-
-      /*!
-       * Returns the taps of the matched filter for a particular channel
-       */
-      virtual std::vector<float> channel_taps(int channel) const = 0;
-
-      /*!
-       * Returns the taps in the derivative filter for a particular channel
-       */
-      virtual std::vector<float> diff_channel_taps(int channel) const = 0;
-
-      /*!
-       * Return the taps as a formatted string for printing
-       */
-      virtual std::string taps_as_string() const = 0;
-
-      /*!
-       * Return the derivative filter taps as a formatted string for printing
-       */
-      virtual std::string diff_taps_as_string() const = 0;
-
-
-      /*******************************************************************
-       SET FUNCTIONS
-      *******************************************************************/
-
-      /*!
-       * \brief Set the loop bandwidth
-       *
-       * Set the loop filter's bandwidth to \p bw. This should be
-       * between 2*pi/200 and 2*pi/100 (in rads/samp). It must also be
-       * a positive number.
-       *
-       * When a new damping factor is set, the gains, alpha and beta,
-       * of the loop are recalculated by a call to update_gains().
-       *
-       * \param bw    (float) new bandwidth
-       */
-      virtual void set_loop_bandwidth(float bw) = 0;
-
-      /*!
-       * \brief Set the loop damping factor
-       *
-       * Set the loop filter's damping factor to \p df. The damping
-       * factor should be sqrt(2)/2.0 for critically damped systems.
-       * Set it to anything else only if you know what you are
-       * doing. It must be a number between 0 and 1.
-       *
-       * When a new damping factor is set, the gains, alpha and beta,
-       * of the loop are recalculated by a call to update_gains().
-       *
-       * \param df    (float) new damping factor
-       */
-      virtual void set_damping_factor(float df) = 0;
-
-      /*!
-       * \brief Set the loop gain alpha
-       *
-       * Set's the loop filter's alpha gain parameter.
-       *
-       * This value should really only be set by adjusting the loop
-       * bandwidth and damping factor.
-       *
-       * \param alpha    (float) new alpha gain
-       */
-      virtual void set_alpha(float alpha) = 0;
-
-      /*!
-       * \brief Set the loop gain beta
-       *
-       * Set's the loop filter's beta gain parameter.
-       *
-       * This value should really only be set by adjusting the loop
-       * bandwidth and damping factor.
-       *
-       * \param beta    (float) new beta gain
-       */
-      virtual void set_beta(float beta) = 0;
-
-      /*!
-       * Set the maximum deviation from 0 d_rate can have
-       */
-      virtual void set_max_rate_deviation(float m) = 0;
-
-      /*******************************************************************
-       GET FUNCTIONS
-      *******************************************************************/
-
-      /*!
-       * \brief Returns the loop bandwidth
-       */
-      virtual float loop_bandwidth() const = 0;
-
-      /*!
-       * \brief Returns the loop damping factor
-       */
-      virtual float damping_factor() const = 0;
-
-      /*!
-       * \brief Returns the loop gain alpha
-       */
-      virtual float alpha() const = 0;
-
-      /*!
-       * \brief Returns the loop gain beta
-       */
-      virtual float beta() const = 0;
-
-      /*!
-       * \brief Returns the current clock rate
-       */
-      virtual float clock_rate() const = 0;
-
-      /*!
-       * \brief Returns the current error of the control loop.
-       */
-      virtual float error() const = 0;
-  
-      /*!
-       * \brief Returns the current rate of the control loop.
-       */
-      virtual float rate() const = 0;
-
-      /*!
-       * \brief Returns the current phase arm of the control loop.
-       */
-      virtual float phase() const = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_PFB_CLOCK_SYNC_CCF_H */
diff --git a/gr-digital/include/digital/pfb_clock_sync_fff.h b/gr-digital/include/digital/pfb_clock_sync_fff.h
deleted file mode 100644
index 8c18a1788a..0000000000
--- a/gr-digital/include/digital/pfb_clock_sync_fff.h
+++ /dev/null
@@ -1,316 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2009,2010,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_PFB_CLOCK_SYNC_FFF_H
-#define	INCLUDED_DIGITAL_PFB_CLOCK_SYNC_FFF_H
-
-#include <digital/api.h>
-#include <filter/fir_filter.h>
-#include <gnuradio/block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Timing synchronizer using polyphase filterbanks
-     * \ingroup synchronizers_blk
-     *
-     * \details
-     * This block performs timing synchronization for PAM signals by
-     * minimizing the derivative of the filtered signal, which in turn
-     * maximizes the SNR and minimizes ISI.
-     *
-     * This approach works by setting up two filterbanks; one
-     * filterbank contains the signal's pulse shaping matched filter
-     * (such as a root raised cosine filter), where each branch of the
-     * filterbank contains a different phase of the filter.  The
-     * second filterbank contains the derivatives of the filters in
-     * the first filterbank. Thinking of this in the time domain, the
-     * first filterbank contains filters that have a sinc shape to
-     * them. We want to align the output signal to be sampled at
-     * exactly the peak of the sinc shape. The derivative of the sinc
-     * contains a zero at the maximum point of the sinc (sinc(0) = 1,
-     * sinc(0)' = 0).  Furthermore, the region around the zero point
-     * is relatively linear. We make use of this fact to generate the
-     * error signal.
-     *
-     * If the signal out of the derivative filters is d_i[n] for the
-     * ith filter, and the output of the matched filter is x_i[n], we
-     * calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} +
-     * Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error
-     * in the real and imaginary parts. There are two reasons we
-     * multiply by the signal itself. First, if the symbol could be
-     * positive or negative going, but we want the error term to
-     * always tell us to go in the same direction depending on which
-     * side of the zero point we are on. The sign of x_i[n] adjusts
-     * the error term to do this. Second, the magnitude of x_i[n]
-     * scales the error term depending on the symbol's amplitude, so
-     * larger signals give us a stronger error term because we have
-     * more confidence in that symbol's value.  Using the magnitude of
-     * x_i[n] instead of just the sign is especially good for signals
-     * with low SNR.
-     *
-     * The error signal, e[n], gives us a value proportional to how
-     * far away from the zero point we are in the derivative
-     * signal. We want to drive this value to zero, so we set up a
-     * second order loop. We have two variables for this loop; d_k is
-     * the filter number in the filterbank we are on and d_rate is the
-     * rate which we travel through the filters in the steady
-     * state. That is, due to the natural clock differences between
-     * the transmitter and receiver, d_rate represents that difference
-     * and would traverse the filter phase paths to keep the receiver
-     * locked. Thinking of this as a second-order PLL, the d_rate is
-     * the frequency and d_k is the phase. So we update d_rate and d_k
-     * using the standard loop equations based on two error signals,
-     * d_alpha and d_beta.  We have these two values set based on each
-     * other for a critically damped system, so in the block
-     * constructor, we just ask for "gain," which is d_alpha while
-     * d_beta is equal to (gain^2)/4.
-     *
-     * The block's parameters are:
-     *
-     * \li \p sps: The clock sync block needs to know the number of
-     * samples per symbol, because it defaults to return a single
-     * point representing the symbol. The sps can be any positive real
-     * number and does not need to be an integer.
-     *
-     * \li \p loop_bw: The loop bandwidth is used to set the gain of
-     * the inner control loop (see:
-     * http://gnuradio.squarespace.com/blog/2011/8/13/control-loop-gain-values.html).
-     * This should be set small (a value of around 2pi/100 is
-     * suggested in that blog post as the step size for the number of
-     * radians around the unit circle to move relative to the error).
-     *
-     * \li \p taps: One of the most important parameters for this
-     * block is the taps of the filter. One of the benefits of this
-     * algorithm is that you can put the matched filter in here as the
-     * taps, so you get both the matched filter and sample timing
-     * correction in one go. So create your normal matched filter. For
-     * a typical digital modulation, this is a root raised cosine
-     * filter. The number of taps of this filter is based on how long
-     * you expect the channel to be; that is, how many symbols do you
-     * want to combine to get the current symbols energy back (there's
-     * probably a better way of stating that). It's usually 5 to 10 or
-     * so. That gives you your filter, but now we need to think about
-     * it as a filter with different phase profiles in each filter. So
-     * take this number of taps and multiply it by the number of
-     * filters. This is the number you would use to create your
-     * prototype filter. When you use this in the PFB filerbank, it
-     * segments these taps into the filterbanks in such a way that
-     * each bank now represents the filter at different phases,
-     * equally spaced at 2pi/N, where N is the number of filters.
-     *
-     * \li \p filter_size (default=32): The number of filters can also
-     * be set and defaults to 32. With 32 filters, you get a good
-     * enough resolution in the phase to produce very small, almost
-     * unnoticeable, ISI.  Going to 64 filters can reduce this more,
-     * but after that there is very little gained for the extra
-     * complexity.
-     *
-     * \li \p init_phase (default=0): The initial phase is another
-     * settable parameter and refers to the filter path the algorithm
-     * initially looks at (i.e., d_k starts at init_phase). This value
-     * defaults to zero, but it might be useful to start at a
-     * different phase offset, such as the mid-point of the filters.
-     *
-     * \li \p max_rate_deviation (default=1.5): The next parameter is
-     * the max_rate_devitation, which defaults to 1.5. This is how far
-     * we allow d_rate to swing, positive or negative, from
-     * 0. Constraining the rate can help keep the algorithm from
-     * walking too far away to lock during times when there is no
-     * signal.
-     *
-     * \li \p osps (default=1): The osps is the number of output
-     * samples per symbol. By default, the algorithm produces 1 sample
-     * per symbol, sampled at the exact sample value. This osps value
-     * was added to better work with equalizers, which do a better job
-     * of modeling the channel if they have 2 samps/sym.
-     */
-    class DIGITAL_API pfb_clock_sync_fff : virtual public block
-    {
-    public:
-      // gr::digital::pfb_clock_sync_fff::sptr
-      typedef boost::shared_ptr<pfb_clock_sync_fff> sptr;
-
-      /*!
-       * Build the polyphase filterbank timing synchronizer.
-       * \param sps (double) The number of samples per second in the incoming signal
-       * \param gain (float) The alpha gain of the control loop; beta = (gain^2)/4 by default.
-       * \param taps (vector<int>) The filter taps.
-       * \param filter_size (uint) The number of filters in the filterbank (default = 32).
-       * \param init_phase (float) The initial phase to look at, or which filter to start
-       *                           with (default = 0).
-       * \param max_rate_deviation (float) Distance from 0 d_rate can get (default = 1.5).
-       * \param osps (int) The number of output samples per symbol (default=1).
-       *
-       */
-      static sptr make(double sps, float gain,
-		       const std::vector<float> &taps,
-		       unsigned int filter_size=32,
-		       float init_phase=0,
-		       float max_rate_deviation=1.5,
-		       int osps=1);
-
-      /*! \brief update the system gains from omega and eta
-       *
-       *  This function updates the system gains based on the loop
-       *  bandwidth and damping factor of the system.
-       *  These two factors can be set separately through their own
-       *  set functions.
-       */
-      virtual void update_gains() = 0;
-
-      /*!
-       * Resets the filterbank's filter taps with the new prototype filter
-       */
-      virtual void set_taps(const std::vector<float> &taps,
-			    std::vector< std::vector<float> > &ourtaps,
-			    std::vector<gr::filter::kernel::fir_filter_fff*> &ourfilter) = 0;
-
-      /*!
-       * Returns all of the taps of the matched filter
-       */
-      virtual std::vector< std::vector<float> > taps() const = 0;
-
-      /*!
-       * Returns all of the taps of the derivative filter
-       */
-      virtual std::vector< std::vector<float> > diff_taps() const = 0;
-
-      /*!
-       * Returns the taps of the matched filter for a particular channel
-       */
-      virtual std::vector<float> channel_taps(int channel) const = 0;
-
-      /*!
-       * Returns the taps in the derivative filter for a particular channel
-       */
-      virtual std::vector<float> diff_channel_taps(int channel) const = 0;
-
-      /*!
-       * Return the taps as a formatted string for printing
-       */
-      virtual std::string taps_as_string() const = 0;
-
-      /*!
-       * Return the derivative filter taps as a formatted string for printing
-       */
-      virtual std::string diff_taps_as_string() const = 0;
-
-
-      /*******************************************************************
-       SET FUNCTIONS
-      *******************************************************************/
-
-
-      /*!
-       * \brief Set the loop bandwidth
-       *
-       * Set the loop filter's bandwidth to \p bw. This should be
-       * between 2*pi/200 and 2*pi/100 (in rads/samp). It must also be
-       * a positive number.
-       *
-       * When a new damping factor is set, the gains, alpha and beta,
-       * of the loop are recalculated by a call to update_gains().
-       *
-       * \param bw    (float) new bandwidth
-       */
-      virtual void set_loop_bandwidth(float bw) = 0;
-
-      /*!
-       * \brief Set the loop damping factor
-       *
-       * Set the loop filter's damping factor to \p df. The damping
-       * factor should be sqrt(2)/2.0 for critically damped systems.
-       * Set it to anything else only if you know what you are
-       * doing. It must be a number between 0 and 1.
-       *
-       * When a new damping factor is set, the gains, alpha and beta,
-       * of the loop are recalculated by a call to update_gains().
-       *
-       * \param df    (float) new damping factor
-       */
-      virtual void set_damping_factor(float df) = 0;
-
-      /*!
-       * \brief Set the loop gain alpha
-       *
-       * Set's the loop filter's alpha gain parameter.
-       *
-       * This value should really only be set by adjusting the loop
-       * bandwidth and damping factor.
-       *
-       * \param alpha    (float) new alpha gain
-       */
-      virtual void set_alpha(float alpha) = 0;
-
-      /*!
-       * \brief Set the loop gain beta
-       *
-       * Set's the loop filter's beta gain parameter.
-       *
-       * This value should really only be set by adjusting the loop
-       * bandwidth and damping factor.
-       *
-       * \param beta    (float) new beta gain
-       */
-      virtual void set_beta(float beta) = 0;
-
-      /*!
-       * Set the maximum deviation from 0 d_rate can have
-       */
-      virtual void set_max_rate_deviation(float m) = 0;
-
-      /*******************************************************************
-       GET FUNCTIONS
-      *******************************************************************/
-
-      /*!
-       * \brief Returns the loop bandwidth
-       */
-      virtual float loop_bandwidth() const = 0;
-
-      /*!
-       * \brief Returns the loop damping factor
-       */
-      virtual float damping_factor() const = 0;
-
-      /*!
-       * \brief Returns the loop gain alpha
-       */
-      virtual float alpha() const = 0;
-
-      /*!
-       * \brief Returns the loop gain beta
-       */
-      virtual float beta() const = 0;
-
-      /*!
-       * \brief Returns the current clock rate
-       */
-      virtual float clock_rate() const = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_PFB_CLOCK_SYNC_FFF_H */
diff --git a/gr-digital/include/digital/pn_correlator_cc.h b/gr-digital/include/digital/pn_correlator_cc.h
deleted file mode 100644
index ae3ebe9ef4..0000000000
--- a/gr-digital/include/digital/pn_correlator_cc.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2007,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_PN_CORRELATOR_CC_H
-#define INCLUDED_GR_PN_CORRELATOR_CC_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_decimator.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief PN code sequential search correlator
-     * \ingroup synchronizers_blk
-     *
-     * \details
-     * Receives complex baseband signal, outputs complex correlation
-     * against reference PN code, one sample per PN code period. The
-     * PN sequence is generated using a GLFSR.
-     */
-    class DIGITAL_API pn_correlator_cc : virtual public sync_decimator
-    {
-    public:
-      // gr::digital::pn_correlator_cc::sptr
-      typedef boost::shared_ptr<pn_correlator_cc> sptr;
-
-      /*!
-       * \brief Make PN code sequential search correlator block.
-       *
-       * \param degree Degree of shift register must be in [1, 32]. If mask
-       *               is 0, the degree determines a default mask (see
-       *               digital_impl_glfsr.cc for the mapping).
-       * \param mask   Allows a user-defined bit mask for indexes of the shift
-       *               register to feed back.
-       * \param seed   Initial setting for values in shift register.
-       */
-      static sptr make(int degree, int mask=0, int seed=1);
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_PN_CORRELATOR_CC_H */
diff --git a/gr-digital/include/digital/probe_density_b.h b/gr-digital/include/digital/probe_density_b.h
deleted file mode 100644
index f2ed8f9441..0000000000
--- a/gr-digital/include/digital/probe_density_b.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2008,2012 Free Software Foundation, Inc.
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_PROBE_DENSITY_B_H
-#define INCLUDED_GR_PROBE_DENSITY_B_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \ingroup measurement_tools_blk
-     *
-     * This block maintains a running average of the input stream and
-     * makes it available as an accessor function. The input stream is
-     * type unsigned char.
-     *
-     * If you send this block a stream of unpacked bytes, it will tell
-     * you what the bit density is.
-     */
-    class DIGITAL_API probe_density_b : virtual public sync_block
-    {
-    public:
-      // gr::digital::probe_density_b::sptr
-      typedef boost::shared_ptr<probe_density_b> sptr;
-
-      /*!
-       * Make a density probe block.
-       *
-       * \param alpha  Average filter constant
-       *
-       */
-      static sptr make(double alpha);
-
-      /*!
-       * \brief Returns the current density value
-       */
-      virtual double density() const = 0;
-
-      /*!
-       * \brief Set the average filter constant
-       */
-      virtual void set_alpha(double alpha) = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_PROBE_DENSITY_B_H */
diff --git a/gr-digital/include/digital/probe_mpsk_snr_est_c.h b/gr-digital/include/digital/probe_mpsk_snr_est_c.h
deleted file mode 100644
index 98a4bbcc2e..0000000000
--- a/gr-digital/include/digital/probe_mpsk_snr_est_c.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2011,2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_DIGITAL_PROBE_MPSK_SNR_EST_C_H
-#define INCLUDED_DIGITAL_PROBE_MPSK_SNR_EST_C_H
-
-#include <digital/api.h>
-#include <digital/mpsk_snr_est.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief A probe for computing SNR of a signal.
-     * \ingroup measurement_tools_blk
-     *
-     * \details 
-     * This is a probe block (a sink) that can be used to monitor and
-     * retrieve estimations of the signal SNR. This probe is designed
-     * for use with M-PSK signals especially. The type of estimator is
-     * specified as the \p type parameter in the constructor. The
-     * estimators tend to trade off performance for accuracy, although
-     * experimentation should be done to figure out the right approach
-     * for a given implementation. Further, the current set of
-     * estimators are designed and proven theoretically under AWGN
-     * conditions; some amount of error should be assumed and/or
-     * estimated for real channel conditions.
-     */
-    class DIGITAL_API probe_mpsk_snr_est_c : virtual public sync_block
-    {
-    public:
-      // gr::digital::probe_mpsk_snr_est_c::sptr
-      typedef boost::shared_ptr<probe_mpsk_snr_est_c> sptr;
-
-      /*! Make an MPSK SNR probe.
-       *
-       *  Parameters:
-       *
-       *  \param type: the type of estimator to use see
-       *   gr::digital::snr_est_type_t for details about the types.
-       *  \param msg_nsamples: [not implemented yet] after this many
-       *   samples, a message containing the SNR (key='snr') will be sent
-       *  \param alpha: the update rate of internal running average
-       *   calculations.
-       */
-      static sptr make(snr_est_type_t type,
-		       int msg_nsamples=10000,
-		       double alpha=0.001);
-
-      //! Return the estimated signal-to-noise ratio in decibels
-      virtual double snr() = 0;
-
-      //! Return the type of estimator in use
-      virtual snr_est_type_t type() const = 0;
-
-      //! Return how many samples between SNR messages
-      virtual int msg_nsample() const = 0;
-
-      //! Get the running-average coefficient
-      virtual double alpha() const = 0;
-
-      //! Set type of estimator to use
-      virtual void set_type(snr_est_type_t t) = 0;
-
-      //! Set the number of samples between SNR messages
-      virtual void set_msg_nsample(int n) = 0;
-
-      //! Set the running-average coefficient
-      virtual void set_alpha(double alpha) = 0;
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_DIGITAL_PROBE_MPSK_SNR_EST_C_H */
diff --git a/gr-digital/include/digital/scrambler_bb.h b/gr-digital/include/digital/scrambler_bb.h
deleted file mode 100644
index 2c6b97571f..0000000000
--- a/gr-digital/include/digital/scrambler_bb.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2008,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_SCRAMBLER_BB_H
-#define INCLUDED_GR_SCRAMBLER_BB_H
-
-#include <digital/api.h>
-#include <gnuradio/sync_block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief Scramble an input stream using an LFSR.
-     * \ingroup coding_blk
-     *
-     * \details
-     * This block works on the LSB only of the input data stream,
-     * i.e., on an "unpacked binary" stream, and produces the same
-     * format on its output.
-     */
-    class DIGITAL_API scrambler_bb : virtual public sync_block
-    {
-    public:
-      // gr::digital::scrambler_bb::sptr
-      typedef boost::shared_ptr<scrambler_bb> sptr;
-
-      /*!
-       * Make a scramber block.
-       *
-       * \param mask     Polynomial mask for LFSR
-       * \param seed     Initial shift register contents
-       * \param len      Shift register length
-       */
-      static sptr make(int mask, int seed, int len);
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_SCRAMBLER_BB_H */
diff --git a/gr-digital/include/digital/simple_correlator.h b/gr-digital/include/digital/simple_correlator.h
deleted file mode 100644
index 05863cbf35..0000000000
--- a/gr-digital/include/digital/simple_correlator.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2013 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_SIMPLE_CORRELATOR_H
-#define INCLUDED_GR_SIMPLE_CORRELATOR_H
-
-#include <digital/api.h>
-#include <gnuradio/block.h>
-
-namespace gr {
-  namespace digital {
-    
-    /*!
-     * \brief inverse of simple_framer (more or less)
-     * \ingroup packet_operators_blk
-     * \ingroup deprecated_blk
-     */
-    class DIGITAL_API simple_correlator : virtual public block
-    {
-    public:
-      // gr::digital::simple_correlator::sptr
-      typedef boost::shared_ptr<simple_correlator> sptr;
-
-      static sptr make(int payload_bytesize);
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_SIMPLE_CORRELATOR_H */
diff --git a/gr-digital/include/digital/simple_framer.h b/gr-digital/include/digital/simple_framer.h
deleted file mode 100644
index ad17e97d53..0000000000
--- a/gr-digital/include/digital/simple_framer.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_SIMPLE_FRAMER_H
-#define INCLUDED_GR_SIMPLE_FRAMER_H
-
-#include <digital/api.h>
-#include <gnuradio/block.h>
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * \brief add sync field, seq number and command field to payload
-     * \ingroup packet_operators_blk
-     * \ingroup deprecated_blk
-     *
-     * \details
-     * Takes in enough samples to create a full output frame. The
-     * frame is prepended with the GRSF_SYNC (defind in
-     * simple_framer_sync.h) and an 8-bit sequence number.
-     */
-    class DIGITAL_API simple_framer : virtual public block
-    {
-    public:
-      // gr::digital::simple_framer::sptr
-      typedef boost::shared_ptr<simple_framer> sptr;
-
-      /*!
-       * Make a simple_framer block.
-       *
-       * \param payload_bytesize The size of the payload in bytes.
-       */
-      static sptr make(int payload_bytesize);
-    };
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_SIMPLE_FRAMER_H */
diff --git a/gr-digital/include/digital/simple_framer_sync.h b/gr-digital/include/digital/simple_framer_sync.h
deleted file mode 100644
index f6c8f148e6..0000000000
--- a/gr-digital/include/digital/simple_framer_sync.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2005,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_SIMPLE_FRAMER_SYNC_H
-#define INCLUDED_GR_SIMPLE_FRAMER_SYNC_H
-
-namespace gr {
-  namespace digital {
-
-    /*!
-     * Here are a couple of maximum length sequences (m-sequences)
-     * that were generated by the the "mseq" matlab/octave code
-     * downloaded from: <a
-     * href="http://www.mathworks.com/matlabcentral/fileexchange/990">http://www.mathworks.com/matlabcentral/fileexchange/990</a>
-     *
-     * <pre>
-     * 31-bit m-sequence:
-     *	0110100100001010111011000111110
-     *	0x690AEC76 (padded on right with a zero)
-     *
-     * 63-bit m-sequence:
-     *	101011001101110110100100111000101111001010001100001000001111110
-     *      0xACDDA4E2F28C20FC (padded on right with a zero)
-     * </pre>
-     */
-    static const unsigned long long GRSF_SYNC = 0xacdda4e2f28c20fcULL;
-
-    static const int GRSF_BITS_PER_BYTE = 8;
-    static const int GRSF_SYNC_OVERHEAD = sizeof(GRSF_SYNC);
-    static const int GRSF_PAYLOAD_OVERHEAD = 1;		  	// 1 byte seqno
-    static const int GRSF_TAIL_PAD = 1;				// one byte trailing padding
-    static const int GRSF_OVERHEAD = GRSF_SYNC_OVERHEAD + GRSF_PAYLOAD_OVERHEAD + GRSF_TAIL_PAD;
-
-  } /* namespace digital */
-} /* namespace gr */
-
-#endif /* INCLUDED_GR_SIMPLE_FRAMER_SYNC_H */
diff --git a/gr-digital/include/gnuradio/digital/CMakeLists.txt b/gr-digital/include/gnuradio/digital/CMakeLists.txt
new file mode 100644
index 0000000000..275da16d87
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/CMakeLists.txt
@@ -0,0 +1,143 @@
+# Copyright 2011,2012 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+# generate helper scripts to expand templated files
+########################################################################
+include(GrPython)
+
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/generate_helper.py "
+#!${PYTHON_EXECUTABLE}
+
+import sys, os, re
+sys.path.append('${GR_RUNTIME_PYTHONPATH}')
+os.environ['srcdir'] = '${CMAKE_CURRENT_SOURCE_DIR}'
+os.chdir('${CMAKE_CURRENT_BINARY_DIR}')
+
+if __name__ == '__main__':
+    import build_utils
+    root, inp = sys.argv[1:3]
+    for sig in sys.argv[3:]:
+        name = re.sub ('X+', sig, root)
+        d = build_utils.standard_dict2(name, sig, 'digital')
+        build_utils.expand_template(d, inp)
+
+")
+
+macro(expand_h root)
+  #make a list of all the generated files
+  unset(expanded_files_h)
+  foreach(sig ${ARGN})
+    string(REGEX REPLACE "X+" ${sig} name ${root})
+    list(APPEND expanded_files_h ${CMAKE_CURRENT_BINARY_DIR}/${name}.h)
+  endforeach(sig)
+  
+  #create a command to generate the files
+  add_custom_command(
+    OUTPUT ${expanded_files_h}
+    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${root}.h.t
+    COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B}
+    ${CMAKE_CURRENT_BINARY_DIR}/generate_helper.py
+    ${root} ${root}.h.t ${ARGN}
+    )
+
+  #install rules for the generated h files
+  list(APPEND generated_includes ${expanded_files_h})
+endmacro(expand_h)
+
+########################################################################
+# Invoke macro to generate various sources
+#######################################################################
+expand_h(chunks_to_symbols_XX     bf bc sf sc if ic)
+
+add_custom_target(digital_generated_includes DEPENDS
+    ${generated_includes}
+)
+
+########################################################################
+# Install header files
+########################################################################
+install(FILES
+    ${generated_includes}
+    additive_scrambler_bb.h
+    api.h
+    binary_slicer_fb.h
+    clock_recovery_mm_cc.h
+    clock_recovery_mm_ff.h
+    cma_equalizer_cc.h
+    constellation.h
+    constellation_decoder_cb.h
+    constellation_receiver_cb.h
+    correlate_access_code_bb.h
+    correlate_access_code_tag_bb.h
+    costas_loop_cc.h
+    cpmmod_bc.h
+    crc32.h
+    crc32_bb.h
+    descrambler_bb.h
+    diff_decoder_bb.h
+    diff_encoder_bb.h
+    diff_phasor_cc.h
+    fll_band_edge_cc.h
+    framer_sink_1.h
+    glfsr.h
+    glfsr_source_b.h
+    glfsr_source_f.h
+    header_payload_demux.h
+    kurtotic_equalizer_cc.h
+    lfsr.h
+    lms_dd_equalizer_cc.h
+    map_bb.h
+    metric_type.h
+    mpsk_receiver_cc.h
+    mpsk_snr_est.h
+    mpsk_snr_est_cc.h
+    ofdm_carrier_allocator_cvc.h
+    ofdm_chanest_vcvc.h
+    ofdm_cyclic_prefixer.h
+    ofdm_equalizer_base.h
+    ofdm_equalizer_simpledfe.h
+    ofdm_equalizer_static.h
+    ofdm_frame_acquisition.h
+    ofdm_frame_equalizer_vcvc.h
+    ofdm_frame_sink.h
+    ofdm_insert_preamble.h
+    ofdm_mapper_bcv.h
+    ofdm_sampler.h
+    ofdm_serializer_vcc.h
+    ofdm_sync_sc_cfb.h
+    packet_header_default.h
+    packet_header_ofdm.h
+    packet_headergenerator_bb.h
+    packet_headerparser_b.h
+    packet_sink.h
+    pfb_clock_sync_ccf.h
+    pfb_clock_sync_fff.h
+    pn_correlator_cc.h
+    probe_density_b.h
+    probe_mpsk_snr_est_c.h
+    scrambler_bb.h
+    simple_correlator.h
+    simple_framer.h
+    simple_framer_sync.h
+    header_payload_demux.h
+    DESTINATION ${GR_INCLUDE_DIR}/gnuradio/digital
+    COMPONENT "digital_devel"
+)
+
diff --git a/gr-digital/include/gnuradio/digital/additive_scrambler_bb.h b/gr-digital/include/gnuradio/digital/additive_scrambler_bb.h
new file mode 100644
index 0000000000..73fd395d67
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/additive_scrambler_bb.h
@@ -0,0 +1,74 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2008,2010,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_ADDITIVE_SCRAMBLER_BB_H
+#define INCLUDED_DIGITAL_ADDITIVE_SCRAMBLER_BB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+    
+    /*!
+     * \ingroup coding_blk
+     *
+     * \brief
+     * Scramble an input stream using an LFSR.
+     *
+     * \details
+     * This block works on the LSB only of the input data stream,
+     * i.e., on an "unpacked binary" stream, and produces the same
+     * format on its output.
+     *
+     * The scrambler works by XORing the incoming bit stream by the
+     * output of the LFSR. Optionally, after 'count' bits have been
+     * processed, the shift register is reset to the seed value.
+     * This allows processing fixed length vectors of samples.
+     */
+    class DIGITAL_API additive_scrambler_bb : virtual public sync_block
+    {
+    public:
+      // gr::digital::additive_scrambler_bb::sptr
+      typedef boost::shared_ptr<additive_scrambler_bb> sptr;
+
+      /*!
+       * \brief Create additive scrambler.
+       *
+       * \param mask   Polynomial mask for LFSR
+       * \param seed   Initial shift register contents
+       * \param len    Shift register length
+       * \param count  Number of bits after which shift register is reset, 0=never
+       *
+       */
+      static sptr make(int mask, int seed, int len, int count=0);
+
+      virtual int mask() const = 0;
+      virtual int seed() const = 0;
+      virtual int len() const = 0;
+      virtual int count() const = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_ADDITIVE_SCRAMBLER_BB_H */
diff --git a/gr-digital/include/gnuradio/digital/api.h b/gr-digital/include/gnuradio/digital/api.h
new file mode 100644
index 0000000000..71ca19ad58
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/api.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2011 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_API_H
+#define INCLUDED_DIGITAL_API_H
+
+#include <gnuradio/attributes.h>
+
+#ifdef gnuradio_digital_EXPORTS
+#  define DIGITAL_API __GR_ATTR_EXPORT
+#else
+#  define DIGITAL_API __GR_ATTR_IMPORT
+#endif
+
+#endif /* INCLUDED_DIGITAL_API_H */
diff --git a/gr-digital/include/gnuradio/digital/binary_slicer_fb.h b/gr-digital/include/gnuradio/digital/binary_slicer_fb.h
new file mode 100644
index 0000000000..ef83a9dbd4
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/binary_slicer_fb.h
@@ -0,0 +1,55 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_BINARY_SLICER_FB_H
+#define INCLUDED_DIGITAL_BINARY_SLICER_FB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+    
+    /*!
+     * \brief slice float binary symbol outputting 1 bit output
+     * \ingroup symbol_coding_blk
+     *
+     * \details
+     * x <  0 --> 0
+     * x >= 0 --> 1
+     */
+    class DIGITAL_API binary_slicer_fb : virtual public sync_block
+    {
+    public:
+      // gr::digital::binary_slicer_fb::sptr
+      typedef boost::shared_ptr<binary_slicer_fb> sptr;
+
+      /*!
+       * \brief Make binary symbol slicer block.
+       */
+      static sptr make();
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_BINARY_SLICER_FB_H */
diff --git a/gr-digital/include/gnuradio/digital/chunks_to_symbols_XX.h.t b/gr-digital/include/gnuradio/digital/chunks_to_symbols_XX.h.t
new file mode 100644
index 0000000000..3835c80bee
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/chunks_to_symbols_XX.h.t
@@ -0,0 +1,76 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/* @WARNING@ */
+
+#ifndef @GUARD_NAME@
+#define @GUARD_NAME@
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_interpolator.h>
+
+namespace gr {
+  namespace digital {
+    
+    /*!
+     * \brief Map a stream of symbol indexes (unpacked bytes or
+     * shorts) to stream of float or complex constellation points in D
+     * dimensions (D = 1 by default)
+     * \ingroup converter_blk
+     *
+     * input: stream of @I_TYPE@; output: stream of @O_TYPE@
+     *
+     * out[n D + k] = symbol_table[in[n] D + k], k=0,1,...,D-1
+     *
+     * The combination of gr::blocks::packed_to_unpacked_XX followed by
+     * digital_chunks_to_symbols_XY handles the general case of mapping
+     * from a stream of bytes or shorts into arbitrary float
+     * or complex symbols.
+     *
+     * \sa gr::blocks::packed_to_unpacked_bb, gr::blocks::unpacked_to_packed_bb,
+     * \sa gr::blocks::packed_to_unpacked_ss, gr::blocks::unpacked_to_packed_ss,
+     * \sa gr::digital::chunks_to_symbols_bf, gr::digital::chunks_to_symbols_bc.
+     * \sa gr::digital::chunks_to_symbols_sf, gr::digital::chunks_to_symbols_sc.
+     */
+
+    class DIGITAL_API @NAME@ : virtual public sync_interpolator
+    {
+    public:
+      // gr::digital::@BASE_NAME@::sptr
+      typedef boost::shared_ptr<@BASE_NAME@> sptr;
+
+      /*!
+       * Make a chunks-to-symbols block.
+       *
+       * \param symbol_table: list that maps chunks to symbols.
+       * \param D: dimension of table.
+       */
+      static sptr make(const std::vector<@O_TYPE@> &symbol_table, const int D = 1);
+
+      virtual int D() const = 0;
+      virtual std::vector<@O_TYPE@> symbol_table() const = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* @GUARD_NAME@ */
diff --git a/gr-digital/include/gnuradio/digital/clock_recovery_mm_cc.h b/gr-digital/include/gnuradio/digital/clock_recovery_mm_cc.h
new file mode 100644
index 0000000000..9bca249afd
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/clock_recovery_mm_cc.h
@@ -0,0 +1,81 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004,2011,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_CC_H
+#define	INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_CC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+  namespace digital {
+    
+    /*!
+     * \brief Mueller and Müller (M&M) based clock recovery block with complex input, complex output.
+     * \ingroup synchronizers_blk
+     *
+     * \details
+     * This implements the Mueller and Müller (M&M) discrete-time
+     * error-tracking synchronizer.
+     *
+     * The complex version here is based on: Modified Mueller and
+     * Muller clock recovery circuit:
+     *
+     *    G. R. Danesfahani, T.G. Jeans, "Optimisation of modified Mueller
+     *    and Muller algorithm," Electronics Letters, Vol. 31, no. 13, 22
+     *    June 1995, pp. 1032 - 1033.
+     */
+    class DIGITAL_API clock_recovery_mm_cc : virtual public block
+    {
+    public:
+      // gr::digital::clock_recovery_mm_cc::sptr
+      typedef boost::shared_ptr<clock_recovery_mm_cc> sptr;
+
+      /*!
+       * Make a M&M clock recovery block.
+       *
+       * \param omega Initial estimate of samples per symbol
+       * \param gain_omega Gain setting for omega update loop
+       * \param mu Initial estimate of phase of sample
+       * \param gain_mu Gain setting for mu update loop
+       * \param omega_relative_limit limit on omega
+       */
+      static sptr make(float omega, float gain_omega,
+		       float mu, float gain_mu,
+		       float omega_relative_limit);
+
+      virtual float mu() const = 0;
+      virtual float omega() const = 0;
+      virtual float gain_mu() const = 0;
+      virtual float gain_omega() const = 0;
+
+      virtual void set_verbose(bool verbose) = 0;
+      virtual void set_gain_mu (float gain_mu) = 0;
+      virtual void set_gain_omega (float gain_omega) = 0;
+      virtual void set_mu (float mu) = 0;
+      virtual void set_omega (float omega) = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_CC_H */
diff --git a/gr-digital/include/gnuradio/digital/clock_recovery_mm_ff.h b/gr-digital/include/gnuradio/digital/clock_recovery_mm_ff.h
new file mode 100644
index 0000000000..9637546ed4
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/clock_recovery_mm_ff.h
@@ -0,0 +1,78 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004,2011,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_FF_H
+#define	INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_FF_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+  namespace digital {
+    
+    /*!
+     * \brief Mueller and Müller (M&M) based clock recovery block with float input, float output.
+     * \ingroup synchronizers_blk
+     *
+     * \details
+     * This implements the Mueller and Müller (M&M) discrete-time
+     * error-tracking synchronizer.
+     *
+     * See "Digital Communication Receivers: Synchronization, Channel
+     * Estimation and Signal Processing" by Heinrich Meyr, Marc
+     * Moeneclaey, & Stefan Fechtel.  ISBN 0-471-50275-8.
+     */
+    class DIGITAL_API clock_recovery_mm_ff : virtual public block
+    {
+    public:
+      // gr::digital::clock_recovery_mm_ff::sptr
+      typedef boost::shared_ptr<clock_recovery_mm_ff> sptr;
+
+      /*!
+       * Make a M&M clock recovery block.
+       *
+       * \param omega Initial estimate of samples per symbol
+       * \param gain_omega Gain setting for omega update loop
+       * \param mu Initial estimate of phase of sample
+       * \param gain_mu Gain setting for mu update loop
+       * \param omega_relative_limit limit on omega
+       */
+      static sptr make(float omega, float gain_omega,
+		       float mu, float gain_mu,
+		       float omega_relative_limit);
+      
+      virtual float mu() const = 0;
+      virtual float omega() const = 0;
+      virtual float gain_mu() const = 0;
+      virtual float gain_omega() const = 0;
+
+      virtual void set_verbose(bool verbose) = 0;
+      virtual void set_gain_mu (float gain_mu) = 0;
+      virtual void set_gain_omega (float gain_omega) = 0;
+      virtual void set_mu (float mu) = 0;
+      virtual void set_omega (float omega) = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_FF_H */
diff --git a/gr-digital/include/gnuradio/digital/cma_equalizer_cc.h b/gr-digital/include/gnuradio/digital/cma_equalizer_cc.h
new file mode 100644
index 0000000000..108c2cfc7d
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/cma_equalizer_cc.h
@@ -0,0 +1,75 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H
+#define	INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_decimator.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Implements constant modulus adaptive filter on complex stream
+     * \ingroup equalizers_blk
+     *
+     * \details
+     * The error value and tap update equations (for p=2) can be found in:
+     *
+     * D. Godard, "Self-Recovering Equalization and Carrier Tracking
+     * in Two-Dimensional Data Communication Systems," IEEE
+     * Transactions on Communications, Vol. 28, No. 11, pp. 1867 -
+     * 1875, 1980.
+     */
+    class DIGITAL_API cma_equalizer_cc: virtual public sync_decimator
+    {
+    protected:
+      virtual gr_complex error(const gr_complex &out) = 0;
+      virtual void update_tap(gr_complex &tap, const gr_complex &in) = 0;
+  
+    public:
+      // gr::digital::cma_equalizer_cc::sptr
+      typedef boost::shared_ptr<cma_equalizer_cc> sptr;
+
+      /*!
+       * Make a CMA Equalizer block
+       *
+       * \param num_taps Numer of taps in the equalizer (channel size)
+       * \param modulus Modulus of the modulated signals
+       * \param mu Gain of the update loop
+       * \param sps Number of samples per symbol of the input signal
+       */
+      static sptr make(int num_taps, float modulus, float mu, int sps);
+
+      virtual void set_taps(const std::vector<gr_complex> &taps) = 0;
+      virtual std::vector<gr_complex> taps() const = 0;
+      virtual float gain() const = 0;
+      virtual void set_gain(float mu) = 0;
+      virtual float modulus() const = 0;
+      virtual void set_modulus(float mod) = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_CMA_EQUALIZER_CC_H */
diff --git a/gr-digital/include/gnuradio/digital/constellation.h b/gr-digital/include/gnuradio/digital/constellation.h
new file mode 100644
index 0000000000..f8b99bb9c5
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/constellation.h
@@ -0,0 +1,478 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2010-2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_CONSTELLATION_H
+#define	INCLUDED_DIGITAL_CONSTELLATION_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/digital/metric_type.h>
+#include <boost/enable_shared_from_this.hpp>
+#include <gnuradio/gr_complex.h>
+#include <vector>
+
+namespace gr {
+  namespace digital {
+
+    /************************************************************/
+    /* constellation                                            */
+    /*                                                          */
+    /* Base class defining interface.                           */
+    /************************************************************/
+    
+    class constellation;
+    typedef boost::shared_ptr<constellation> constellation_sptr;
+
+    /*!
+     * \brief An abstracted constellation object
+     * \ingroup symbol_coding_blk
+     *
+     * \details
+     * The constellation objects hold the necessary information to pass
+     * around constellation information for modulators and
+     * demodulators. These objects contain the mapping between the bits
+     * and the constellation points used to represent them as well as
+     * methods for slicing the symbol space. Various implementations are
+     * possible for efficiency and ease of use.
+     *
+     * Standard constellations (BPSK, QPSK, QAM, etc) can be inherited
+     * from this class and overloaded to perform optimized slicing and
+     * constellation mappings.
+     */
+    class DIGITAL_API constellation
+      : public boost::enable_shared_from_this<constellation>
+    {
+    public:
+      constellation(std::vector<gr_complex> constell,
+		    std::vector<int> pre_diff_code,
+		    unsigned int rotational_symmetry,
+		    unsigned int dimensionality);
+      constellation();
+      virtual ~constellation();
+
+      //! Returns the constellation points for a symbol value
+      void map_to_points(unsigned int value, gr_complex *points);
+      std::vector<gr_complex> map_to_points_v(unsigned int value);
+
+      //! Returns the constellation point that matches best.
+      virtual unsigned int decision_maker(const gr_complex *sample) = 0;
+      //! Takes a vector rather than a pointer.  Better for SWIG wrapping.
+      unsigned int decision_maker_v(std::vector<gr_complex> sample);
+      //! Also calculates the phase error.
+      unsigned int decision_maker_pe(const gr_complex *sample, float *phase_error);
+      //! Calculates distance.
+      //unsigned int decision_maker_e(const gr_complex *sample, float *error);
+  
+      //! Calculates metrics for all points in the constellation.
+      //! For use with the viterbi algorithm.
+      virtual void calc_metric(const gr_complex *sample, float *metric, gr::digital::trellis_metric_type_t type);
+      virtual void calc_euclidean_metric(const gr_complex *sample, float *metric);
+      virtual void calc_hard_symbol_metric(const gr_complex *sample, float *metric);
+  
+      //! Returns the set of points in this constellation.
+      std::vector<gr_complex> points() { return d_constellation;}
+      //! Returns the vector of points in this constellation.
+      //! Raise error if dimensionality is not one.
+      std::vector<gr_complex> s_points();
+      //! Returns a vector of vectors of points.
+      std::vector<std::vector<gr_complex> > v_points();
+      //! Whether to apply an encoding before doing differential encoding. (e.g. gray coding)
+      bool apply_pre_diff_code() { return d_apply_pre_diff_code;}
+      //! Whether to apply an encoding before doing differential encoding. (e.g. gray coding)
+      void set_pre_diff_code(bool a) { d_apply_pre_diff_code = a;}
+      //! Returns the encoding to apply before differential encoding.
+      std::vector<int> pre_diff_code() { return d_pre_diff_code;}
+      //! Returns the order of rotational symmetry.
+      unsigned int rotational_symmetry() { return d_rotational_symmetry;}
+      //! Returns the number of complex numbers in a single symbol.
+      unsigned int dimensionality() {return d_dimensionality;}
+
+      unsigned int bits_per_symbol()
+      {
+	return floor(log(double(d_constellation.size()))/d_dimensionality/log(2.0));
+      }
+  
+      unsigned int arity()
+      {
+	return d_arity;
+      }
+
+      constellation_sptr base()
+      {
+	return shared_from_this();
+      }  
+
+    protected:
+      std::vector<gr_complex> d_constellation;
+      std::vector<int> d_pre_diff_code; 
+      bool d_apply_pre_diff_code;
+      unsigned int d_rotational_symmetry;
+      unsigned int d_dimensionality;
+      unsigned int d_arity;
+      //! The factor by which the user given constellation points were
+      //! scaled by to achieve an average amplitude of 1.
+      float d_scalefactor;
+
+      float get_distance(unsigned int index, const gr_complex *sample);
+      unsigned int get_closest_point(const gr_complex *sample);
+      void calc_arity();
+    };
+
+    /************************************************************/
+    /* constellation_calcdist                                   */
+    /*                                                          */
+    /************************************************************/
+
+    /*! \brief Calculate Euclidian distance for any constellation
+     *  \ingroup digital
+     *
+     * Constellation which calculates the distance to each point in the
+     * constellation for decision making. Inefficient for large
+     * constellations.
+     */
+    class DIGITAL_API constellation_calcdist
+      : public constellation
+    {
+    public:
+      typedef boost::shared_ptr<constellation_calcdist> sptr;
+
+      // public constructor
+      static sptr make(std::vector<gr_complex> constell,
+		       std::vector<int> pre_diff_code,
+		       unsigned int rotational_symmetry,
+		       unsigned int dimensionality);
+
+      unsigned int decision_maker(const gr_complex *sample);
+      // void calc_metric(gr_complex *sample, float *metric, trellis_metric_type_t type);
+      // void calc_euclidean_metric(gr_complex *sample, float *metric);
+      // void calc_hard_symbol_metric(gr_complex *sample, float *metric);
+
+    protected:
+      constellation_calcdist(std::vector<gr_complex> constell,
+			     std::vector<int> pre_diff_code,
+			     unsigned int rotational_symmetry,
+			     unsigned int dimensionality);
+    };
+
+
+    /************************************************************/
+    /*! constellation_sector                                    */
+    /************************************************************/
+
+    /*!
+     * \brief Sectorized digital constellation
+     * \ingroup digital
+     *
+     * Constellation space is divided into sectors. Each sector is
+     * associated with the nearest constellation point.
+     *
+     */
+    class DIGITAL_API constellation_sector : public constellation
+    {
+    public:
+
+      constellation_sector(std::vector<gr_complex> constell,
+			   std::vector<int> pre_diff_code,
+			   unsigned int rotational_symmetry,
+			   unsigned int dimensionality,
+			   unsigned int n_sectors);
+
+      ~constellation_sector();
+
+      unsigned int decision_maker(const gr_complex *sample);
+
+    protected:
+      virtual unsigned int get_sector(const gr_complex *sample) = 0;
+      virtual unsigned int calc_sector_value(unsigned int sector) = 0;
+      void find_sector_values();
+
+      unsigned int n_sectors;
+
+    private:
+      std::vector<int> sector_values;
+    };
+
+    /************************************************************/
+    /* constellation_rect                                       */
+    /************************************************************/
+
+    /*!
+     * \brief Rectangular digital constellation
+     * \ingroup digital
+     *
+     * Only implemented for 1-(complex)dimensional constellation.
+     *
+     * Constellation space is divided into rectangular sectors. Each
+     * sector is associated with the nearest constellation point.
+     *
+     * Works well for square QAM.
+     *
+     * Works for any generic constellation provided sectors are not
+     * too large.
+     */
+
+
+    class DIGITAL_API constellation_rect
+      : public constellation_sector
+    {
+    public:
+      typedef boost::shared_ptr<constellation_rect> sptr;
+
+      // public constructor
+      static constellation_rect::sptr make(std::vector<gr_complex> constell,
+					   std::vector<int> pre_diff_code,
+					   unsigned int rotational_symmetry,
+					   unsigned int real_sectors,
+					   unsigned int imag_sectors,
+					   float width_real_sectors,
+					   float width_imag_sectors);
+      ~constellation_rect();
+
+    protected:
+
+      constellation_rect(std::vector<gr_complex> constell,
+			 std::vector<int> pre_diff_code,
+			 unsigned int rotational_symmetry,
+			 unsigned int real_sectors,
+			 unsigned int imag_sectors,
+			 float width_real_sectors,
+			 float width_imag_sectors);
+
+      unsigned int get_sector(const gr_complex *sample);
+  
+      unsigned int calc_sector_value(unsigned int sector);
+
+    private:
+      unsigned int n_real_sectors;
+      unsigned int n_imag_sectors;
+      float d_width_real_sectors;
+      float d_width_imag_sectors;
+    };
+
+
+    /************************************************************/
+    /* constellation_expl_rect                                  */
+    /************************************************************/
+
+    /*!
+     * \brief Rectangular digital constellation
+     * \ingroup digital
+     *
+     * Only implemented for 1-(complex)dimensional constellation.
+     *
+     * Constellation space is divided into rectangular sectors. Each
+     * sector is associated with the nearest constellation point.
+     *
+     * This class is different from constellation_rect in that the
+     * mapping from sector to constellation point is explicitly passed
+     * into the constructor as sector_values.  Usually we do not need
+     * this, since we want each sector to be automatically mapped to
+     * the closest constellation point, however sometimes it's nice to
+     * have the flexibility.
+     */
+    class DIGITAL_API constellation_expl_rect 
+      : public constellation_rect
+    {
+    public:
+      typedef boost::shared_ptr<constellation_expl_rect> sptr;
+
+      static sptr make(std::vector<gr_complex> constellation,
+                       std::vector<int> pre_diff_code,
+                       unsigned int rotational_symmetry,
+                       unsigned int real_sectors,
+                       unsigned int imag_sectors,
+                       float width_real_sectors,
+                       float width_imag_sectors,
+                       std::vector<unsigned int> sector_values);
+      ~constellation_expl_rect();
+
+    protected:
+      constellation_expl_rect(std::vector<gr_complex> constellation,
+                              std::vector<int> pre_diff_code,
+                              unsigned int rotational_symmetry,
+                              unsigned int real_sectors,
+                              unsigned int imag_sectors,
+                              float width_real_sectors,
+                              float width_imag_sectors,
+                              std::vector<unsigned int> sector_values);
+
+      unsigned int calc_sector_value (unsigned int sector) {
+        return d_sector_values[sector];
+      }
+
+    private:
+      std::vector<unsigned int> d_sector_values;
+    };
+
+    /************************************************************/
+    /* constellation_psk                                        */
+    /************************************************************/
+
+    /*! 
+     * \brief constellation_psk
+     * \ingroup digital
+     *
+     * Constellation space is divided into pie slices sectors.
+     *
+     * Each slice is associated with the nearest constellation point. 
+     *
+     * Works well for PSK but nothing else.  
+     *
+     * Assumes that there is a constellation point at 1.x 
+     */
+    class DIGITAL_API constellation_psk : public constellation_sector
+    {
+    public:
+      typedef boost::shared_ptr<constellation_psk> sptr;
+
+      // public constructor
+      static sptr make(std::vector<gr_complex> constell,
+		       std::vector<int> pre_diff_code,
+		       unsigned int n_sectors);
+
+      ~constellation_psk();
+
+    protected:
+      unsigned int get_sector(const gr_complex *sample);
+  
+      unsigned int calc_sector_value(unsigned int sector);
+
+      constellation_psk(std::vector<gr_complex> constell,
+			std::vector<int> pre_diff_code,
+			unsigned int n_sectors);
+    };
+
+
+    /************************************************************/
+    /* constellation_bpsk                                       */
+    /*                                                          */
+    /* Only works for BPSK.                                     */
+    /*                                                          */
+    /************************************************************/
+
+    /*! 
+     * \brief Digital constellation for BPSK 
+     * \ingroup digital
+     */
+    class DIGITAL_API constellation_bpsk : public constellation
+    {
+    public:
+      typedef boost::shared_ptr<constellation_bpsk> sptr;
+
+      // public constructor
+      static sptr make();
+
+      ~constellation_bpsk();
+
+      unsigned int decision_maker(const gr_complex *sample);
+
+    protected:
+      constellation_bpsk();
+    };
+
+
+    /************************************************************/
+    /* constellation_qpsk                                       */
+    /*                                                          */
+    /* Only works for QPSK.                                     */
+    /*                                                          */
+    /************************************************************/
+
+    /*! 
+     * \brief Digital constellation for QPSK
+     * \ingroup digital
+     */
+    class DIGITAL_API constellation_qpsk : public constellation
+    {
+    public:
+      typedef boost::shared_ptr<constellation_qpsk> sptr;
+
+      // public constructor
+      static sptr make();
+
+      ~constellation_qpsk();
+
+      unsigned int decision_maker(const gr_complex *sample);
+
+    protected:
+      constellation_qpsk();
+    };
+
+
+    /************************************************************/
+    /* constellation_dqpsk                                      */
+    /*                                                          */
+    /* Works with differential encoding; slower decisions.      */
+    /*                                                          */
+    /************************************************************/
+
+    /*!
+     * \brief Digital constellation for DQPSK
+     * \ingroup digital
+     */
+    class DIGITAL_API constellation_dqpsk : public constellation
+    {
+    public:
+      typedef boost::shared_ptr<constellation_dqpsk> sptr;
+
+      // public constructor
+      static sptr make();
+
+      ~constellation_dqpsk();
+
+      unsigned int decision_maker(const gr_complex *sample);
+
+    protected:
+      constellation_dqpsk();
+    };
+
+
+    /************************************************************/
+    /* constellation_8psk                                       */
+    /*                                                          */
+    /* Only works for 8PSK.                                     */
+    /*                                                          */
+    /************************************************************/
+
+    /*! 
+     * \brief Digital constellation for 8PSK
+     * \ingroup digital
+     */
+    class DIGITAL_API constellation_8psk : public constellation
+    {
+    public:
+      typedef boost::shared_ptr<constellation_8psk> sptr;
+
+      // public constructor
+      static sptr make();
+
+      ~constellation_8psk();
+
+      unsigned int decision_maker(const gr_complex *sample);
+
+    protected:
+      constellation_8psk();
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_CONSTELLATION_H */
diff --git a/gr-digital/include/gnuradio/digital/constellation_decoder_cb.h b/gr-digital/include/gnuradio/digital/constellation_decoder_cb.h
new file mode 100644
index 0000000000..51feb95b7c
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/constellation_decoder_cb.h
@@ -0,0 +1,62 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_CONSTELLATION_DECODER_CB_H
+#define INCLUDED_DIGITAL_CONSTELLATION_DECODER_CB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/digital/constellation.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Constellation Decoder
+     * \ingroup symbol_coding_blk
+     *
+     * \details
+     * Decode a constellation's points from a complex space to
+     * (unpacked) bits based on the map of the \p consetllation
+     * object.
+     */
+    class DIGITAL_API constellation_decoder_cb
+      : virtual public block
+    {
+    public:
+      // gr::digital::constellation_decoder_cb::sptr
+      typedef boost::shared_ptr<constellation_decoder_cb> sptr;
+
+      /*!
+       * \brief Make constellation decoder block.
+       *
+       * \param constellation A constellation derived from class
+       * 'constellation'. Use base() method to get a shared pointer to
+       * this base class type.
+       */
+      static sptr make(constellation_sptr constellation);
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_CONSTELLATION_DECODER_CB_H */
diff --git a/gr-digital/include/gnuradio/digital/constellation_receiver_cb.h b/gr-digital/include/gnuradio/digital/constellation_receiver_cb.h
new file mode 100644
index 0000000000..e8f269a139
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/constellation_receiver_cb.h
@@ -0,0 +1,72 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2011,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_CONSTELLATION_RECEIVER_CB_H
+#define	INCLUDED_DIGITAL_CONSTELLATION_RECEIVER_CB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/digital/constellation.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief This block makes hard decisions about the received
+     * symbols (using a constellation object) and also fine tunes
+     * phase synchronization.
+     *
+     * \details
+     *
+     * The phase and frequency synchronization are based on a Costas
+     * loop that finds the error of the incoming signal point compared
+     * to its nearest constellation point. The frequency and phase of
+     * the NCO are updated according to this error.
+     */
+    class DIGITAL_API constellation_receiver_cb
+      : virtual public block
+    {
+    public:
+      // gr::digital::constellation_receiver_cb::sptr
+      typedef boost::shared_ptr<constellation_receiver_cb> sptr;
+
+      /*!
+       * \brief Constructor to synchronize incoming M-PSK symbols
+       *
+       * \param constellation constellation of points for generic modulation
+       * \param loop_bw	Loop  bandwidth of the Costas Loop (~ 2pi/100)
+       * \param fmin          minimum normalized frequency value the loop can achieve
+       * \param fmax          maximum normalized frequency value the loop can achieve
+       *
+       * The constructor chooses which phase detector and decision
+       * maker to use in the work loop based on the value of M.
+       */
+      static sptr make(constellation_sptr constellation, 
+		       float loop_bw, float fmin, float fmax);
+
+      virtual void phase_error_tracking(float phase_error) = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_CONSTELLATION_RECEIVER_CB_H */
diff --git a/gr-digital/include/gnuradio/digital/correlate_access_code_bb.h b/gr-digital/include/gnuradio/digital/correlate_access_code_bb.h
new file mode 100644
index 0000000000..2f7b700ac9
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/correlate_access_code_bb.h
@@ -0,0 +1,75 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2005,2006,2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_BB_H
+#define INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_BB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+#include <string>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Examine input for specified access code, one bit at a time.
+     * \ingroup packet_operators_blk
+     * \ingroup deprecated_blk
+     *
+     * \details
+     * input:  stream of bits, 1 bit per input byte (data in LSB)
+     * output: stream of bits, 2 bits per output byte (data in LSB, flag in next higher bit)
+     *
+     * Each output byte contains two valid bits, the data bit, and the
+     * flag bit. The LSB (bit 0) is the data bit, and is the original
+     * input data, delayed 64 bits. Bit 1 is the flag bit and is 1 if
+     * the corresponding data bit is the first data bit following the
+     * access code. Otherwise the flag bit is 0.
+     */
+    class DIGITAL_API correlate_access_code_bb : virtual public sync_block
+    {
+    public:
+      // gr::digital::correlate_access_code_bb::sptr
+      typedef boost::shared_ptr<correlate_access_code_bb> sptr;
+
+      /*!
+       * Make a correlate_access_code block.
+       *
+       * \param access_code is represented with 1 byte per bit,
+       *                    e.g., "010101010111000100" 
+       * \param threshold maximum number of bits that may be wrong
+       */
+      static sptr make(const std::string &access_code, int threshold);
+
+      /*!
+       * Set a new access code.
+       *
+       * \param access_code is represented with 1 byte per bit,
+       *                    e.g., "010101010111000100"
+       */
+      virtual bool set_access_code(const std::string &access_code) = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_BB_H */
diff --git a/gr-digital/include/gnuradio/digital/correlate_access_code_tag_bb.h b/gr-digital/include/gnuradio/digital/correlate_access_code_tag_bb.h
new file mode 100644
index 0000000000..475c038dc7
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/correlate_access_code_tag_bb.h
@@ -0,0 +1,71 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2005,2006,2011,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_TAG_BB_H
+#define INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_TAG_BB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+#include <string>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Examine input for specified access code, one bit at a time.
+     * \ingroup packet_operators_blk
+     *
+     * \details
+     * input:  stream of bits, 1 bit per input byte (data in LSB)
+     * output: unaltered stream of bits (plus tags)
+     *
+     * This block annotates the input stream with tags. The tags have
+     * key name [tag_name], specified in the constructor. Used for
+     * searching an input data stream for preambles, etc.
+     */
+    class DIGITAL_API correlate_access_code_tag_bb : virtual public sync_block
+    {
+    public:
+      // gr::digital::correlate_access_code_tag_bb::sptr
+      typedef boost::shared_ptr<correlate_access_code_tag_bb> sptr;
+
+      /*!
+       * \param access_code is represented with 1 byte per bit,
+       *                    e.g., "010101010111000100"
+       * \param threshold maximum number of bits that may be wrong
+       * \param tag_name key of the tag inserted into the tag stream
+       */
+      static sptr make(const std::string &access_code,
+		       int threshold,
+		       const std::string &tag_name);
+      
+      /*!
+       * \param access_code is represented with 1 byte per bit,
+       *                    e.g., "010101010111000100"
+       */
+      virtual bool set_access_code(const std::string &access_code) = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_TAG_BB_H */
diff --git a/gr-digital/include/gnuradio/digital/costas_loop_cc.h b/gr-digital/include/gnuradio/digital/costas_loop_cc.h
new file mode 100644
index 0000000000..38a41a5db5
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/costas_loop_cc.h
@@ -0,0 +1,78 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_COSTAS_LOOP_CC_H
+#define INCLUDED_DIGITAL_COSTAS_LOOP_CC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/blocks/control_loop.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*! 
+     * \brief A Costas loop carrier recovery module.
+     * \ingroup synchronizers_blk
+     *
+     * \details
+     * The Costas loop locks to the center frequency of a signal and
+     * downconverts it to baseband. The second (order=2) order loop
+     * is used for BPSK where the real part of the output signal is
+     * the baseband BPSK signal and the imaginary part is the error
+     * signal. When order=4, it can be used for quadrature
+     * modulations where both I and Q (real and imaginary) are
+     * outputted.
+     *
+     * More details can be found online:
+     *
+     * J. Feigin, "Practical Costas loop design: Designing a simple
+     * and inexpensive BPSK Costas loop carrier recovery circuit," RF
+     * signal processing, pp. 20-36, 2002.
+     *
+     * http://rfdesign.com/images/archive/0102Feigin20.pdf
+     *  
+     * The Costas loop can have two output streams:
+     *    stream 1 is the baseband I and Q;
+     *    stream 2 is the normalized frequency of the loop
+     */
+    class DIGITAL_API costas_loop_cc
+      : virtual public sync_block, 
+        virtual public blocks::control_loop
+    {
+    public:
+      // gr::digital::costas_loop_cc::sptr
+      typedef boost::shared_ptr<costas_loop_cc> sptr;
+
+      /*! 
+       * Make a Costas loop carrier recovery block.
+       *
+       * \param loop_bw  internal 2nd order loop bandwidth (~ 2pi/100)
+       * \param order the loop order, either 2, 4, or 8
+       */
+      static sptr make(float loop_bw, int order);
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_COSTAS_LOOP_CC_H */
diff --git a/gr-digital/include/gnuradio/digital/cpmmod_bc.h b/gr-digital/include/gnuradio/digital/cpmmod_bc.h
new file mode 100644
index 0000000000..885c653de4
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/cpmmod_bc.h
@@ -0,0 +1,117 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2010,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_CPMMOD_BC_H
+#define INCLUDED_DIGITAL_CPMMOD_BC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/hier_block2.h>
+#include <gnuradio/analog/cpm.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Generic CPM modulator
+     * \ingroup modulators_blk
+     *
+     * \details
+     * Examples:
+     * - Setting h = 0.5, L = 1, type = LREC yields MSK.
+     * - Setting h = 0.5, type = GAUSSIAN and beta = 0.3 yields GMSK
+     *           as used in GSM.
+     *
+     * The input of this block are symbols from an M-ary alphabet
+     * +/-1, +/-3, ..., +/-(M-1). Usually, M = 2 and therefore, the
+     * valid inputs are +/-1.
+     * The modulator will silently accept any other inputs, though.
+     * The output is the phase-modulated signal.
+     */
+    class DIGITAL_API cpmmod_bc : virtual public hier_block2
+    {
+    public:
+      // gr::digital::cpmmod_bc::sptr
+      typedef boost::shared_ptr<cpmmod_bc> sptr;
+
+      /*!
+       * Make CPM modulator block.
+       *
+       * \param type The modulation type. Can be one of LREC, LRC, LSRC, TFM
+       *             or GAUSSIAN. See gr_cpm::phase_response() for a
+       *             detailed description.
+       * \param h The modulation index. \f$ h \cdot \pi\f$ is the maximum
+       *          phase change that can occur between two symbols, i.e., if
+       *          you only send ones, the phase will increase by \f$ h \cdot
+       *          \pi\f$ every \p samples_per_sym samples. Set this to 0.5
+       *          for Minimum Shift Keying variants.
+       * \param samples_per_sym Samples per symbol.
+       * \param L The length of the phase duration in symbols. For L=1, this
+       *          yields full- response CPM symbols, for L > 1,
+       *          partial-response.
+       * \param beta For LSRC, this is the rolloff factor. For Gaussian
+       *             pulses, this is the 3 dB time-bandwidth product.
+       */
+      static sptr make(analog::cpm::cpm_type type, float h,
+		       int samples_per_sym,
+		       int L, double beta=0.3);
+
+      /*!
+       * Make GMSK modulator block.
+       *
+       * The type is GAUSSIAN and the modulation index for GMSK is
+       * 0.5. This are populated automatically by this factory
+       * function.
+       *
+       * \param samples_per_sym Samples per symbol.
+       * \param L The length of the phase duration in symbols. For L=1, this
+       *          yields full- response CPM symbols, for L > 1,
+       *          partial-response.
+       * \param beta For LSRC, this is the rolloff factor. For Gaussian
+       *             pulses, this is the 3 dB time-bandwidth product.
+       */
+      static sptr make_gmskmod_bc(int samples_per_sym=2,
+				  int L=4, double beta=0.3);
+
+      //! Return the phase response FIR taps
+      virtual std::vector<float> taps() const = 0;
+
+      //! Return the type of CPM modulator
+      virtual int type() const = 0;
+
+      //! Return the modulation index of the modulator.
+      virtual float index() const = 0;
+
+      //! Return the number of samples per symbol
+      virtual int samples_per_sym() const = 0;
+
+      //! Return the length of the phase duration (in symbols)
+      virtual int length() const = 0;
+
+      //! Return the value of beta for the modulator
+      virtual double beta() const = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_CPMMOD_BC_H */
+
diff --git a/gr-digital/include/gnuradio/digital/crc32.h b/gr-digital/include/gnuradio/digital/crc32.h
new file mode 100644
index 0000000000..1f7581fd69
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/crc32.h
@@ -0,0 +1,58 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2005,2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_CRC32_H
+#define INCLUDED_DIGITAL_CRC32_H
+
+#include <gnuradio/digital/api.h>
+#include <string>
+#include <gnuradio/types.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief update running CRC-32
+     * \ingroup packet_operators_blk
+     *
+     * \details
+     * Update a running CRC with the bytes buf[0..len-1] The CRC
+     * should be initialized to all 1's, and the transmitted value is
+     * the 1's complement of the final running CRC.  The resulting CRC
+     * should be transmitted in big endian order.
+     */
+    DIGITAL_API unsigned int 
+    update_crc32(unsigned int crc, const unsigned char *buf, size_t len);
+
+    DIGITAL_API unsigned int 
+    update_crc32(unsigned int crc, const std::string buf);
+
+    DIGITAL_API unsigned int 
+    crc32(const unsigned char *buf, size_t len);
+
+    DIGITAL_API unsigned int 
+    crc32(const std::string buf);
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_CRC32_H */
diff --git a/gr-digital/include/gnuradio/digital/crc32_bb.h b/gr-digital/include/gnuradio/digital/crc32_bb.h
new file mode 100644
index 0000000000..79e8a974b8
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/crc32_bb.h
@@ -0,0 +1,61 @@
+/* -*- c++ -*- */
+/* 
+ * Copyright 2013 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_DIGITAL_CRC32_BB_H
+#define INCLUDED_DIGITAL_CRC32_BB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/tagged_stream_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Byte-stream CRC block
+     * \ingroup packet_operators_blk
+     *
+     * \details
+     * Input: stream of bytes, which form a packet. The first byte of the packet
+     * has a tag with key "length" and the value being the number of bytes in the
+     * packet.
+     *
+     * Output: The same bytes as incoming, but trailing a CRC32 of the packet.
+     * The tag is re-set to the new length.
+     */
+    class DIGITAL_API crc32_bb : virtual public tagged_stream_block
+    {
+     public:
+      typedef boost::shared_ptr<crc32_bb> sptr;
+
+      /*!
+       * \param check Set to true if you want to check CRC, false to create CRC.
+       * \param lengthtagname Length tag key
+       */
+      static sptr make(bool check=false, const std::string& lengthtagname="packet_len");
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_DIGITAL_CRC32_BB_H */
+
diff --git a/gr-digital/include/gnuradio/digital/descrambler_bb.h b/gr-digital/include/gnuradio/digital/descrambler_bb.h
new file mode 100644
index 0000000000..10efde275e
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/descrambler_bb.h
@@ -0,0 +1,60 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2008,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_DESCRAMBLER_BB_H
+#define INCLUDED_GR_DESCRAMBLER_BB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Descramber an input stream using an LFSR.
+     * \ingroup coding_blk
+     *
+     * \details
+     * Descramble an input stream using an LFSR. This block works on
+     * the LSB only of the input data stream, i.e., on an "unpacked
+     * binary" stream, and produces the same format on its output.
+     */
+    class DIGITAL_API descrambler_bb : virtual public sync_block
+    {
+    public:
+      // gr::digital::descrambler_bb::sptr
+      typedef boost::shared_ptr<descrambler_bb> sptr;
+
+      /*!
+       * \brief Make a descrambler block.
+       * 
+       * \param mask     Polynomial mask for LFSR
+       * \param seed     Initial shift register contents
+       * \param len      Shift register length
+       */
+      static sptr make(int mask, int seed, int len);
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_DESCRAMBLER_BB_H */
diff --git a/gr-digital/include/gnuradio/digital/diff_decoder_bb.h b/gr-digital/include/gnuradio/digital/diff_decoder_bb.h
new file mode 100644
index 0000000000..463e65756f
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/diff_decoder_bb.h
@@ -0,0 +1,57 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_DIFF_DECODER_BB_H
+#define INCLUDED_GR_DIFF_DECODER_BB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Differential encoder: y[0] = (x[0] - x[-1]) % M
+     * \ingroup symbol_coding_blk
+     *
+     * \details
+     * Uses current and previous symbols and the alphabet modulus to
+     * perform differential decoding.
+     */
+    class DIGITAL_API diff_decoder_bb : virtual public sync_block
+    {
+    public:
+      // gr::digital::diff_decoder_bb::sptr
+      typedef boost::shared_ptr<diff_decoder_bb> sptr;
+      
+      /*!
+       * Make a differntial decoder block.
+       *
+       * \param modulus Modulus of code's alphabet
+       */
+      static sptr make(unsigned int modulus);
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_DIFF_DECODER_BB_H */
diff --git a/gr-digital/include/gnuradio/digital/diff_encoder_bb.h b/gr-digital/include/gnuradio/digital/diff_encoder_bb.h
new file mode 100644
index 0000000000..e59c6e82bd
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/diff_encoder_bb.h
@@ -0,0 +1,57 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_DIFF_ENCODER_BB_H
+#define INCLUDED_GR_DIFF_ENCODER_BB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Differential decoder: y[0] = (x[0] + y[-1]) % M
+     * \ingroup symbol_coding_blk
+     *
+     * \details
+     * Uses current and previous symbols and the alphabet modulus to
+     * perform differential encoding.
+     */
+    class DIGITAL_API diff_encoder_bb : virtual public sync_block
+    {
+    public:
+      // gr::digital::diff_encoder_bb::sptr
+      typedef boost::shared_ptr<diff_encoder_bb> sptr;
+
+      /*!
+       * Make a differntial encoder block.
+       *
+       * \param modulus Modulus of code's alphabet
+       */
+      static sptr make(unsigned int modulus);
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_DIFF_ENCODER_BB_H */
diff --git a/gr-digital/include/gnuradio/digital/diff_phasor_cc.h b/gr-digital/include/gnuradio/digital/diff_phasor_cc.h
new file mode 100644
index 0000000000..efcc3b367a
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/diff_phasor_cc.h
@@ -0,0 +1,57 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_DIFF_PHASOR_CC_H
+#define INCLUDED_GR_DIFF_PHASOR_CC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Differential decoding based on phase change.
+     * \ingroup symbol_coding_blk
+     *
+     * \details
+     * Uses the phase difference between two symbols to determine the
+     * output symbol:
+     *
+     *     out[i] = in[i] * conj(in[i-1]);
+     */
+    class DIGITAL_API diff_phasor_cc : virtual public sync_block
+    {
+    public:
+      // gr::digital::diff_phasor_cc::sptr
+      typedef boost::shared_ptr<diff_phasor_cc> sptr;
+
+      /*!
+       * Make a differential phasor decoding block.
+       */
+      static sptr make();
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_DIFF_PHASOR_CC_H */
diff --git a/gr-digital/include/gnuradio/digital/fll_band_edge_cc.h b/gr-digital/include/gnuradio/digital/fll_band_edge_cc.h
new file mode 100644
index 0000000000..309c23a496
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/fll_band_edge_cc.h
@@ -0,0 +1,179 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2009,2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_FLL_BAND_EDGE_CC_H
+#define	INCLUDED_DIGITAL_FLL_BAND_EDGE_CC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+#include <gnuradio/blocks/control_loop.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Frequency Lock Loop using band-edge filters
+     * \ingroup synchronizers_blk
+     *
+     * \details
+     * The frequency lock loop derives a band-edge filter that covers
+     * the upper and lower bandwidths of a digitally-modulated
+     * signal. The bandwidth range is determined by the excess
+     * bandwidth (e.g., rolloff factor) of the modulated signal. The
+     * placement in frequency of the band-edges is determined by the
+     * oversampling ratio (number of samples per symbol) and the
+     * excess bandwidth.  The size of the filters should be fairly
+     * large so as to average over a number of symbols.
+     *
+     * The FLL works by filtering the upper and lower band edges into
+     * x_u(t) and x_l(t), respectively.  These are combined to form
+     * cc(t) = x_u(t) + x_l(t) and ss(t) = x_u(t) - x_l(t). Combining
+     * these to form the signal e(t) = Re{cc(t) \\times ss(t)^*}
+     * (where ^* is the complex conjugate) provides an error signal at
+     * the DC term that is directly proportional to the carrier
+     * frequency.  We then make a second-order loop using the error
+     * signal that is the running average of e(t).
+     *
+     * In practice, the above equation can be simplified by just
+     * comparing the absolute value squared of the output of both
+     * filters: abs(x_l(t))^2 - abs(x_u(t))^2 = norm(x_l(t)) -
+     * norm(x_u(t)).
+     *
+     * In theory, the band-edge filter is the derivative of the
+     * matched filter in frequency, (H_be(f) = frac{H(f)}{df}). In
+     * practice, this comes down to a quarter sine wave at the point
+     * of the matched filter's rolloff (if it's a raised-cosine, the
+     * derivative of a cosine is a sine).  Extend this sine by another
+     * quarter wave to make a half wave around the band-edges is
+     * equivalent in time to the sum of two sinc functions. The
+     * baseband filter fot the band edges is therefore derived from
+     * this sum of sincs. The band edge filters are then just the
+     * baseband signal modulated to the correct place in
+     * frequency. All of these calculations are done in the
+     * 'design_filter' function.
+     *
+     * Note: We use FIR filters here because the filters have to have
+     * a flat phase response over the entire frequency range to allow
+     * their comparisons to be valid.
+     *
+     * It is very important that the band edge filters be the
+     * derivatives of the pulse shaping filter, and that they be
+     * linear phase. Otherwise, the variance of the error will be very
+     * large.
+     */
+    class DIGITAL_API fll_band_edge_cc
+      : virtual public sync_block,
+        virtual public blocks::control_loop
+    {
+    public:
+      // gr::digital::fll_band_edge_cc::sptr
+      typedef boost::shared_ptr<fll_band_edge_cc> sptr;
+
+      /*!
+       * Make an FLL block.
+       *
+       * \param samps_per_sym (float) number of samples per symbol
+       * \param rolloff (float) Rolloff (excess bandwidth) of signal filter
+       * \param filter_size (int) number of filter taps to generate
+       * \param bandwidth (float) Loop bandwidth
+       */
+      static sptr make(float samps_per_sym, float rolloff,
+		       int filter_size, float bandwidth);
+  
+      /*******************************************************************
+       SET FUNCTIONS
+      *******************************************************************/
+  
+      /*!
+       * \brief Set the number of samples per symbol
+       *
+       * Set's the number of samples per symbol the system should
+       * use. This value is uesd to calculate the filter taps and will
+       * force a recalculation.
+       *
+       * \param sps    (float) new samples per symbol
+       */
+      virtual void set_samples_per_symbol(float sps) = 0;
+
+      /*!
+       * \brief Set the rolloff factor of the shaping filter
+       *
+       * This sets the rolloff factor that is used in the pulse
+       * shaping filter and is used to calculate the filter
+       * taps. Changing this will force a recalculation of the filter
+       * taps.
+       *
+       * This should be the same value that is used in the
+       * transmitter's pulse shaping filter. It must be between 0 and
+       * 1 and is usually between 0.2 and 0.5 (where 0.22 and 0.35 are
+       * commonly used values).
+       *
+       * \param rolloff (float) new shaping filter rolloff factor [0,1]
+       */
+      virtual void set_rolloff(float rolloff) = 0;
+
+      /*!
+       * \brief Set the number of taps in the filter
+       *
+       * This sets the number of taps in the band-edge
+       * filters. Setting this will force a recalculation of the
+       * filter taps.
+       *
+       * This should be about the same number of taps used in the
+       * transmitter's shaping filter and also not very large. A large
+       * number of taps will result in a large delay between input and
+       * frequency estimation, and so will not be as accurate. Between
+       * 30 and 70 taps is usual.
+       *
+       * \param filter_size (float) number of taps in the filters
+       */
+      virtual void set_filter_size(int filter_size) = 0;
+
+      /*******************************************************************
+       GET FUNCTIONS
+      *******************************************************************/
+
+      /*!
+       * \brief Returns the number of sampler per symbol used for the filter
+       */
+      virtual float samples_per_symbol() const = 0;
+
+      /*!
+       * \brief Returns the rolloff factor used for the filter
+       */
+      virtual float rolloff() const = 0;
+
+      /*!
+       * \brief Returns the number of taps of the filter
+       */
+      virtual int filter_size() const = 0;
+
+      /*!
+       * Print the taps to screen.
+       */
+      virtual void print_taps() = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_FLL_BAND_EDGE_CC_H */
diff --git a/gr-digital/include/gnuradio/digital/framer_sink_1.h b/gr-digital/include/gnuradio/digital/framer_sink_1.h
new file mode 100644
index 0000000000..7d13e4d6c0
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/framer_sink_1.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2005,2006,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_FRAMER_SINK_1_H
+#define INCLUDED_GR_FRAMER_SINK_1_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+#include <gnuradio/msg_queue.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Given a stream of bits and access_code flags, assemble packets.
+     * \ingroup packet_operators_blk
+     *
+     * \details
+     * input: stream of bytes from digital_correlate_access_code_bb
+     * output: none. Pushes assembled packet into target queue
+     *
+     * The framer expects a fixed length header of 2 16-bit shorts
+     * containing the payload length, followed by the payload. If the
+     * 2 16-bit shorts are not identical, this packet is
+     * ignored. Better algs are welcome.
+     *
+     * The input data consists of bytes that have two bits used. Bit
+     * 0, the LSB, contains the data bit. Bit 1 if set, indicates that
+     * the corresponding bit is the the first bit of the packet. That
+     * is, this bit is the first one after the access code.
+     */
+    class DIGITAL_API framer_sink_1 : virtual public sync_block
+    {
+    public:
+      // gr::digital::framer_sink_1::sptr
+      typedef boost::shared_ptr<framer_sink_1> sptr;
+
+      /*!
+       * Make a framer_sink_1 block.
+       *
+       * \param target_queue The message queue where frames go.
+       */
+      static sptr make(msg_queue::sptr target_queue);
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_FRAMER_SINK_1_H */
diff --git a/gr-digital/include/gnuradio/digital/glfsr.h b/gr-digital/include/gnuradio/digital/glfsr.h
new file mode 100644
index 0000000000..445904969e
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/glfsr.h
@@ -0,0 +1,65 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_GLFSR_H
+#define INCLUDED_DIGITAL_GLFSR_H
+
+#include <gnuradio/digital/api.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Galois Linear Feedback Shift Register using specified polynomial mask
+     * \ingroup waveform_generators_blk
+     *
+     * \details
+     * Generates a maximal length pseudo-random sequence of length 2^degree-1
+     */
+    class DIGITAL_API glfsr
+    {
+    private:
+      int d_shift_register;
+      int d_mask;
+
+    public:
+      glfsr(int mask, int seed) { d_shift_register = seed; d_mask = mask; }
+      ~glfsr();
+
+      static int glfsr_mask(int degree);
+
+      unsigned char next_bit()
+      {
+	unsigned char bit = d_shift_register & 1;
+	d_shift_register >>= 1;
+	if(bit)
+	  d_shift_register ^= d_mask;
+	return bit;
+      }
+
+      int mask() const { return d_mask; }
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_GLFSR_H */
diff --git a/gr-digital/include/gnuradio/digital/glfsr_source_b.h b/gr-digital/include/gnuradio/digital/glfsr_source_b.h
new file mode 100644
index 0000000000..3491d73315
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/glfsr_source_b.h
@@ -0,0 +1,63 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_GLFSR_SOURCE_B_H
+#define INCLUDED_GR_GLFSR_SOURCE_B_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Galois LFSR pseudo-random source
+     * \ingroup waveform_generators_blk
+     */
+    class DIGITAL_API glfsr_source_b : virtual public sync_block
+    {
+    public:
+      // gr::digital::glfsr_source_b::sptr
+      typedef boost::shared_ptr<glfsr_source_b> sptr;
+
+      /*!
+       * Make a Galois LFSR pseudo-random source block.
+       *
+       * \param degree Degree of shift register must be in [1, 32]. If mask
+       *               is 0, the degree determines a default mask (see
+       *               digital_impl_glfsr.cc for the mapping).
+       * \param repeat Set to repeat sequence.
+       * \param mask   Allows a user-defined bit mask for indexes of the shift
+       *               register to feed back.
+       * \param seed   Initial setting for values in shift register.
+       */
+      static sptr make(int degree, bool repeat=true,
+		       int mask=0, int seed=1);
+	
+      virtual unsigned int period() const = 0;
+      virtual int mask() const = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_GLFSR_SOURCE_B_H */
diff --git a/gr-digital/include/gnuradio/digital/glfsr_source_f.h b/gr-digital/include/gnuradio/digital/glfsr_source_f.h
new file mode 100644
index 0000000000..24c0713792
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/glfsr_source_f.h
@@ -0,0 +1,63 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_GLFSR_SOURCE_F_H
+#define INCLUDED_GR_GLFSR_SOURCE_F_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Galois LFSR pseudo-random source generating float outputs -1.0 - 1.0.
+     * \ingroup waveform_generators_blk
+     */
+    class DIGITAL_API glfsr_source_f : virtual public sync_block
+    {
+    public:
+      // gr::digital::glfsr_source_f::sptr
+      typedef boost::shared_ptr<glfsr_source_f> sptr;
+
+      /*!
+       * Make a Galois LFSR pseudo-random source block.
+       *
+       * \param degree Degree of shift register must be in [1, 32]. If mask
+       *               is 0, the degree determines a default mask (see
+       *               digital_impl_glfsr.cc for the mapping).
+       * \param repeat Set to repeat sequence.
+       * \param mask   Allows a user-defined bit mask for indexes of the shift
+       *               register to feed back.
+       * \param seed   Initial setting for values in shift register.
+       */
+      static sptr make(int degree, bool repeat=true,
+		       int mask=0, int seed=1);
+
+      virtual unsigned int period() const = 0;
+      virtual int mask() const = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_GLFSR_SOURCE_F_H */
diff --git a/gr-digital/include/gnuradio/digital/header_payload_demux.h b/gr-digital/include/gnuradio/digital/header_payload_demux.h
new file mode 100644
index 0000000000..b3b7c596ef
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/header_payload_demux.h
@@ -0,0 +1,91 @@
+/* -*- c++ -*- */
+/* Copyright 2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_HEADER_PAYLOAD_DEMUX_H
+#define INCLUDED_DIGITAL_HEADER_PAYLOAD_DEMUX_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Header/Payload demuxer.
+     * \ingroup packet_operators_blk
+     *
+     * \details
+     * This block is designed to handle packets from a bursty transmission.
+     * Input 0 takes a continuous transmission of samples.
+     * If used, input 1 is a trigger signal. In this case, a 1 on input 1
+     * is a trigger. Otherwise, a tag with the key specified in \p trigger_tag_key
+     * is used as a trigger (its value is irrelevant).
+     *
+     * Until a trigger signal is detected, all samples are dropped onto the floor.
+     * Once a trigger is detected, a total of \p header_len items are copied to output 0.
+     * The block then stalls until it receives a message on the message port
+     * \p header_data. The message must be a PMT dictionary; all key/value pairs are
+     * copied as tags to the first item of the payload (which is assumed to be the
+     * first item after the header).
+     * The value corresponding to the key specified in \p length_tag_key is read
+     * and taken as the payload length. The payload, together with the header data
+     * as tags, is then copied to output 1.
+     *
+     * If specified, \p guard_interval items are discarded before every symbol.
+     * This is useful for demuxing bursts of OFDM signals.
+     *
+     * Any tags on the input stream are copied to the corresponding output *if* they're
+     * on an item that is propagated. Note that a tag on the header items is copied to the
+     * header stream; that means the header-parsing block must handle these tags if they
+     * should go on the payload.
+     * A special case are tags on items that make up the guard interval. These are copied
+     * to the first item of the following symbol.
+     */
+    class DIGITAL_API header_payload_demux : virtual public block
+    {
+     public:
+      typedef boost::shared_ptr<header_payload_demux> sptr;
+
+      /*!
+       * \param header_len Number of symbols per header
+       * \param items_per_symbol Number of items per symbol
+       * \param guard_interval Number of items between two consecutive symbols
+       * \param length_tag_key Key of the frame length tag
+       * \param trigger_tag_key Key of the trigger tag
+       * \param output_symbols Output symbols (true) or items (false)?
+       * \param itemsize Item size (bytes per item)
+       */
+      static sptr make(
+	int header_len,
+	int items_per_symbol,
+	int guard_interval=0,
+	const std::string &length_tag_key="frame_len",
+	const std::string &trigger_tag_key="",
+	bool output_symbols=false,
+	size_t itemsize=sizeof(gr_complex)
+      );
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_DIGITAL_HEADER_PAYLOAD_DEMUX_H */
+
diff --git a/gr-digital/include/gnuradio/digital/kurtotic_equalizer_cc.h b/gr-digital/include/gnuradio/digital/kurtotic_equalizer_cc.h
new file mode 100644
index 0000000000..a23cfa1377
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/kurtotic_equalizer_cc.h
@@ -0,0 +1,63 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_KURTOTIC_EQUALIZER_CC_H
+#define	INCLUDED_DIGITAL_KURTOTIC_EQUALIZER_CC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_decimator.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Implements a kurtosis-based adaptive equalizer on complex stream
+     * \ingroup equalizers_blk
+     *
+     * \details
+     * Warning: This block does not yet work.
+     *
+     * "Y. Guo, J. Zhao, Y. Sun, "Sign kurtosis maximization based blind
+     * equalization algorithm," IEEE Conf. on Control, Automation,
+     * Robotics and Vision, Vol. 3, Dec. 2004, pp. 2052 - 2057."
+     */
+    class DIGITAL_API kurtotic_equalizer_cc :
+      virtual public sync_decimator
+    {
+    protected:
+      virtual gr_complex error(const gr_complex &out) = 0;
+      virtual void update_tap(gr_complex &tap, const gr_complex &in) = 0;
+  
+    public:
+      // gr::digital::kurtotic_equalizer_cc::sptr
+      typedef boost::shared_ptr<kurtotic_equalizer_cc> sptr;
+
+      static sptr make(int num_taps, float mu);
+
+      virtual float gain() const = 0;
+      virtual void set_gain(float mu) = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_KURTOTIC_EQUALIZER_CC_H */
diff --git a/gr-digital/include/gnuradio/digital/lfsr.h b/gr-digital/include/gnuradio/digital/lfsr.h
new file mode 100644
index 0000000000..ce82f6f5e1
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/lfsr.h
@@ -0,0 +1,163 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2008,2010,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_LFSR_H
+#define INCLUDED_DIGITAL_LFSR_H
+
+#include <gnuradio/digital/api.h>
+#include <stdexcept>
+#include <stdint.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Fibonacci Linear Feedback Shift Register using specified
+     * polynomial mask
+     * \ingroup misc
+     *
+     * \details
+     * Generates a maximal length pseudo-random sequence of length
+     * 2^degree-1
+     *
+     * Constructor: digital::lfsr(int mask, int seed, int reg_len);
+     *
+     * \param mask - polynomial coefficients representing the
+     *             locations of feedback taps from a shift register
+     *             which are xor'ed together to form the new high
+     *             order bit.
+     *
+     *             Some common masks might be:
+     *              x^4 + x^3 + x^0 = 0x19
+     *              x^5 + x^3 + x^0 = 0x29
+     *              x^6 + x^5 + x^0 = 0x61
+     *
+     * \param seed - the initialization vector placed into the
+     *             register durring initialization. Low order bit
+     *             corresponds to x^0 coefficient -- the first to be
+     *             shifted as output.
+     *
+     * \param reg_len - specifies the length of the feedback shift
+     *             register to be used. Durring each iteration, the
+     *             register is rightshifted one and the new bit is
+     *             placed in bit reg_len. reg_len should generally be
+     *             at least order(mask) + 1
+     *
+     *
+     * see http://en.wikipedia.org/wiki/Linear_feedback_shift_register
+     * for more explanation.
+     *
+     *  next_bit() - Standard LFSR operation
+     *
+     *      Perform one cycle of the LFSR.  The output bit is taken from
+     *      the shift register LSB.  The shift register MSB is assigned from
+     *      the modulo 2 sum of the masked shift register.
+     *
+     *  next_bit_scramble(unsigned char input) - Scramble an input stream
+     *
+     *      Perform one cycle of the LFSR.  The output bit is taken from
+     *      the shift register LSB.  The shift register MSB is assigned from
+     *      the modulo 2 sum of the masked shift register and the input LSB.
+     *
+     *  next_bit_descramble(unsigned char input) - Descramble an input stream
+     *
+     *      Perform one cycle of the LFSR.  The output bit is taken from
+     *      the modulo 2 sum of the masked shift register and the input LSB.
+     *      The shift register MSB is assigned from the LSB of the input.
+     *
+     * See http://en.wikipedia.org/wiki/Scrambler for operation of these
+     * last two functions (see multiplicative scrambler.)
+     */
+    class 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
+	popCount(uint32_t x)
+      {
+	uint32_t r = x - ((x >> 1) & 033333333333)
+	  - ((x >> 2) & 011111111111);
+	return ((r + (r >> 3)) & 030707070707) % 63;
+      }
+
+    public:
+      lfsr(uint32_t mask, uint32_t seed, uint32_t 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");
+	}
+
+      unsigned char next_bit()
+      {
+	unsigned char output = d_shift_register & 1;
+	unsigned char newbit = popCount( d_shift_register & d_mask )%2;
+	d_shift_register = ((d_shift_register>>1) | (newbit<<d_shift_register_length));
+	return output;
+      }
+
+      unsigned char next_bit_scramble(unsigned char input)
+      {
+	unsigned char output = d_shift_register & 1;
+	unsigned char newbit = (popCount( d_shift_register & d_mask )%2)^(input & 1);
+	d_shift_register = ((d_shift_register>>1) | (newbit<<d_shift_register_length));
+	return output;
+      }
+
+      unsigned char next_bit_descramble(unsigned char input)
+      {
+	unsigned char output = (popCount( d_shift_register & d_mask )%2)^(input & 1);
+	unsigned char newbit = input & 1;
+	d_shift_register = ((d_shift_register>>1) | (newbit<<d_shift_register_length));
+	return output;
+      }
+
+      /*!
+       * Reset shift register to initial seed value
+       */
+      void reset() { d_shift_register = d_seed; }
+
+      /*!
+       * Rotate the register through x number of bits
+       * where we are just throwing away the results to get queued up correctly
+       */
+      void pre_shift(int num)
+      {
+	for(int i=0; i<num; i++) {
+	  next_bit();
+	}
+      }
+
+      int mask() const { return d_mask; }
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_LFSR_H */
diff --git a/gr-digital/include/gnuradio/digital/lms_dd_equalizer_cc.h b/gr-digital/include/gnuradio/digital/lms_dd_equalizer_cc.h
new file mode 100644
index 0000000000..01e5b6e71a
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/lms_dd_equalizer_cc.h
@@ -0,0 +1,101 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_LMS_DD_EQUALIZER_CC_H
+#define INCLUDED_DIGITAL_LMS_DD_EQUALIZER_CC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_decimator.h>
+#include <gnuradio/digital/constellation.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Least-Mean-Square Decision Directed Equalizer (complex in/out)
+     * \ingroup equalizers_blk
+     *
+     * \details
+     * This block implements an LMS-based decision-directed equalizer.
+     * It uses a set of weights, w, to correlate against the inputs,
+     * u, and a decisions is then made from this output. The error in
+     * the decision is used to update teh weight vector.
+     *
+     * y[n] = conj(w[n]) u[n]
+     * d[n] = decision(y[n])
+     * e[n] = d[n] - y[n]
+     * w[n+1] = w[n] + mu u[n] conj(e[n])
+     *
+     * Where mu is a gain value (between 0 and 1 and usualy small,
+     * around 0.001 - 0.01.
+     *
+     * This block uses the digital_constellation object for making the
+     * decision from y[n]. Create the constellation object for
+     * whatever constellation is to be used and pass in the object.
+     * In Python, you can use something like:
+     *
+     *    self.constellation = digital.constellation_qpsk()
+     *
+     * To create a QPSK constellation (see the digital_constellation
+     * block for more details as to what constellations are available
+     * or how to create your own). You then pass the object to this
+     * block as an sptr, or using "self.constellation.base()".
+     *
+     * The theory for this algorithm can be found in Chapter 9 of:
+     * S. Haykin, Adaptive Filter Theory, Upper Saddle River, NJ:
+     *    Prentice Hall, 1996.
+     */
+    class DIGITAL_API lms_dd_equalizer_cc :
+      virtual public sync_decimator
+    {
+    protected:
+      virtual gr_complex error(const gr_complex &out) = 0;
+      virtual void update_tap(gr_complex &tap, const gr_complex &in) = 0;
+
+    public:
+      // gr::digital::lms_dd_equalizer_cc::sptr
+      typedef boost::shared_ptr<lms_dd_equalizer_cc> sptr;
+
+      /*!
+       * Make an LMS decision-directed equalizer
+       *
+       * \param num_taps Numer of taps in the equalizer (channel size)
+       * \param mu Gain of the update loop
+       * \param sps Number of samples per symbol of the input signal
+       * \param cnst A constellation derived from class
+       * 'constellation'. Use base() method to get a shared pointer to
+       * this base class type.
+       */
+      static sptr make(int num_taps,
+		       float mu, int sps,
+		       constellation_sptr cnst);
+
+      virtual void set_taps(const std::vector<gr_complex> &taps) = 0;
+      virtual std::vector<gr_complex> taps() const = 0;
+      virtual float gain() const = 0;
+      virtual void set_gain(float mu) = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_LMS_DD_EQUALIZER_CC_H */
diff --git a/gr-digital/include/gnuradio/digital/map_bb.h b/gr-digital/include/gnuradio/digital/map_bb.h
new file mode 100644
index 0000000000..e1bbb1d9b5
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/map_bb.h
@@ -0,0 +1,63 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_MAP_BB_H
+#define INCLUDED_GR_MAP_BB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief output[i] = map[input[i]]
+     * \ingroup symbol_coding_blk
+     *
+     * \details
+     * This block maps an incoming signal to the value in the map.
+     * The block expects that the incoming signal has a maximum
+     * value of len(map)-1.
+     *
+     * -> output[i] = map[input[i]]
+     */
+    class DIGITAL_API map_bb : virtual public sync_block
+    {
+    public:
+      // gr::digital::map_bb::sptr
+      typedef boost::shared_ptr<map_bb> sptr;
+      
+      /*!
+       * Make a map block.
+       *
+       * \param map a vector of integers that maps x to map[x].
+       */
+      static sptr make(const std::vector<int> &map);
+
+      virtual void set_map(const std::vector<int> &map) = 0;
+      virtual std::vector<int> map() const = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_MAP_BB_H */
diff --git a/gr-digital/include/gnuradio/digital/metric_type.h b/gr-digital/include/gnuradio/digital/metric_type.h
new file mode 100644
index 0000000000..c277f01d27
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/metric_type.h
@@ -0,0 +1,37 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_METRIC_TYPE_H
+#define INCLUDED_DIGITAL_METRIC_TYPE_H
+
+namespace gr {
+  namespace digital {
+
+    typedef enum {
+      TRELLIS_EUCLIDEAN = 200, TRELLIS_HARD_SYMBOL, TRELLIS_HARD_BIT
+    } trellis_metric_type_t;
+    
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_METRIC_TYPE_H */
+
diff --git a/gr-digital/include/gnuradio/digital/mpsk_receiver_cc.h b/gr-digital/include/gnuradio/digital/mpsk_receiver_cc.h
new file mode 100644
index 0000000000..94e765d4ac
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/mpsk_receiver_cc.h
@@ -0,0 +1,144 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004,2007,2011,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_MPSK_RECEIVER_CC_H
+#define	INCLUDED_DIGITAL_MPSK_RECEIVER_CC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief This block takes care of receiving M-PSK modulated
+     * signals through phase, frequency, and symbol synchronization.
+     * \ingroup synchronizers_blk
+     *
+     * \details
+     * It performs carrier frequency and phase locking as well as
+     * symbol timing recovery.  It works with (D)BPSK, (D)QPSK, and
+     * (D)8PSK as tested currently. It should also work for OQPSK and
+     * PI/4 DQPSK.
+     *
+     * The phase and frequency synchronization are based on a Costas
+     * loop that finds the error of the incoming signal point compared
+     * to its nearest constellation point. The frequency and phase of
+     * the NCO are updated according to this error. There are
+     * optimized phase error detectors for BPSK and QPSK, but 8PSK is
+     * done using a brute-force computation of the constellation
+     * points to find the minimum.
+     *
+     * The symbol synchronization is done using a modified Mueller and
+     * Muller circuit from the paper:
+     *
+     * "G. R. Danesfahani, T. G. Jeans, "Optimisation of modified Mueller
+     * and Muller algorithm," Electronics Letters, Vol. 31, no. 13, 22
+     * June 1995, pp. 1032 - 1033."
+     *
+     * This circuit interpolates the downconverted sample (using the
+     * NCO developed by the Costas loop) every mu samples, then it
+     * finds the sampling error based on this and the past symbols and
+     * the decision made on the samples. Like the phase error
+     * detector, there are optimized decision algorithms for BPSK and
+     * QPKS, but 8PSK uses another brute force computation against all
+     * possible symbols. The modifications to the M&M used here reduce
+     * self-noise.
+     *
+     */
+    class DIGITAL_API mpsk_receiver_cc : virtual public block
+    {
+    public:
+      // gr::digital::mpsk_receiver_cc::sptr
+      typedef boost::shared_ptr<mpsk_receiver_cc> sptr;
+
+      /*!
+       * \brief Make a M-PSK receiver block.
+       *
+       * \param M	        modulation order of the M-PSK modulation
+       * \param theta	    any constant phase rotation from the real axis of the constellation
+       * \param loop_bw	    Loop bandwidth to set gains of phase/freq tracking loop
+       * \param fmin        minimum normalized frequency value the loop can achieve
+       * \param fmax        maximum normalized frequency value the loop can achieve
+       * \param mu          initial parameter for the interpolator [0,1]
+       * \param gain_mu     gain parameter of the M&M error signal to adjust mu (~0.05)
+       * \param omega       initial value for the number of symbols between samples (~number of samples/symbol)
+       * \param gain_omega  gain parameter to adjust omega based on the error (~omega^2/4)
+       * \param omega_rel   sets the maximum (omega*(1+omega_rel)) and minimum (omega*(1+omega_rel)) omega (~0.005)
+       *
+       * The constructor also chooses which phase detector and
+       * decision maker to use in the work loop based on the value of
+       * M.
+       */
+      static sptr make(unsigned int M, float theta, 
+		       float loop_bw,
+		       float fmin, float fmax,
+		       float mu, float gain_mu, 
+		       float omega, float gain_omega, float omega_rel);
+      
+      //! Returns the modulation order (M) currently set
+      virtual float modulation_order() const = 0;
+
+      //! Returns current value of theta
+      virtual float theta() const = 0;
+
+      //! Returns current value of mu
+      virtual float mu() const = 0;
+
+      //! Returns current value of omega
+      virtual float omega() const = 0;
+
+      //! Returns mu gain factor
+      virtual float gain_mu() const = 0;
+
+      //! Returns omega gain factor
+      virtual float gain_omega() const = 0;
+
+      //! Returns the relative omega limit
+      virtual float gain_omega_rel() const = 0;
+
+      //! Sets the modulation order (M) currently
+      virtual void set_modulation_order(unsigned int M) = 0;
+
+      //! Sets value of theta
+      virtual void set_theta(float theta) = 0;
+
+      //! Sets value of mu
+      virtual void set_mu(float mu) = 0;
+  
+      //! Sets value of omega and its min and max values 
+      virtual void set_omega(float omega) = 0;
+
+      //! Sets value for mu gain factor
+      virtual void set_gain_mu(float gain_mu) = 0;
+
+      //! Sets value for omega gain factor
+      virtual void set_gain_omega(float gain_omega) = 0;
+
+      //! Sets the relative omega limit and resets omega min/max values
+      virtual void set_gain_omega_rel(float omega_rel) = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_MPSK_RECEIVER_CC_H */
diff --git a/gr-digital/include/gnuradio/digital/mpsk_snr_est.h b/gr-digital/include/gnuradio/digital/mpsk_snr_est.h
new file mode 100644
index 0000000000..46df06164d
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/mpsk_snr_est.h
@@ -0,0 +1,288 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_MPSK_SNR_EST_H
+#define INCLUDED_DIGITAL_MPSK_SNR_EST_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/gr_complex.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief A block for computing SNR of a signal.
+     * \ingroup measurement_tools_blk
+     *
+     * \details
+     * Below are some ROUGH estimates of what values of SNR each of
+     * these types of estimators is good for. In general, these offer
+     * a trade-off between accuracy and performance.
+     *
+     * \li SNR_EST_SIMPLE:  Simple estimator (>= 7 dB)
+     * \li SNR_EST_SKEW:    Skewness-base est (>= 5 dB)
+     * \li SNR_EST_M2M4:    2nd & 4th moment est (>= 1 dB)
+     * \li SNR_EST_SVR:     SVR-based est (>= 0dB)
+     */
+    typedef enum {
+      SNR_EST_SIMPLE = 0,   // Simple estimator (>= 7 dB)
+      SNR_EST_SKEW,	    // Skewness-base est (>= 5 dB)
+      SNR_EST_M2M4,         // 2nd & 4th moment est (>= 1 dB)
+      SNR_EST_SVR           // SVR-based est (>= 0dB)
+    } snr_est_type_t;
+
+    /*! \brief A parent class for SNR estimators, specifically for
+     *  M-PSK signals in AWGN channels.
+     *  \ingroup snr_blk
+     */
+    class DIGITAL_API mpsk_snr_est
+    {
+    protected:
+      double d_alpha, d_beta;
+
+    public:
+      /*! Constructor
+       *
+       *  Parameters:
+       *  \param alpha: the update rate of internal running average
+       *  calculations.
+       */
+      mpsk_snr_est(double alpha);
+      virtual ~mpsk_snr_est();
+
+      //! Get the running-average coefficient
+      double alpha() const;
+
+      //! Set the running-average coefficient
+      void set_alpha(double alpha);
+
+      //! Update the current registers
+      virtual int update(int noutput_items,
+			 const gr_complex *input);
+
+      //! Use the register values to compute a new estimate
+      virtual double snr();
+    };
+
+
+    //! \brief SNR Estimator using simple mean/variance estimates.
+    /*! \ingroup snr_blk
+     *
+     *  A very simple SNR estimator that just uses mean and variance
+     *  estimates of an M-PSK constellation. This esimator is quick
+     *  and cheap and accurate for high SNR (above 7 dB or so) but
+     *  quickly starts to overestimate the SNR at low SNR.
+     */
+    class DIGITAL_API mpsk_snr_est_simple :
+      public mpsk_snr_est
+    {
+    private:
+      double d_y1, d_y2;
+  
+    public:
+      /*! Constructor
+       *
+       *  Parameters:
+       *  \param alpha: the update rate of internal running average
+       *  calculations.
+       */
+      mpsk_snr_est_simple(double alpha);
+      ~mpsk_snr_est_simple() {}
+
+      int update(int noutput_items,
+		 const gr_complex *input);
+      double snr();
+    };
+
+
+    //! \brief SNR Estimator using skewness correction.
+    /*!  \ingroup snr_blk
+     *
+     *  This is an estimator that came from a discussion between Tom
+     *  Rondeau and fred harris with no known paper reference. The
+     *  idea is that at low SNR, the variance estimations will be
+     *  affected because of fold-over around the decision boundaries,
+     *  which results in a skewness to the samples. We estimate the
+     *  skewness and use this as a correcting term.
+     */
+    class DIGITAL_API mpsk_snr_est_skew :
+      public mpsk_snr_est
+    {
+    private:
+      double d_y1, d_y2, d_y3;
+  
+    public:
+      /*! Constructor
+       *
+       *  Parameters:
+       *  \param alpha: the update rate of internal running average
+       *  calculations.
+       */
+      mpsk_snr_est_skew(double alpha);
+      ~mpsk_snr_est_skew() {}
+
+      int update(int noutput_items,
+		 const gr_complex *input);
+      double snr();
+    };
+
+
+    //! \brief SNR Estimator using 2nd and 4th-order moments.
+    /*! \ingroup snr_blk
+     *
+     *  An SNR estimator for M-PSK signals that uses 2nd (M2) and 4th
+     *  (M4) order moments. This estimator uses knowledge of the
+     *  kurtosis of the signal (k_a) and noise (k_w) to make its
+     *  estimation. We use Beaulieu's approximations here to M-PSK
+     *  signals and AWGN channels such that k_a=1 and k_w=2. These
+     *  approximations significantly reduce the complexity of the
+     *  calculations (and computations) required.
+     *
+     *  Reference:
+     *  D. R. Pauluzzi and N. C. Beaulieu, "A comparison of SNR
+     *  estimation techniques for the AWGN channel," IEEE
+     *  Trans. Communications, Vol. 48, No. 10, pp. 1681-1691, 2000.
+     */
+    class DIGITAL_API mpsk_snr_est_m2m4 :
+      public mpsk_snr_est
+    {
+    private:
+      double d_y1, d_y2;
+  
+    public:
+      /*! Constructor
+       *
+       *  Parameters:
+       *  \param alpha: the update rate of internal running average
+       *  calculations.
+       */
+      mpsk_snr_est_m2m4(double alpha);
+      ~mpsk_snr_est_m2m4() {}
+
+      int update(int noutput_items,
+		 const gr_complex *input);
+      double snr();
+    };
+
+
+    //! \brief SNR Estimator using 2nd and 4th-order moments.
+    /*!  \ingroup snr_blk
+     *
+     *  An SNR estimator for M-PSK signals that uses 2nd (M2) and 4th
+     *  (M4) order moments. This estimator uses knowledge of the
+     *  kurtosis of the signal (k_a) and noise (k_w) to make its
+     *  estimation. In this case, you can set your own estimations for
+     *  k_a and k_w, the kurtosis of the signal and noise, to fit this
+     *  estimation better to your signal and channel conditions.
+     *
+     *  A word of warning: this estimator has not been fully tested or
+     *  proved with any amount of rigor. The estimation for M4 in
+     *  particular might be ignoring effectf of when k_a and k_w are
+     *  different. Use this estimator with caution and a copy of the
+     *  reference on hand.
+     *
+     *  The digital_mpsk_snr_est_m2m4 assumes k_a and k_w to simplify
+     *  the computations for M-PSK and AWGN channels. Use that
+     *  estimator unless you have a way to guess or estimate these
+     *  values here.
+     *
+     *  Original paper: 
+     *  R. Matzner, "An SNR estimation algorithm for complex baseband
+     *  signal using higher order statistics," Facta Universitatis
+     *  (Nis), no. 6, pp. 41-52, 1993.
+     *
+     *  Reference used in derivation:
+     *  D. R. Pauluzzi and N. C. Beaulieu, "A comparison of SNR
+     *  estimation techniques for the AWGN channel," IEEE
+     *  Trans. Communications, Vol. 48, No. 10, pp. 1681-1691, 2000.
+     */
+    class DIGITAL_API snr_est_m2m4 :
+      public mpsk_snr_est
+    {
+    private:
+      double d_y1, d_y2;
+      double d_ka, d_kw;
+  
+    public:
+      /*! Constructor
+       *
+       *  Parameters:
+       *  \param alpha: the update rate of internal running average
+       *  calculations.
+       *  \param ka: estimate of the signal kurtosis (1 for PSK)
+       *  \param kw: estimate of the channel noise kurtosis (2 for AWGN)
+       */
+      snr_est_m2m4(double alpha, double ka, double kw);
+      ~snr_est_m2m4() {}
+
+      int update(int noutput_items,
+		 const gr_complex *input);
+      double snr();
+    };
+
+
+    //! \brief Signal-to-Variation Ratio SNR Estimator.
+    /*! \ingroup snr_blk
+     *
+     *  This estimator actually comes from an SNR estimator for M-PSK
+     *  signals in fading channels, but this implementation is
+     *  specifically for AWGN channels. The math was simplified to
+     *  assume a signal and noise kurtosis (k_a and k_w) for M-PSK
+     *  signals in AWGN. These approximations significantly reduce the
+     *  complexity of the calculations (and computations) required.
+     *
+     *  Original paper:
+     *  A. L. Brandao, L. B. Lopes, and D. C. McLernon, "In-service
+     *  monitoring of multipath delay and cochannel interference for
+     *  indoor mobile communication systems," Proc. IEEE
+     *  Int. Conf. Communications, vol. 3, pp. 1458-1462, May 1994.
+     *
+     *  Reference:
+     *  D. R. Pauluzzi and N. C. Beaulieu, "A comparison of SNR
+     *  estimation techniques for the AWGN channel," IEEE
+     *  Trans. Communications, Vol. 48, No. 10, pp. 1681-1691, 2000.
+     */
+    class DIGITAL_API mpsk_snr_est_svr :
+      public mpsk_snr_est
+    {
+    private:
+      double d_y1, d_y2;
+  
+    public:
+      /*! Constructor
+       *
+       *  Parameters:
+       *  \param alpha: the update rate of internal running average
+       *  calculations.
+       */
+      mpsk_snr_est_svr(double alpha);
+      ~mpsk_snr_est_svr() {}
+
+      int update(int noutput_items,
+		 const gr_complex *input);
+      double snr();
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_MPSK_SNR_EST_H */
diff --git a/gr-digital/include/gnuradio/digital/mpsk_snr_est_cc.h b/gr-digital/include/gnuradio/digital/mpsk_snr_est_cc.h
new file mode 100644
index 0000000000..41a649cf58
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/mpsk_snr_est_cc.h
@@ -0,0 +1,96 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_MPSK_SNR_EST_CC_H
+#define INCLUDED_DIGITAL_MPSK_SNR_EST_CC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/digital/mpsk_snr_est.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief A block for computing SNR of a signal.
+     * \ingroup measurement_tools_blk
+     *
+     * \details
+     * This block can be used to monitor and retrieve estimations of
+     * the signal SNR. It is designed to work in a flowgraph and
+     * passes all incoming data along to its output.
+     *
+     * The block is designed for use with M-PSK signals
+     * especially. The type of estimator is specified as the \p type
+     * parameter in the constructor. The estimators tend to trade off
+     * performance for accuracy, although experimentation should be
+     * done to figure out the right approach for a given
+     * implementation. Further, the current set of estimators are
+     * designed and proven theoretically under AWGN conditions; some
+     * amount of error should be assumed and/or estimated for real
+     * channel conditions.
+     */
+    class DIGITAL_API mpsk_snr_est_cc : virtual public sync_block
+    {
+    public:
+      // gr::digital::mpsk_snr_est_cc::sptr
+      typedef boost::shared_ptr<mpsk_snr_est_cc> sptr;
+
+      /*! Factory function returning shared pointer of this class
+       *
+       *  \param type: the type of estimator to use gr::digital::snr_est_type_t
+       *  "snr_est_type_t" for details about the available types
+       *  \param tag_nsamples: after this many samples, a tag containing
+       *  the SNR (key='snr') will be sent
+       *  \param alpha: the update rate of internal running average
+       *  calculations
+       */
+      static sptr make(snr_est_type_t type,
+		       int tag_nsamples=10000,
+		       double alpha=0.001);
+
+      //! Return the estimated signal-to-noise ratio in decibels
+      virtual double snr() = 0;
+
+      //! Return the type of estimator in use
+      virtual snr_est_type_t type() const = 0;
+
+      //! Return how many samples between SNR tags
+      virtual int tag_nsample() const = 0;
+
+      //! Get the running-average coefficient
+      virtual double alpha() const = 0;
+
+      //! Set type of estimator to use
+      virtual void set_type(snr_est_type_t t) = 0;
+
+      //! Set the number of samples between SNR tags
+      virtual void set_tag_nsample(int n) = 0;
+
+      //! Set the running-average coefficient
+      virtual void set_alpha(double alpha) = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_MPSK_SNR_EST_CC_H */
diff --git a/gr-digital/include/gnuradio/digital/ofdm_carrier_allocator_cvc.h b/gr-digital/include/gnuradio/digital/ofdm_carrier_allocator_cvc.h
new file mode 100644
index 0000000000..26b11fceb4
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_carrier_allocator_cvc.h
@@ -0,0 +1,108 @@
+/* -*- c++ -*- */
+/* 
+ * Copyright 2013 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_DIGITAL_OFDM_CARRIER_ALLOCATOR_CVC_H
+#define INCLUDED_DIGITAL_OFDM_CARRIER_ALLOCATOR_CVC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/tagged_stream_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Create frequency domain OFDM symbols from complex values, add pilots.
+     * \ingroup ofdm_blk
+     *
+     * \details
+     * This block turns a stream of complex, scalar modulation symbols into vectors
+     * which are the input for an IFFT in an OFDM transmitter. It also supports the
+     * possibility of placing pilot symbols onto the carriers.
+     *
+     * The carriers can be allocated freely, if a carrier is not allocated, it is set
+     * to zero. This allows doing OFDMA-style carrier allocations.
+     *
+     * Input: A tagged stream of complex scalars. The first item must have a tag
+     *        containing the number of complex symbols in this frame.
+     * Output: A tagged stream of complex vectors of length fft_len. This can directly
+     *         be connected to an FFT block. Make sure to set this block to 'reverse'
+     *         for the IFFT. If \p output_is_shifted is true, the FFT block must activate
+     *         FFT shifting, otherwise, set shifting to false. If given, sync words are
+     *         prepended to the output. Note that sync words are prepended verbatim,
+     *         make sure they are shifted (or not).
+     *
+     * Carrier indexes are always such that index 0 is the DC carrier (note: you should
+     * not allocate this carrier). The carriers below the DC carrier are either indexed
+     * with negative numbers, or with indexes larger than \p fft_len/2. Index -1 and index
+     * \p fft_len-1 both identify the carrier below the DC carrier.
+     *
+     */
+    class DIGITAL_API ofdm_carrier_allocator_cvc : virtual public tagged_stream_block
+    {
+     public:
+      typedef boost::shared_ptr<ofdm_carrier_allocator_cvc> sptr;
+
+      virtual std::string len_tag_key() = 0;
+      virtual const int fft_len() = 0;
+      virtual std::vector<std::vector<int> > occupied_carriers() = 0;
+
+      /*
+       * \param fft_len FFT length, is also the maximum width of the OFDM symbols, the
+       *                output vector size and maximum value for elements in
+       *                \p occupied_carriers and \p pilot_carriers.
+       * \param occupied_carriers A vector of vectors of indexes. Example: if
+       *                          occupied_carriers = ((1, 2, 3), (1, 2, 4)), the first
+       *                          three input symbols will be mapped to carriers 1, 2
+       *                          and 3. After that, a new OFDM symbol is started. The next
+       *                          three input symbols will be placed onto carriers 1, 2
+       *                          and 4 of the second OFDM symbol. The allocation then
+       *                          starts from the beginning.
+       *                          Order matters! The first input symbol is always mapped
+       *                          onto occupied_carriers[0][0].
+       * \param pilot_carriers The position of the pilot symbols. Same as occupied_carriers,
+       *                       but the actual symbols are taken from pilot_symbols instead
+       *                       of the input stream.
+       * \param pilot_symbols The pilot symbols which are placed onto the pilot carriers.
+       *                      pilot_symbols[0][0] is placed onto the first OFDM symbol, on
+       *                      carrier index pilot_carriers[0][0] etc.
+       * \param sync_words OFDM symbols that are prepended to the OFDM frame (usually for
+       *                   synchronisation purposes, e.g. OFDM symbols with every second
+       *                   sub-carrier being idle). Is a vector of complex vectors of length
+       *                   \p fft_len
+       * \param len_tag_key The key of the tag identifying the length of the input packet.
+       */
+      static sptr make(
+	  int fft_len,
+	  const std::vector<std::vector<int> > &occupied_carriers,
+	  const std::vector<std::vector<int> > &pilot_carriers,
+	  const std::vector<std::vector<gr_complex> > &pilot_symbols,
+	  const std::vector<std::vector<gr_complex> > &sync_words,
+	  const std::string &len_tag_key = "packet_len",
+	  const bool output_is_shifted=true);
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_DIGITAL_OFDM_CARRIER_ALLOCATOR_CVC_H */
+
diff --git a/gr-digital/include/gnuradio/digital/ofdm_chanest_vcvc.h b/gr-digital/include/gnuradio/digital/ofdm_chanest_vcvc.h
new file mode 100644
index 0000000000..e3f9975d8f
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_chanest_vcvc.h
@@ -0,0 +1,96 @@
+/* -*- c++ -*- */
+/* 
+ * Copyright 2013 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_OFDM_CHANEST_VCVC_H
+#define INCLUDED_DIGITAL_OFDM_CHANEST_VCVC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Estimate channel and coarse frequency offset for OFDM from preambles
+     * \ingroup ofdm_blk
+     * \ingroup synchronizers_blk
+     *
+     * \details
+     * Input: OFDM symbols (in frequency domain). The first one (or two) symbols are expected
+     *        to be synchronisation symbols, which are used to estimate the coarse freq offset
+     *        and the initial equalizer taps (these symbols are removed from the stream).
+     *        The following \p n_data_symbols are passed through unmodified (the actual equalisation
+     *        must be done elsewhere).
+     * Output: The data symbols, without the synchronisation symbols.
+     *         The first data symbol passed through has two tags:
+     *         'ofdm_sync_carr_offset' (integer), the coarse frequency offset as number of carriers,
+     *         and 'ofdm_sync_eq_taps' (complex vector).
+     *         Any tags attached to the synchronisation symbols are attached to the first data
+     *         symbol. All other tags are propagated normally.
+     *
+     * This block assumes the frequency offset is even (i.e. an integer multiple of 2).
+     *
+     * [1] Schmidl, T.M. and Cox, D.C., "Robust frequency and timing synchronization for OFDM",
+     *     Communications, IEEE Transactions on, 1997.
+     * [2] K.D. Kammeyer, "Nachrichtenuebertragung," Chapter. 16.3.2.
+     */
+    class DIGITAL_API ofdm_chanest_vcvc : virtual public block
+    {
+     public:
+      typedef boost::shared_ptr<ofdm_chanest_vcvc> sptr;
+
+      /*
+       * \param sync_symbol1 First synchronisation symbol in the frequency domain. Its length must be
+       *                     the FFT length. For Schmidl & Cox synchronisation, every second sub-carrier
+       *                     has to be zero.
+       * \param sync_symbol2 Second synchronisation symbol in the frequency domain. Must be equal to
+       *                     the FFT length, or zero length if only one synchronisation symbol is used.
+       *                     Using this symbol is how synchronisation is described in [1]. Leaving this
+       *                     empty forces us to interpolate the equalizer taps.
+       *                     If you are using an unusual sub-carrier configuration (e.g. because of OFDMA),
+       *                     this sync symbol is used to identify the active sub-carriers. If you only
+       *                     have one synchronisation symbol, set the active sub-carriers to a non-zero
+       *                     value in here, and also set \p force_one_sync_symbol parameter to true.
+       * \param n_data_symbols The number of data symbols following each set of synchronisation symbols.
+       *                       Must be at least 1.
+       * \param eq_noise_red_len If non-zero, noise reduction for the equalizer taps is done according
+       *                         to [2]. In this case, it is the channel influence time in number of
+       *                         samples. A good value is usually the length of the cyclic prefix.
+       * \param max_carr_offset Limit the number of sub-carriers the frequency offset can maximally be.
+       *                        Leave this zero to try all possibilities.
+       * \param force_one_sync_symbol See \p sync_symbol2.
+       */
+      static sptr make(
+	  const std::vector<gr_complex> &sync_symbol1,
+	  const std::vector<gr_complex> &sync_symbol2,
+	  int n_data_symbols,
+	  int eq_noise_red_len=0,
+	  int max_carr_offset=-1,
+	  bool force_one_sync_symbol=false
+      );
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_DIGITAL_OFDM_CHANEST_VCVC_H */
+
diff --git a/gr-digital/include/gnuradio/digital/ofdm_cyclic_prefixer.h b/gr-digital/include/gnuradio/digital/ofdm_cyclic_prefixer.h
new file mode 100644
index 0000000000..70d37a6bc1
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_cyclic_prefixer.h
@@ -0,0 +1,72 @@
+/* -*- c++ -*- */
+/* 
+ * Copyright 2013 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_OFDM_CYCLIC_PREFIXER_H
+#define INCLUDED_DIGITAL_OFDM_CYCLIC_PREFIXER_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/tagged_stream_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Adds a cyclic prefix and performs pulse shaping on OFDM symbols.
+     * \ingroup ofdm_blk
+     *
+     * \details
+     * Input: OFDM symbols (in the time domain, i.e. after the IFFT). Optionally,
+     *        entire frames can be processed. In this case, \p len_tag_key must be
+     *        specified which holds the key of the tag that denotes how
+     *        many OFDM symbols are in a frame.
+     * Output: A stream of (scalar) complex symbols, which include the cyclic prefix
+     *         and the pulse shaping.
+     *         Note: If complete frames are processed, and \p rolloff_len is greater
+     *         than zero, the final OFDM symbol is followed by the delay line of
+     *         the pulse shaping.
+     *
+     * The pulse shape is a raised cosine in the time domain.
+     */
+    class DIGITAL_API ofdm_cyclic_prefixer : virtual public tagged_stream_block
+    {
+     public:
+      typedef boost::shared_ptr<ofdm_cyclic_prefixer> sptr;
+
+      /*!
+       * \param input_size FFT length (i.e. length of the OFDM symbols)
+       * \param output_size FFT length + cyclic prefix length (in samples)
+       * \param rolloff_len Length of the rolloff flank in samples
+       * \param len_tag_key For framed processing the key of the length tag
+       */
+      static sptr make(
+	  size_t input_size,
+	  size_t output_size,
+	  int rolloff_len=0,
+	  const std::string &len_tag_key=""
+      );
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_DIGITAL_OFDM_CYCLIC_PREFIXER_H */
+
diff --git a/gr-digital/include/gnuradio/digital/ofdm_equalizer_base.h b/gr-digital/include/gnuradio/digital/ofdm_equalizer_base.h
new file mode 100644
index 0000000000..c1e47ea1d5
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_equalizer_base.h
@@ -0,0 +1,109 @@
+/* -*- c++ -*- */
+/* Copyright 2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_OFDM_EQUALIZER_BASE_H
+#define INCLUDED_DIGITAL_OFDM_EQUALIZER_BASE_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/tags.h>
+#include <gnuradio/gr_complex.h>
+#include <boost/enable_shared_from_this.hpp>
+
+namespace gr {
+  namespace digital {
+
+    /* \brief Base class for implementation details of frequency-domain OFDM equalizers.
+     * \ingroup ofdm_blk
+     * \ingroup equalizers_blk
+     */
+    class DIGITAL_API ofdm_equalizer_base
+      : public boost::enable_shared_from_this<ofdm_equalizer_base>
+    {
+     protected:
+      int d_fft_len;
+      int d_carr_offset;
+
+     public:
+      typedef boost::shared_ptr<ofdm_equalizer_base> sptr;
+
+      ofdm_equalizer_base(int fft_len);
+      virtual ~ofdm_equalizer_base();
+
+      //! Reset the channel information state knowledge
+      virtual void reset() = 0;
+      //! Set the carrier offset in integer multiples
+      void set_carrier_offset(int offset) { d_carr_offset = offset; };
+      virtual void equalize(
+		      gr_complex *frame,
+		      int n_sym,
+		      const std::vector<gr_complex> &initial_taps = std::vector<gr_complex>(),
+		      const std::vector<tag_t> &tags = std::vector<tag_t>()) = 0;
+      //! Return the current channel state
+      virtual void get_channel_state(std::vector<gr_complex> &taps) = 0;
+      int fft_len() { return d_fft_len; };
+      sptr base() { return shared_from_this(); };
+    };
+
+
+    /* \brief Base class for implementation details of 1-dimensional OFDM FDEs which use pilot tones.
+     * \ingroup digital
+     *
+     */
+    class DIGITAL_API ofdm_equalizer_1d_pilots : public ofdm_equalizer_base
+    {
+     protected:
+      //! If \p d_occupied_carriers[k][l] is true, symbol k, carrier l is carrying data.
+      //  (this is a different format than occupied_carriers!)
+      std::vector<bool> d_occupied_carriers;
+      //! If \p d_pilot_carriers[k][l] is true, symbol k, carrier l is carrying data.
+      //  (this is a different format than pilot_carriers!)
+      std::vector<std::vector<bool> > d_pilot_carriers;
+      //! If \p d_pilot_carriers[k][l] is true, d_pilot_symbols[k][l] is its tx'd value.
+      //  (this is a different format than pilot_symbols!)
+      std::vector<std::vector<gr_complex> > d_pilot_symbols;
+      //! In case the frame doesn't begin with OFDM symbol 0, this is the index of the first symbol
+      int d_symbols_skipped;
+      //! The current position in the set of pilot symbols
+      int d_pilot_carr_set;
+      //! Vector of length d_fft_len saving the current channel state (on the occupied carriers)
+      std::vector<gr_complex> d_channel_state;
+
+     public:
+      typedef boost::shared_ptr<ofdm_equalizer_1d_pilots> sptr;
+
+      ofdm_equalizer_1d_pilots(
+	  int fft_len,
+	  const std::vector<std::vector<int> > &occupied_carriers,
+	  const std::vector<std::vector<int> > &pilot_carriers,
+	  const std::vector<std::vector<gr_complex> > &pilot_symbols,
+	  int symbols_skipped,
+	  bool input_is_shifted);
+      ~ofdm_equalizer_1d_pilots();
+
+      void reset();
+      void get_channel_state(std::vector<gr_complex> &taps);
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_OFDM_EQUALIZER_BASE_H */
+
diff --git a/gr-digital/include/gnuradio/digital/ofdm_equalizer_simpledfe.h b/gr-digital/include/gnuradio/digital/ofdm_equalizer_simpledfe.h
new file mode 100644
index 0000000000..d526f9f157
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_equalizer_simpledfe.h
@@ -0,0 +1,131 @@
+/* -*- c++ -*- */
+/* Copyright 2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_OFDM_EQUALIZER_SIMPLEDFE_H
+#define INCLUDED_DIGITAL_OFDM_EQUALIZER_SIMPLEDFE_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/digital/constellation.h>
+#include <gnuradio/digital/ofdm_equalizer_base.h>
+
+namespace gr {
+  namespace digital {
+
+    /* \brief Simple decision feedback equalizer for OFDM.
+     * \ingroup ofdm_blk
+     * \ingroup equalizers_blk
+     *
+     * \details
+     * Equalizes an OFDM signal symbol by symbol using knowledge of the
+     * complex modulations symbols.
+     * For every symbol, the following steps are performed:
+     * - On every sub-carrier, decode the modulation symbol
+     * - Use the difference between the decoded symbol and the received symbol
+     *   to update the channel state on this carrier
+     * - Whenever a pilot symbol is found, it uses the known pilot symbol to
+     *   update the channel state.
+     *
+     * This equalizer makes a lot of assumptions:
+     * - The initial channel state is good enough to decode the first
+     *   symbol without error (unless the first symbol only consists of pilot
+     *   tones)
+     * - The channel changes only very slowly, such that the channel state
+     *   from one symbol is enough to decode the next
+     * - SNR low enough that equalization will always suffice to correctly
+     *   decode a symbol
+     * If these assumptions are not met, the most common error is that the
+     * channel state is estimated incorrectly during equalization; after that,
+     * all subsequent symbols will be completely wrong.
+     *
+     * Note that the equalized symbols are *exact points* on the constellation.
+     * This means soft information of the modulation symbols is lost after the
+     * equalization, which is suboptimal for channel codes that use soft decision.
+     *
+     */
+    class DIGITAL_API ofdm_equalizer_simpledfe : public ofdm_equalizer_1d_pilots
+    {
+     public:
+      typedef boost::shared_ptr<ofdm_equalizer_simpledfe> sptr;
+
+      ofdm_equalizer_simpledfe(
+	  int fft_len,
+	  const gr::digital::constellation_sptr &constellation,
+	  const std::vector<std::vector<int> > &occupied_carriers = std::vector<std::vector<int> >(),
+	  const std::vector<std::vector<int> > &pilot_carriers = std::vector<std::vector<int> >(),
+	  const std::vector<std::vector<gr_complex> > &pilot_symbols = std::vector<std::vector<gr_complex> >(),
+	  int symbols_skipped = 0,
+	  float alpha = 0.1,
+	  bool input_is_shifted = true);
+
+      ~ofdm_equalizer_simpledfe();
+
+      void equalize(gr_complex *frame,
+		      int n_sym,
+		      const std::vector<gr_complex> &initial_taps = std::vector<gr_complex>(),
+		      const std::vector<tag_t> &tags = std::vector<tag_t>());
+
+      /*
+       * \param fft_len FFT length
+       * \param constellation The constellation object describing the modulation used
+       *                      on the subcarriers (e.g. QPSK). This is used to decode
+       *                      the individual symbols.
+       * \param occupied_carriers List of occupied carriers, see ofdm_carrier_allocator
+       *                          for a description.
+       * \param pilot_carriers Position of pilot symbols, see ofdm_carrier_allocator
+       *                          for a description.
+       * \param pilot_symbols Value of pilot symbols, see ofdm_carrier_allocator
+       *                          for a description.
+       * \param alpha Averaging coefficient (in a nutshell, if \f$H_{i,k}\f$ is the channel
+       *              state for carrier i and symbol k,
+       *              \f$H_{i,k+1} =  \alpha H_{i,k} + (1 - \alpha) H_{i,k+1}\f$. Make this
+       *              larger if there's more noise, but keep in mind that larger values
+       *              of alpha mean slower response to channel changes).
+       * \param symbols_skipped Starting position within occupied_carriers and pilot_carriers.
+       *                        If the first symbol of the frame was removed (e.g. to decode the
+       *                        header), set this make sure the pilot symbols are correctly
+       *                        identified.
+       * \param input_is_shifted Set this to false if the input signal is not shifted, i.e.
+       *                         the first input items is on the DC carrier.
+       *                         Note that a lot of the OFDM receiver blocks operate on shifted
+       *                         signals!
+       */
+      static sptr make(
+	  int fft_len,
+	  const gr::digital::constellation_sptr &constellation,
+	  const std::vector<std::vector<int> > &occupied_carriers = std::vector<std::vector<int> >(),
+	  const std::vector<std::vector<int> > &pilot_carriers = std::vector<std::vector<int> >(),
+	  const std::vector<std::vector<gr_complex> > &pilot_symbols = std::vector<std::vector<gr_complex> >(),
+	  int symbols_skipped=0,
+	  float alpha=0.1,
+	  bool input_is_shifted=true
+      );
+
+     private:
+      gr::digital::constellation_sptr d_constellation;
+      //! Averaging coefficient
+      float d_alpha;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_OFDM_EQUALIZER_SIMPLEDFE_H */
+
diff --git a/gr-digital/include/gnuradio/digital/ofdm_equalizer_static.h b/gr-digital/include/gnuradio/digital/ofdm_equalizer_static.h
new file mode 100644
index 0000000000..892025c2b0
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_equalizer_static.h
@@ -0,0 +1,103 @@
+/* -*- c++ -*- */
+/* Copyright 2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_OFDM_EQUALIZER_STATIC_H
+#define INCLUDED_DIGITAL_OFDM_EQUALIZER_STATIC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/digital/constellation.h>
+#include <gnuradio/digital/ofdm_equalizer_base.h>
+
+namespace gr {
+  namespace digital {
+
+    /* \brief Very simple static equalizer for OFDM.
+     * \ingroup ofdm_blk
+     * \ingroup equalizers_blk
+     *
+     * \details
+     * This is an extremely simple equalizer. It will only work for
+     * high-SNR, very, very slowly changing channels.
+     *
+     * It simply divides the signal with the currently known channel
+     * state. Whenever a pilot symbol comes around, it updates the
+     * channel state on that particular carrier by dividing the
+     * received symbol with the known pilot symbol.
+     */
+    class DIGITAL_API ofdm_equalizer_static : public ofdm_equalizer_1d_pilots
+    {
+     public:
+      typedef boost::shared_ptr<ofdm_equalizer_static> sptr;
+
+      ofdm_equalizer_static(
+	  int fft_len,
+	  const std::vector<std::vector<int> > &occupied_carriers = std::vector<std::vector<int> >(),
+	  const std::vector<std::vector<int> > &pilot_carriers = std::vector<std::vector<int> >(),
+	  const std::vector<std::vector<gr_complex> > &pilot_symbols = std::vector<std::vector<gr_complex> >(),
+	  int symbols_skipped = 0,
+	  bool input_is_shifted = true
+      );
+      ~ofdm_equalizer_static();
+
+      /*! \brief Divide the input signal with the current channel state.
+       *
+       * Does the following (and nothing else):
+       * - Divide every OFDM symbol with the current channel state
+       * - If a pilot symbol is found, re-set the channel state by dividing the received
+       *   symbol with the known pilot symbol
+       */
+      void equalize(gr_complex *frame,
+		      int n_sym,
+		      const std::vector<gr_complex> &initial_taps = std::vector<gr_complex>(),
+		      const std::vector<tag_t> &tags = std::vector<tag_t>());
+
+      /*
+       * \param fft_len FFT length
+       * \param occupied_carriers List of occupied carriers, see ofdm_carrier_allocator
+       *                          for a description.
+       * \param pilot_carriers Position of pilot symbols, see ofdm_carrier_allocator
+       *                          for a description.
+       * \param pilot_symbols Value of pilot symbols, see ofdm_carrier_allocator
+       *                          for a description.
+       * \param symbols_skipped Starting position within occupied_carriers and pilot_carriers.
+       *                        If the first symbol of the frame was removed (e.g. to decode the
+       *                        header), set this make sure the pilot symbols are correctly
+       *                        identified.
+       * \param input_is_shifted Set this to false if the input signal is not shifted, i.e.
+       *                         the first input items is on the DC carrier.
+       *                         Note that a lot of the OFDM receiver blocks operate on shifted
+       *                         signals!
+       */
+      static sptr make(
+	int fft_len,
+	const std::vector<std::vector<int> > &occupied_carriers = std::vector<std::vector<int> >(),
+	const std::vector<std::vector<int> > &pilot_carriers = std::vector<std::vector<int> >(),
+	const std::vector<std::vector<gr_complex> > &pilot_symbols = std::vector<std::vector<gr_complex> >(),
+	int symbols_skipped = 0,
+	bool input_is_shifted = true
+      );
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_OFDM_EQUALIZER_STATIC_H */
+
diff --git a/gr-digital/include/gnuradio/digital/ofdm_frame_acquisition.h b/gr-digital/include/gnuradio/digital/ofdm_frame_acquisition.h
new file mode 100644
index 0000000000..a398e18454
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_frame_acquisition.h
@@ -0,0 +1,82 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2007,2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_OFDM_FRAME_ACQUISITION_H
+#define INCLUDED_DIGITAL_OFDM_FRAME_ACQUISITION_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/block.h>
+#include <vector>
+
+namespace gr {
+  namespace digital {
+    
+    /*!
+     * \brief take a vector of complex constellation points in from an
+     * FFT and performs a correlation and equalization.
+     * \ingroup ofdm_blk
+     *
+     * \details
+     * This block takes the output of an FFT of a received OFDM symbol
+     * and finds the start of a frame based on two known symbols. It
+     * also looks at the surrounding bins in the FFT output for the
+     * correlation in case there is a large frequency shift in the
+     * data. This block assumes that the fine frequency shift has
+     * already been corrected and that the samples fall in the middle
+     * of one FFT bin.
+     *
+     * It then uses one of those known symbols to estimate the channel
+     * response over all subcarriers and does a simple 1-tap
+     * equalization on all subcarriers. This corrects for the phase
+     * and amplitude distortion caused by the channel.
+     */
+    class DIGITAL_API ofdm_frame_acquisition : virtual public block
+    {
+    public:
+      // gr::digital::ofdm_frame_acquisition::sptr
+      typedef boost::shared_ptr<ofdm_frame_acquisition> sptr;
+
+      /*! 
+       * Make an OFDM correlator and equalizer.
+       *
+       * \param occupied_carriers   The number of subcarriers with data in the received symbol
+       * \param fft_length          The size of the FFT vector (occupied_carriers + unused carriers)
+       * \param cplen		    The length of the cycle prefix
+       * \param known_symbol        A vector of complex numbers representing a known symbol at the
+       *                            start of a frame (usually a BPSK PN sequence)
+       * \param max_fft_shift_len   Set's the maximum distance you can look between bins for correlation
+       */
+      static sptr make(unsigned int occupied_carriers, unsigned int fft_length,
+		       unsigned int cplen,
+		       const std::vector<gr_complex> &known_symbol, 
+		       unsigned int max_fft_shift_len=4);
+  
+      /*!
+       * \brief Return an estimate of the SNR of the channel
+       */
+      virtual float snr() = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_OFDM_FRAME_ACQUISITION_H */
diff --git a/gr-digital/include/gnuradio/digital/ofdm_frame_equalizer_vcvc.h b/gr-digital/include/gnuradio/digital/ofdm_frame_equalizer_vcvc.h
new file mode 100644
index 0000000000..0cdafe7a98
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_frame_equalizer_vcvc.h
@@ -0,0 +1,64 @@
+/* -*- c++ -*- */
+/* Copyright 2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_OFDM_FRAME_EQUALIZER_VCVC_H
+#define INCLUDED_OFDM_FRAME_EQUALIZER_VCVC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/digital/ofdm_equalizer_base.h>
+#include <gnuradio/tagged_stream_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief OFDM frame equalizer
+     * \ingroup ofdm_blk
+     *
+     * \details
+     * Performs equalization in one or two dimensions on a tagged OFDM frame.
+     * Input: a tagged series of OFDM symbols.
+     * Output: The same as the input, but equalized.
+     */
+    class DIGITAL_API ofdm_frame_equalizer_vcvc : virtual public tagged_stream_block
+    {
+     public:
+      typedef boost::shared_ptr<ofdm_frame_equalizer_vcvc> sptr;
+
+      /*!
+       * \param equalizer The equalizer object that will do the actual work
+       * \param len_tag_key Length tag key
+       * \param propagate_channel_state If true, the channel state after the last symbol
+       *                                will be added to the first symbol as a tag
+       */
+      static sptr make(
+	   ofdm_equalizer_base::sptr equalizer,
+	   const std::string &len_tag_key = "frame_len",
+	   bool propagate_channel_state=false,
+	   int fixed_frame_len=0
+      );
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_OFDM_FRAME_EQUALIZER_VCVC_H */
+
diff --git a/gr-digital/include/gnuradio/digital/ofdm_frame_sink.h b/gr-digital/include/gnuradio/digital/ofdm_frame_sink.h
new file mode 100644
index 0000000000..439e1ca135
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_frame_sink.h
@@ -0,0 +1,71 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007,2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_OFDM_FRAME_SINK_H
+#define INCLUDED_DIGITAL_OFDM_FRAME_SINK_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+#include <gnuradio/msg_queue.h>
+
+namespace gr {
+  namespace digital {
+    
+    /*!
+     * \brief Takes an OFDM symbol in, demaps it into bits of 0's and
+     * 1's, packs them into packets, and sends to to a message queue
+     * sink.
+     * \ingroup ofdm_blk
+     *
+     * \details
+     * NOTE: The mod input parameter simply chooses a pre-defined
+     * demapper/slicer. Eventually, we want to be able to pass in a
+     * reference to an object to do the demapping and slicing for a
+     * given modulation type.
+     */
+    class DIGITAL_API ofdm_frame_sink : virtual public sync_block
+    {
+    public:
+      // gr::digital::ofdm_frame_sink::sptr
+      typedef boost::shared_ptr<ofdm_frame_sink> sptr;
+
+      /*!
+       * Make an OFDM frame sink block.
+       *
+       * \param sym_position vector of OFDM carrier symbols in complex space
+       * \param sym_value_out vector of bit mapped from the complex symbol space
+       * \param target_queue message queue for the packets to go into
+       * \param occupied_tones The number of subcarriers with data in the received symbol
+       * \param phase_gain gain of the phase tracking loop
+       * \param freq_gain gain of the frequency tracking loop
+       */
+      static sptr make(const std::vector<gr_complex> &sym_position, 
+		       const std::vector<char> &sym_value_out,
+		       msg_queue::sptr target_queue,
+		       int occupied_tones,
+		       float phase_gain=0.25, float freq_gain=0.25*0.25/4);
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_OFDM_FRAME_SINK_H */
diff --git a/gr-digital/include/gnuradio/digital/ofdm_insert_preamble.h b/gr-digital/include/gnuradio/digital/ofdm_insert_preamble.h
new file mode 100644
index 0000000000..a98e7cf814
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_insert_preamble.h
@@ -0,0 +1,79 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007,2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_OFDM_INSERT_PREAMBLE_H
+#define INCLUDED_DIGITAL_OFDM_INSERT_PREAMBLE_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/block.h>
+#include <vector>
+
+namespace gr {
+  namespace digital {
+    
+    /*!
+     * \brief insert "pre-modulated" preamble symbols before each payload.
+     * \ingroup ofdm_blk
+     * \ingroup synchronizers_blk
+     *
+     * \details
+     * <pre>
+     * input 1: stream of vectors of gr_complex [fft_length]
+     *          These are the modulated symbols of the payload.
+     *
+     * input 2: stream of char.  The LSB indicates whether the corresponding
+     *          symbol on input 1 is the first symbol of the payload or not.
+     *          It's a 1 if the corresponding symbol is the first symbol,
+     *          otherwise 0.
+     *
+     * N.B., this implies that there must be at least 1 symbol in the payload.
+     *
+     * output 1: stream of vectors of gr_complex [fft_length]
+     *           These include the preamble symbols and the payload symbols.
+     *
+     * output 2: stream of char.  The LSB indicates whether the corresponding
+     *           symbol on input 1 is the first symbol of a packet (i.e., the
+     *           first symbol of the preamble.)   It's a 1 if the corresponding
+     *           symbol is the first symbol, otherwise 0.
+     * </pre>
+     */
+    class DIGITAL_API ofdm_insert_preamble : virtual public block
+    {
+    public:
+      // gr::digital::ofdm_insert_preamble::sptr
+      typedef boost::shared_ptr<ofdm_insert_preamble> sptr;
+      
+      /*!
+       * Make an OFDM preamble inserter block.
+       *
+       * \param fft_length length of each symbol in samples.
+       * \param preamble   vector of symbols that represent the pre-modulated preamble.
+       */
+      static sptr make(int fft_length,
+		       const std::vector<std::vector<gr_complex> > &preamble);
+
+      virtual void enter_preamble() = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_OFDM_INSERT_PREAMBLE_H */
diff --git a/gr-digital/include/gnuradio/digital/ofdm_mapper_bcv.h b/gr-digital/include/gnuradio/digital/ofdm_mapper_bcv.h
new file mode 100644
index 0000000000..cdd4a60bc2
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_mapper_bcv.h
@@ -0,0 +1,67 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2007,2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_OFDM_MAPPER_BCV_H
+#define INCLUDED_DIGITAL_OFDM_MAPPER_BCV_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+#include <gnuradio/msg_queue.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief take a stream of bytes in and map to a vector of complex
+     * constellation points suitable for IFFT input to be used in an
+     * ofdm modulator.
+     * \ingroup ofdm_blk
+     *
+     * \details
+     * Abstract class must be subclassed with specific mapping.
+     */
+    class DIGITAL_API ofdm_mapper_bcv : virtual public sync_block
+    {
+    public:
+      // gr::digital::ofdm_mapper_bcv::sptr
+      typedef boost::shared_ptr<ofdm_mapper_bcv> sptr;
+
+      /*!
+       * Make an OFDM mapper block.
+       *
+       * \param constellation vector of OFDM carrier symbols in complex space
+       * \param msgq_limit limit on number of messages the queue can store
+       * \param occupied_carriers The number of subcarriers with data in the received symbol
+       * \param fft_length The size of the FFT vector (occupied_carriers + unused carriers)
+       */
+      static sptr make(const std::vector<gr_complex> &constellation,
+		       unsigned msgq_limit, 
+		       unsigned occupied_carriers,
+		       unsigned int fft_length);
+
+      virtual msg_queue::sptr msgq() const = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_OFDM_MAPPER_BCV_H */
diff --git a/gr-digital/include/gnuradio/digital/ofdm_sampler.h b/gr-digital/include/gnuradio/digital/ofdm_sampler.h
new file mode 100644
index 0000000000..59bc36a7c2
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_sampler.h
@@ -0,0 +1,57 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007,2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_OFDM_SAMPLER_H
+#define INCLUDED_DIGITAL_OFDM_SAMPLER_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+    
+    /*!
+     * \brief does the rest of the OFDM stuff
+     * \ingroup ofdm_blk
+     */
+    class DIGITAL_API ofdm_sampler : virtual public block
+    {
+    public:
+      // gr::digital::ofdm_sampler::sptr
+      typedef boost::shared_ptr<ofdm_sampler> sptr;
+
+      /*!
+       * Make an OFDM sampler block.
+       *
+       * \param fft_length The size of the FFT vector (occupied_carriers + unused carriers)
+       * \param symbol_length Length of the full symbol (fft_length + CP length)
+       * \param timeout timeout in samples when we stop looking for a symbol after initial ack.
+       */
+      static sptr make(unsigned int fft_length, 
+		       unsigned int symbol_length,
+		       unsigned int timeout=1000);
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_OFDM_SAMPLER_H */
diff --git a/gr-digital/include/gnuradio/digital/ofdm_serializer_vcc.h b/gr-digital/include/gnuradio/digital/ofdm_serializer_vcc.h
new file mode 100644
index 0000000000..bfaefbc96e
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_serializer_vcc.h
@@ -0,0 +1,92 @@
+/* -*- c++ -*- */
+/* Copyright 2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_OFDM_SERIALIZER_VCC_H
+#define INCLUDED_DIGITAL_OFDM_SERIALIZER_VCC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/tagged_stream_block.h>
+#include <gnuradio/digital/ofdm_carrier_allocator_cvc.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Serializes complex modulations symbols from OFDM sub-carriers
+     * \ingroup ofdm_blk
+     *
+     * \details
+     * This is the inverse block to the carrier_allocator_cvc. It outputs the
+     * complex data symbols as a tagged stream, discarding the pilot symbols.
+     *
+     * If given, two different tags are parsed: The first key (\p len_tag_key)
+     * specifies the number of OFDM symbols in the frame at the input. The
+     * second key (\p packet_len_tag_key) specifies the number of complex symbols
+     * that are coded into this frame. If given, this second key is then used
+     * at the output, otherwise, \p len_tag_key is used.
+     * If both are given, the packet length specifies the maximum number of
+     * output items, and the frame length specifies the exact number of
+     * consumed input items.
+     *
+     * Input: Complex vectors of length \p fft_len
+     * Output: Complex scalars, in the same order as specified in occupied_carriers.
+     */
+    class DIGITAL_API ofdm_serializer_vcc : virtual public tagged_stream_block
+    {
+     public:
+      typedef boost::shared_ptr<ofdm_serializer_vcc> sptr;
+
+      /*!
+       * \param fft_len FFT length
+       * \param occupied_carriers See ofdm_carrier_allocator_cvc.
+       * \param len_tag_key The key of the tag identifying the length of the input frame in OFDM symbols.
+       * \param packet_len_tag_key The key of the tag identifying the number of complex symbols in this packet.
+       * \param symbols_skipped If the first symbol is not allocated as in \p occupied_carriers[0], set this
+       * \param input_is_shifted If the input has the DC carrier on index 0 (i.e. it is not FFT shifted), set this to false
+       */
+      static sptr make(
+	  int fft_len,
+	  const std::vector<std::vector<int> > &occupied_carriers,
+	  const std::string &len_tag_key="frame_len",
+	  const std::string &packet_len_tag_key="",
+	  int symbols_skipped=0,
+	  bool input_is_shifted=true
+      );
+
+      /*!
+       * \param allocator The carrier allocator block of which this shall be the inverse
+       * \param packet_len_tag_key The key of the tag identifying the number of complex symbols in this packet.
+       * \param symbols_skipped If the first symbol is not allocated as in \p occupied_carriers[0], set this
+       * \param input_is_shifted If the input has the DC carrier on index 0 (i.e. it is not FFT shifted), set this to false
+       */
+      static sptr make(
+	  const gr::digital::ofdm_carrier_allocator_cvc::sptr &allocator,
+	  const std::string &packet_len_tag_key="",
+	  int symbols_skipped=0,
+	  bool input_is_shifted=true
+      );
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_DIGITAL_OFDM_SERIALIZER_VCC_H */
+
diff --git a/gr-digital/include/gnuradio/digital/ofdm_sync_sc_cfb.h b/gr-digital/include/gnuradio/digital/ofdm_sync_sc_cfb.h
new file mode 100644
index 0000000000..822e109221
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/ofdm_sync_sc_cfb.h
@@ -0,0 +1,79 @@
+/* -*- c++ -*- */
+/* 
+ * Copyright 2013 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_DIGITAL_OFDM_SYNC_SC_CFB_H
+#define INCLUDED_DIGITAL_OFDM_SYNC_SC_CFB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/hier_block2.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Schmidl & Cox synchronisation for OFDM
+     * \ingroup ofdm_blk
+     * \ingroup synchronizers_blk
+     *
+     * \details
+     * Input: complex samples.
+     * Output 0: Fine frequency offset, scaled by the OFDM symbol duration.
+     *           This is \f$\hat{\varphi}\f$ in [1]. The normalized frequency
+     *           offset is then 2.0*output0/fft_len.
+     * Output 1: Beginning of the first OFDM symbol after the first (doubled) OFDM
+     *           symbol. The beginning is marked with a 1 (it's 0 everywhere else).
+     *
+     * The evaluation of the coarse frequency offset is *not* done in this block.
+     * Also, the initial equalizer taps are not calculated here.
+     *
+     * Note that we use a different normalization factor in the timing metric than
+     * the authors do in their original work[1]. If the timing metric (8) is
+     * \f[
+     * M(d) = \frac{|P(d)|^2}{(R(d))^2},
+     * \f]
+     * we calculate the normalization as
+     * \f[
+     * R(d) = \frac{1}{2} \sum_{k=0}^{N-1} |r_{k+d}|^2,
+     * \f]
+     * i.e., we estimate the energy from *both* half-symbols. This avoids spurious detects
+     * at the end of a burst, when the energy level suddenly drops.
+     *
+     * [1] Schmidl, T.M. and Cox, D.C., "Robust frequency and timing synchronization for OFDM",
+     *     Communications, IEEE Transactions on, 1997.
+     */
+    class DIGITAL_API ofdm_sync_sc_cfb : virtual public hier_block2
+    {
+     public:
+      typedef boost::shared_ptr<ofdm_sync_sc_cfb> sptr;
+
+      /*! \param fft_len FFT length
+       *  \param cp_len Length of the guard interval (cyclic prefix) in samples
+       */
+      static sptr make(int fft_len, int cp_len);
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_DIGITAL_OFDM_SYNC_SC_CFB_H */
+
diff --git a/gr-digital/include/gnuradio/digital/packet_header_default.h b/gr-digital/include/gnuradio/digital/packet_header_default.h
new file mode 100644
index 0000000000..c7f1833d11
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/packet_header_default.h
@@ -0,0 +1,113 @@
+/* -*- c++ -*- */
+/* Copyright 2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_PACKET_HEADER_DEFAULT_H
+#define INCLUDED_DIGITAL_PACKET_HEADER_DEFAULT_H
+
+#include <gnuradio/tags.h>
+#include <gnuradio/digital/api.h>
+#include <boost/enable_shared_from_this.hpp>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Default header formatter for digital packet transmission.
+     * \ingroup packet_operators_blk
+     *
+     * \details
+     * For bursty/packetized digital transmission, packets are usually prepended
+     * with a packet header, containing the number of bytes etc.
+     * This class is not a block, but a tool to create these packet header.
+     *
+     * This is a default packet header (see header_formatter()) for a description
+     * on the header format). To create other header, derive packet header creator
+     * classes from this function.
+     *
+     * gr::digital::packet_headergenerator_bb uses header generators derived from
+     * this class to create packet headers from data streams.
+     */
+    class DIGITAL_API packet_header_default : public boost::enable_shared_from_this<gr::digital::packet_header_default>
+    {
+     public:
+      typedef boost::shared_ptr<packet_header_default> sptr;
+
+      packet_header_default(
+		      long header_len,
+		      const std::string &len_tag_key="packet_len",
+		      const std::string &num_tag_key="packet_num",
+		      int bits_per_byte=1);
+      ~packet_header_default();
+
+      sptr base() { return shared_from_this(); };
+      sptr formatter() { return shared_from_this(); };
+
+      void set_header_num(unsigned header_num) { d_header_number = header_num; };
+      long header_len() { return d_header_len; };
+      pmt::pmt_t len_tag_key() { return d_len_tag_key; };
+
+      /*!
+       * \brief Encodes the header information in the given tags into bits and places them into \p out
+       *
+       * Uses the following header format:
+       * Bits 0-11: The packet length (what was stored in the tag with key \p len_tag_key)
+       * Bits 12-27: The header number (counts up everytime this function is called)
+       * Bit 28: Even parity bit
+       * All other bits: Are set to zero
+       *
+       * If the header length is smaller than 29, bits are simply left out. For this
+       * reason, they always start with the LSB.
+       */
+      virtual bool header_formatter(
+	  long packet_len,
+	  unsigned char *out,
+	  const std::vector<tag_t> &tags=std::vector<tag_t>()
+      );
+
+      /*!
+       * \brief Inverse function to header_formatter().
+       *
+       * Reads the bit stream in \p header and writes a corresponding tag into \p tags.
+       */
+      virtual bool header_parser(
+	const unsigned char *header,
+	std::vector<tag_t> &tags);
+
+      static sptr make(
+	      long header_len,
+	      const std::string &len_tag_key="packet_len",
+	      const std::string &num_tag_key="packet_num",
+	      int bits_per_byte=1);
+
+    protected:
+      long d_header_len;
+      pmt::pmt_t d_len_tag_key;
+      pmt::pmt_t d_num_tag_key;
+      int d_bits_per_byte;
+      unsigned d_header_number;
+      unsigned d_mask;
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_DIGITAL_PACKET_HEADER_DEFAULT_H */
+
diff --git a/gr-digital/include/gnuradio/digital/packet_header_ofdm.h b/gr-digital/include/gnuradio/digital/packet_header_ofdm.h
new file mode 100644
index 0000000000..f3b85038b5
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/packet_header_ofdm.h
@@ -0,0 +1,102 @@
+/* -*- c++ -*- */
+/* Copyright 2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_PACKET_HEADER_OFDM_H
+#define INCLUDED_DIGITAL_PACKET_HEADER_OFDM_H
+
+#include <vector>
+#include <gnuradio/digital/api.h>
+#include <gnuradio/digital/packet_header_default.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Header utility for OFDM signals.
+     * \ingroup ofdm_blk
+     */
+    class DIGITAL_API packet_header_ofdm : public packet_header_default
+    {
+     public:
+      typedef boost::shared_ptr<packet_header_ofdm> sptr;
+
+      packet_header_ofdm(
+		      const std::vector<std::vector<int> > &occupied_carriers,
+		      int n_syms,
+		      const std::string &len_tag_key,
+		      const std::string &frame_len_tag_key,
+		      const std::string &num_tag_key,
+		      int bits_per_header_sym,
+		      int bits_per_payload_sym);
+      ~packet_header_ofdm();
+
+      /*!
+       * \brief Inverse function to header_formatter().
+       *
+       * Does the same as packet_header_default::header_parser(), but
+       * adds another tag that stores the number of OFDM symbols in the
+       * packet.
+       * Note that there is usually no linear connection between the number
+       * of OFDM symbols and the packet length, because, a packet might
+       * finish mid-OFDM-symbol.
+       */
+      bool header_parser(
+	const unsigned char *header,
+	std::vector<tag_t> &tags);
+
+      /*!
+       * \param occupied_carriers See carrier allocator
+       * \param n_syms The number of OFDM symbols the header should be (usually 1)
+       * \param len_tag_key The tag key used for the packet length (number of bytes)
+       * \param frame_len_tag_key The tag key used for the frame length (number of
+       *                          OFDM symbols, this is the tag key required for the
+       *                          frame equalizer etc.)
+       * \param bits_per_header_sym Bits per complex symbol in the header, e.g. 1 if
+       *                            the header is BPSK modulated, 2 if it's QPSK
+       *                            modulated etc.
+       * \param bits_per_payload_sym Bits per complex symbol in the payload. This is
+       *                             required to figure out how many OFDM symbols
+       *                             are necessary to encode the given number of
+       *                             bytes.
+       */
+      static sptr make(
+	    const std::vector<std::vector<int> > &occupied_carriers,
+	    int n_syms,
+	    const std::string &len_tag_key="packet_len",
+	    const std::string &frame_len_tag_key="frame_len",
+	    const std::string &num_tag_key="packet_num",
+	    int bits_per_header_sym=1,
+	    int bits_per_payload_sym=1
+      );
+
+
+     protected:
+      pmt::pmt_t d_frame_len_tag_key;
+      const std::vector<std::vector<int> > d_occupied_carriers; //!< Which carriers/symbols carry data
+      int d_syms_per_set; //!< Helper variable: Total number of elements in d_occupied_carriers
+      int d_bits_per_payload_sym;
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_DIGITAL_PACKET_HEADER_OFDM_H */
+
diff --git a/gr-digital/include/gnuradio/digital/packet_headergenerator_bb.h b/gr-digital/include/gnuradio/digital/packet_headergenerator_bb.h
new file mode 100644
index 0000000000..1ad67b7031
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/packet_headergenerator_bb.h
@@ -0,0 +1,73 @@
+/* -*- c++ -*- */
+/* Copyright 2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_PACKET_HEADERGENERATOR_BB_H
+#define INCLUDED_PACKET_HEADERGENERATOR_BB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/tagged_stream_block.h>
+#include <gnuradio/digital/packet_header_default.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Generates a header for a tagged, streamed packet.
+     * \ingroup packet_operators_blk
+     *
+     * \details
+     * Input: A tagged stream. This is consumed entirely, it is not appended
+     *        to the output stream.
+     * Output: An tagged stream containing the header. The details on the header
+     *         are set in a header formatter object (of type packet_header_default
+     *         or a subclass thereof). If only a number of bits is specified, a
+     *         default header is generated (see packet_header_default).
+     */
+    class DIGITAL_API packet_headergenerator_bb : virtual public tagged_stream_block
+    {
+     public:
+      typedef boost::shared_ptr<packet_headergenerator_bb> sptr;
+
+      /* \param header_formatter A header formatter object.
+       * \param len_tag_key Length tag key. Note that for header generation,
+       *                    it is irrelevant which tag names are set in the
+       *                    formatter object, only this value is relevant!
+       */
+      static sptr make(
+	  const packet_header_default::sptr &header_formatter,
+	  const std::string &len_tag_key="packet_len"
+      );
+
+      /* \param header_len If this value is given, a packet_header_default
+       *                   object is used to generate the header. This is
+       *                   the number of bits per header.
+       * \param len_tag_key Length tag key.
+       */
+      static sptr make(
+	   long header_len,
+	   const std::string &len_tag_key = "packet_len");
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_PACKET_HEADERGENERATOR_BB_H */
+
diff --git a/gr-digital/include/gnuradio/digital/packet_headerparser_b.h b/gr-digital/include/gnuradio/digital/packet_headerparser_b.h
new file mode 100644
index 0000000000..a0ca48f192
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/packet_headerparser_b.h
@@ -0,0 +1,71 @@
+/* -*- c++ -*- */
+/* Copyright 2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_PACKET_HEADERPARSER_B_H
+#define INCLUDED_DIGITAL_PACKET_HEADERPARSER_B_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+#include <gnuradio/digital/packet_header_default.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Post header metadata as a PMT
+     * \ingroup packet_operators_blk
+     *
+     * \details
+     * In a sense, this is the inverse block to packet_headergenerator_bb.
+     * The difference is, the parsed header is not output as a stream,
+     * but as a PMT dictionary, which is published to message port with
+     * the id "header_data".
+     *
+     * The dictionary consists of the tags created by the header formatter
+     * object. You should be able to use the exact same formatter object
+     * as used on the Tx side in the packet_headergenerator_bb.
+     *
+     * If only a header length is given, this block uses the default header
+     * format.
+     */
+    class DIGITAL_API packet_headerparser_b : virtual public sync_block
+    {
+     public:
+      typedef boost::shared_ptr<packet_headerparser_b> sptr;
+
+      /*!
+       * \param header_formatter Header object. This should be the same as used for
+       *                         packet_headergenerator_bb.
+       */
+      static sptr make(const gr::digital::packet_header_default::sptr &header_formatter);
+
+      /*!
+       * \param header_len Number of bytes per header
+       * \param len_tag_key Length Tag Key
+       */
+      static sptr make(long header_len, const std::string &len_tag_key);
+    };
+
+  } // namespace digital
+} // namespace gr
+
+#endif /* INCLUDED_DIGITAL_PACKET_HEADERPARSER_B_H */
+
diff --git a/gr-digital/include/gnuradio/digital/packet_sink.h b/gr-digital/include/gnuradio/digital/packet_sink.h
new file mode 100644
index 0000000000..a0a56bc4ff
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/packet_sink.h
@@ -0,0 +1,80 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2005,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_PACKET_SINK_H
+#define INCLUDED_GR_PACKET_SINK_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+#include <gnuradio/msg_queue.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief process received bits looking for packet sync, header,
+     * and process bits into packet
+     * \ingroup packet_operators_blk
+     *
+     * \details
+     * input: stream of symbols to be sliced.
+     * 
+     * output: none. Pushes assembled packet into target queue
+     *
+     * The packet sink takes in a stream of binary symbols that are
+     * sliced around 0. The bits are then checked for the \p
+     * sync_vector to determine find and decode the packet. It then
+     * expects a fixed length header of 2 16-bit shorts containing the
+     * payload length, followed by the payload. If the 2 16-bit shorts
+     * are not identical, this packet is ignored. Better algs are
+     * welcome.
+     *
+     * This block is not very useful anymore as it only works with
+     * 2-level modulations such as BPSK or GMSK. The block can
+     * generally be replaced with a correlate access code and frame
+     * sink blocks.
+     */
+    class DIGITAL_API packet_sink : virtual public sync_block
+    {
+    public:
+      // gr::digital::packet_sink::sptr
+      typedef boost::shared_ptr<packet_sink> sptr;
+
+      /*!
+       * Make a packet_sink block.
+       *
+       * \param sync_vector The synchronization vector as a vector of 1's and 0's.
+       * \param target_queue The message queue that packets are sent to.
+       * \param threshold Number of bits that can be incorrect in the \p sync_vector.
+       */
+      static sptr make(const std::vector<unsigned char>& sync_vector,
+		       msg_queue::sptr target_queue,
+		       int threshold=-1);
+
+      //! return true if we detect carrier
+      virtual bool carrier_sensed() const = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_PACKET_SINK_H */
diff --git a/gr-digital/include/gnuradio/digital/pfb_clock_sync_ccf.h b/gr-digital/include/gnuradio/digital/pfb_clock_sync_ccf.h
new file mode 100644
index 0000000000..619f835ee8
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/pfb_clock_sync_ccf.h
@@ -0,0 +1,330 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2009,2010,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef INCLUDED_DIGITAL_PFB_CLOCK_SYNC_CCF_H
+#define	INCLUDED_DIGITAL_PFB_CLOCK_SYNC_CCF_H
+
+#include <gnuradio/digital/api.h>
+#include <filter/fir_filter.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Timing synchronizer using polyphase filterbanks
+     * \ingroup synchronizers_blk
+     *
+     * \details
+     * This block performs timing synchronization for PAM signals by
+     * minimizing the derivative of the filtered signal, which in turn
+     * maximizes the SNR and minimizes ISI.
+     *
+     * This approach works by setting up two filterbanks; one
+     * filterbank contains the signal's pulse shaping matched filter
+     * (such as a root raised cosine filter), where each branch of the
+     * filterbank contains a different phase of the filter.  The
+     * second filterbank contains the derivatives of the filters in
+     * the first filterbank. Thinking of this in the time domain, the
+     * first filterbank contains filters that have a sinc shape to
+     * them. We want to align the output signal to be sampled at
+     * exactly the peak of the sinc shape. The derivative of the sinc
+     * contains a zero at the maximum point of the sinc (sinc(0) = 1,
+     * sinc(0)' = 0).  Furthermore, the region around the zero point
+     * is relatively linear. We make use of this fact to generate the
+     * error signal.
+     *
+     * If the signal out of the derivative filters is d_i[n] for the
+     * ith filter, and the output of the matched filter is x_i[n], we
+     * calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} +
+     * Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error
+     * in the real and imaginary parts. There are two reasons we
+     * multiply by the signal itself. First, if the symbol could be
+     * positive or negative going, but we want the error term to
+     * always tell us to go in the same direction depending on which
+     * side of the zero point we are on. The sign of x_i[n] adjusts
+     * the error term to do this. Second, the magnitude of x_i[n]
+     * scales the error term depending on the symbol's amplitude, so
+     * larger signals give us a stronger error term because we have
+     * more confidence in that symbol's value.  Using the magnitude of
+     * x_i[n] instead of just the sign is especially good for signals
+     * with low SNR.
+     *
+     * The error signal, e[n], gives us a value proportional to how
+     * far away from the zero point we are in the derivative
+     * signal. We want to drive this value to zero, so we set up a
+     * second order loop. We have two variables for this loop; d_k is
+     * the filter number in the filterbank we are on and d_rate is the
+     * rate which we travel through the filters in the steady
+     * state. That is, due to the natural clock differences between
+     * the transmitter and receiver, d_rate represents that difference
+     * and would traverse the filter phase paths to keep the receiver
+     * locked. Thinking of this as a second-order PLL, the d_rate is
+     * the frequency and d_k is the phase. So we update d_rate and d_k
+     * using the standard loop equations based on two error signals,
+     * d_alpha and d_beta.  We have these two values set based on each
+     * other for a critically damped system, so in the block
+     * constructor, we just ask for "gain," which is d_alpha while
+     * d_beta is equal to (gain^2)/4.
+     *
+     * The block's parameters are:
+     *
+     * \li \p sps: The clock sync block needs to know the number of
+     * samples per symbol, because it defaults to return a single
+     * point representing the symbol. The sps can be any positive real
+     * number and does not need to be an integer.
+     *
+     * \li \p loop_bw: The loop bandwidth is used to set the gain of
+     * the inner control loop (see:
+     * http://gnuradio.squarespace.com/blog/2011/8/13/control-loop-gain-values.html).
+     * This should be set small (a value of around 2pi/100 is
+     * suggested in that blog post as the step size for the number of
+     * radians around the unit circle to move relative to the error).
+     *
+     * \li \p taps: One of the most important parameters for this
+     * block is the taps of the filter. One of the benefits of this
+     * algorithm is that you can put the matched filter in here as the
+     * taps, so you get both the matched filter and sample timing
+     * correction in one go. So create your normal matched filter. For
+     * a typical digital modulation, this is a root raised cosine
+     * filter. The number of taps of this filter is based on how long
+     * you expect the channel to be; that is, how many symbols do you
+     * want to combine to get the current symbols energy back (there's
+     * probably a better way of stating that). It's usually 5 to 10 or
+     * so. That gives you your filter, but now we need to think about
+     * it as a filter with different phase profiles in each filter. So
+     * take this number of taps and multiply it by the number of
+     * filters. This is the number you would use to create your
+     * prototype filter. When you use this in the PFB filerbank, it
+     * segments these taps into the filterbanks in such a way that
+     * each bank now represents the filter at different phases,
+     * equally spaced at 2pi/N, where N is the number of filters.
+     *
+     * \li \p filter_size (default=32): The number of filters can also
+     * be set and defaults to 32. With 32 filters, you get a good
+     * enough resolution in the phase to produce very small, almost
+     * unnoticeable, ISI.  Going to 64 filters can reduce this more,
+     * but after that there is very little gained for the extra
+     * complexity.
+     *
+     * \li \p init_phase (default=0): The initial phase is another
+     * settable parameter and refers to the filter path the algorithm
+     * initially looks at (i.e., d_k starts at init_phase). This value
+     * defaults to zero, but it might be useful to start at a
+     * different phase offset, such as the mid-point of the filters.
+     *
+     * \li \p max_rate_deviation (default=1.5): The next parameter is
+     * the max_rate_devitation, which defaults to 1.5. This is how far
+     * we allow d_rate to swing, positive or negative, from
+     * 0. Constraining the rate can help keep the algorithm from
+     * walking too far away to lock during times when there is no
+     * signal.
+     *
+     * \li \p osps (default=1): The osps is the number of output
+     * samples per symbol. By default, the algorithm produces 1 sample
+     * per symbol, sampled at the exact sample value. This osps value
+     * was added to better work with equalizers, which do a better job
+     * of modeling the channel if they have 2 samps/sym.
+     */
+    class DIGITAL_API pfb_clock_sync_ccf : virtual public block
+    {
+    public:
+      // gr::digital::pfb_clock_sync_ccf::sptr
+      typedef boost::shared_ptr<pfb_clock_sync_ccf> sptr;
+
+      /*!
+       * Build the polyphase filterbank timing synchronizer.
+       * \param sps (double) The number of samples per symbol in the incoming signal
+       * \param loop_bw (float) The bandwidth of the control loop; set's alpha and beta.
+       * \param taps (vector<int>) The filter taps.
+       * \param filter_size (uint) The number of filters in the filterbank (default = 32).
+       * \param init_phase (float) The initial phase to look at, or which filter to start
+       *                           with (default = 0).
+       * \param max_rate_deviation (float) Distance from 0 d_rate can get (default = 1.5).
+       * \param osps (int) The number of output samples per symbol (default=1).
+       */
+      static sptr make(double sps, float loop_bw,
+		       const std::vector<float> &taps,
+		       unsigned int filter_size=32,
+		       float init_phase=0,
+		       float max_rate_deviation=1.5,
+		       int osps=1);
+
+      /*! \brief update the system gains from omega and eta
+       *
+       *  This function updates the system gains based on the loop
+       *  bandwidth and damping factor of the system.
+       *  These two factors can be set separately through their own
+       *  set functions.
+       */
+      virtual void update_gains() = 0;
+
+      /*!
+       * Resets the filterbank's filter taps with the new prototype filter
+       */
+      virtual void set_taps(const std::vector<float> &taps,
+			    std::vector< std::vector<float> > &ourtaps,
+			    std::vector<gr::filter::kernel::fir_filter_ccf*> &ourfilter) = 0;
+
+      /*!
+       * Returns all of the taps of the matched filter
+       */
+      virtual std::vector< std::vector<float> > taps() const = 0;
+
+      /*!
+       * Returns all of the taps of the derivative filter
+       */
+      virtual std::vector< std::vector<float> > diff_taps() const = 0;
+
+      /*!
+       * Returns the taps of the matched filter for a particular channel
+       */
+      virtual std::vector<float> channel_taps(int channel) const = 0;
+
+      /*!
+       * Returns the taps in the derivative filter for a particular channel
+       */
+      virtual std::vector<float> diff_channel_taps(int channel) const = 0;
+
+      /*!
+       * Return the taps as a formatted string for printing
+       */
+      virtual std::string taps_as_string() const = 0;
+
+      /*!
+       * Return the derivative filter taps as a formatted string for printing
+       */
+      virtual std::string diff_taps_as_string() const = 0;
+
+
+      /*******************************************************************
+       SET FUNCTIONS
+      *******************************************************************/
+
+      /*!
+       * \brief Set the loop bandwidth
+       *
+       * Set the loop filter's bandwidth to \p bw. This should be
+       * between 2*pi/200 and 2*pi/100 (in rads/samp). It must also be
+       * a positive number.
+       *
+       * When a new damping factor is set, the gains, alpha and beta,
+       * of the loop are recalculated by a call to update_gains().
+       *
+       * \param bw    (float) new bandwidth
+       */
+      virtual void set_loop_bandwidth(float bw) = 0;
+
+      /*!
+       * \brief Set the loop damping factor
+       *
+       * Set the loop filter's damping factor to \p df. The damping
+       * factor should be sqrt(2)/2.0 for critically damped systems.
+       * Set it to anything else only if you know what you are
+       * doing. It must be a number between 0 and 1.
+       *
+       * When a new damping factor is set, the gains, alpha and beta,
+       * of the loop are recalculated by a call to update_gains().
+       *
+       * \param df    (float) new damping factor
+       */
+      virtual void set_damping_factor(float df) = 0;
+
+      /*!
+       * \brief Set the loop gain alpha
+       *
+       * Set's the loop filter's alpha gain parameter.
+       *
+       * This value should really only be set by adjusting the loop
+       * bandwidth and damping factor.
+       *
+       * \param alpha    (float) new alpha gain
+       */
+      virtual void set_alpha(float alpha) = 0;
+
+      /*!
+       * \brief Set the loop gain beta
+       *
+       * Set's the loop filter's beta gain parameter.
+       *
+       * This value should really only be set by adjusting the loop
+       * bandwidth and damping factor.
+       *
+       * \param beta    (float) new beta gain
+       */
+      virtual void set_beta(float beta) = 0;
+
+      /*!
+       * Set the maximum deviation from 0 d_rate can have
+       */
+      virtual void set_max_rate_deviation(float m) = 0;
+
+      /*******************************************************************
+       GET FUNCTIONS
+      *******************************************************************/
+
+      /*!
+       * \brief Returns the loop bandwidth
+       */
+      virtual float loop_bandwidth() const = 0;
+
+      /*!
+       * \brief Returns the loop damping factor
+       */
+      virtual float damping_factor() const = 0;
+
+      /*!
+       * \brief Returns the loop gain alpha
+       */
+      virtual float alpha() const = 0;
+
+      /*!
+       * \brief Returns the loop gain beta
+       */
+      virtual float beta() const = 0;
+
+      /*!
+       * \brief Returns the current clock rate
+       */
+      virtual float clock_rate() const = 0;
+
+      /*!
+       * \brief Returns the current error of the control loop.
+       */
+      virtual float error() const = 0;
+  
+      /*!
+       * \brief Returns the current rate of the control loop.
+       */
+      virtual float rate() const = 0;
+
+      /*!
+       * \brief Returns the current phase arm of the control loop.
+       */
+      virtual float phase() const = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_PFB_CLOCK_SYNC_CCF_H */
diff --git a/gr-digital/include/gnuradio/digital/pfb_clock_sync_fff.h b/gr-digital/include/gnuradio/digital/pfb_clock_sync_fff.h
new file mode 100644
index 0000000000..f0e4e88247
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/pfb_clock_sync_fff.h
@@ -0,0 +1,316 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2009,2010,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_PFB_CLOCK_SYNC_FFF_H
+#define	INCLUDED_DIGITAL_PFB_CLOCK_SYNC_FFF_H
+
+#include <gnuradio/digital/api.h>
+#include <filter/fir_filter.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Timing synchronizer using polyphase filterbanks
+     * \ingroup synchronizers_blk
+     *
+     * \details
+     * This block performs timing synchronization for PAM signals by
+     * minimizing the derivative of the filtered signal, which in turn
+     * maximizes the SNR and minimizes ISI.
+     *
+     * This approach works by setting up two filterbanks; one
+     * filterbank contains the signal's pulse shaping matched filter
+     * (such as a root raised cosine filter), where each branch of the
+     * filterbank contains a different phase of the filter.  The
+     * second filterbank contains the derivatives of the filters in
+     * the first filterbank. Thinking of this in the time domain, the
+     * first filterbank contains filters that have a sinc shape to
+     * them. We want to align the output signal to be sampled at
+     * exactly the peak of the sinc shape. The derivative of the sinc
+     * contains a zero at the maximum point of the sinc (sinc(0) = 1,
+     * sinc(0)' = 0).  Furthermore, the region around the zero point
+     * is relatively linear. We make use of this fact to generate the
+     * error signal.
+     *
+     * If the signal out of the derivative filters is d_i[n] for the
+     * ith filter, and the output of the matched filter is x_i[n], we
+     * calculate the error as: e[n] = (Re{x_i[n]} * Re{d_i[n]} +
+     * Im{x_i[n]} * Im{d_i[n]}) / 2.0 This equation averages the error
+     * in the real and imaginary parts. There are two reasons we
+     * multiply by the signal itself. First, if the symbol could be
+     * positive or negative going, but we want the error term to
+     * always tell us to go in the same direction depending on which
+     * side of the zero point we are on. The sign of x_i[n] adjusts
+     * the error term to do this. Second, the magnitude of x_i[n]
+     * scales the error term depending on the symbol's amplitude, so
+     * larger signals give us a stronger error term because we have
+     * more confidence in that symbol's value.  Using the magnitude of
+     * x_i[n] instead of just the sign is especially good for signals
+     * with low SNR.
+     *
+     * The error signal, e[n], gives us a value proportional to how
+     * far away from the zero point we are in the derivative
+     * signal. We want to drive this value to zero, so we set up a
+     * second order loop. We have two variables for this loop; d_k is
+     * the filter number in the filterbank we are on and d_rate is the
+     * rate which we travel through the filters in the steady
+     * state. That is, due to the natural clock differences between
+     * the transmitter and receiver, d_rate represents that difference
+     * and would traverse the filter phase paths to keep the receiver
+     * locked. Thinking of this as a second-order PLL, the d_rate is
+     * the frequency and d_k is the phase. So we update d_rate and d_k
+     * using the standard loop equations based on two error signals,
+     * d_alpha and d_beta.  We have these two values set based on each
+     * other for a critically damped system, so in the block
+     * constructor, we just ask for "gain," which is d_alpha while
+     * d_beta is equal to (gain^2)/4.
+     *
+     * The block's parameters are:
+     *
+     * \li \p sps: The clock sync block needs to know the number of
+     * samples per symbol, because it defaults to return a single
+     * point representing the symbol. The sps can be any positive real
+     * number and does not need to be an integer.
+     *
+     * \li \p loop_bw: The loop bandwidth is used to set the gain of
+     * the inner control loop (see:
+     * http://gnuradio.squarespace.com/blog/2011/8/13/control-loop-gain-values.html).
+     * This should be set small (a value of around 2pi/100 is
+     * suggested in that blog post as the step size for the number of
+     * radians around the unit circle to move relative to the error).
+     *
+     * \li \p taps: One of the most important parameters for this
+     * block is the taps of the filter. One of the benefits of this
+     * algorithm is that you can put the matched filter in here as the
+     * taps, so you get both the matched filter and sample timing
+     * correction in one go. So create your normal matched filter. For
+     * a typical digital modulation, this is a root raised cosine
+     * filter. The number of taps of this filter is based on how long
+     * you expect the channel to be; that is, how many symbols do you
+     * want to combine to get the current symbols energy back (there's
+     * probably a better way of stating that). It's usually 5 to 10 or
+     * so. That gives you your filter, but now we need to think about
+     * it as a filter with different phase profiles in each filter. So
+     * take this number of taps and multiply it by the number of
+     * filters. This is the number you would use to create your
+     * prototype filter. When you use this in the PFB filerbank, it
+     * segments these taps into the filterbanks in such a way that
+     * each bank now represents the filter at different phases,
+     * equally spaced at 2pi/N, where N is the number of filters.
+     *
+     * \li \p filter_size (default=32): The number of filters can also
+     * be set and defaults to 32. With 32 filters, you get a good
+     * enough resolution in the phase to produce very small, almost
+     * unnoticeable, ISI.  Going to 64 filters can reduce this more,
+     * but after that there is very little gained for the extra
+     * complexity.
+     *
+     * \li \p init_phase (default=0): The initial phase is another
+     * settable parameter and refers to the filter path the algorithm
+     * initially looks at (i.e., d_k starts at init_phase). This value
+     * defaults to zero, but it might be useful to start at a
+     * different phase offset, such as the mid-point of the filters.
+     *
+     * \li \p max_rate_deviation (default=1.5): The next parameter is
+     * the max_rate_devitation, which defaults to 1.5. This is how far
+     * we allow d_rate to swing, positive or negative, from
+     * 0. Constraining the rate can help keep the algorithm from
+     * walking too far away to lock during times when there is no
+     * signal.
+     *
+     * \li \p osps (default=1): The osps is the number of output
+     * samples per symbol. By default, the algorithm produces 1 sample
+     * per symbol, sampled at the exact sample value. This osps value
+     * was added to better work with equalizers, which do a better job
+     * of modeling the channel if they have 2 samps/sym.
+     */
+    class DIGITAL_API pfb_clock_sync_fff : virtual public block
+    {
+    public:
+      // gr::digital::pfb_clock_sync_fff::sptr
+      typedef boost::shared_ptr<pfb_clock_sync_fff> sptr;
+
+      /*!
+       * Build the polyphase filterbank timing synchronizer.
+       * \param sps (double) The number of samples per second in the incoming signal
+       * \param gain (float) The alpha gain of the control loop; beta = (gain^2)/4 by default.
+       * \param taps (vector<int>) The filter taps.
+       * \param filter_size (uint) The number of filters in the filterbank (default = 32).
+       * \param init_phase (float) The initial phase to look at, or which filter to start
+       *                           with (default = 0).
+       * \param max_rate_deviation (float) Distance from 0 d_rate can get (default = 1.5).
+       * \param osps (int) The number of output samples per symbol (default=1).
+       *
+       */
+      static sptr make(double sps, float gain,
+		       const std::vector<float> &taps,
+		       unsigned int filter_size=32,
+		       float init_phase=0,
+		       float max_rate_deviation=1.5,
+		       int osps=1);
+
+      /*! \brief update the system gains from omega and eta
+       *
+       *  This function updates the system gains based on the loop
+       *  bandwidth and damping factor of the system.
+       *  These two factors can be set separately through their own
+       *  set functions.
+       */
+      virtual void update_gains() = 0;
+
+      /*!
+       * Resets the filterbank's filter taps with the new prototype filter
+       */
+      virtual void set_taps(const std::vector<float> &taps,
+			    std::vector< std::vector<float> > &ourtaps,
+			    std::vector<gr::filter::kernel::fir_filter_fff*> &ourfilter) = 0;
+
+      /*!
+       * Returns all of the taps of the matched filter
+       */
+      virtual std::vector< std::vector<float> > taps() const = 0;
+
+      /*!
+       * Returns all of the taps of the derivative filter
+       */
+      virtual std::vector< std::vector<float> > diff_taps() const = 0;
+
+      /*!
+       * Returns the taps of the matched filter for a particular channel
+       */
+      virtual std::vector<float> channel_taps(int channel) const = 0;
+
+      /*!
+       * Returns the taps in the derivative filter for a particular channel
+       */
+      virtual std::vector<float> diff_channel_taps(int channel) const = 0;
+
+      /*!
+       * Return the taps as a formatted string for printing
+       */
+      virtual std::string taps_as_string() const = 0;
+
+      /*!
+       * Return the derivative filter taps as a formatted string for printing
+       */
+      virtual std::string diff_taps_as_string() const = 0;
+
+
+      /*******************************************************************
+       SET FUNCTIONS
+      *******************************************************************/
+
+
+      /*!
+       * \brief Set the loop bandwidth
+       *
+       * Set the loop filter's bandwidth to \p bw. This should be
+       * between 2*pi/200 and 2*pi/100 (in rads/samp). It must also be
+       * a positive number.
+       *
+       * When a new damping factor is set, the gains, alpha and beta,
+       * of the loop are recalculated by a call to update_gains().
+       *
+       * \param bw    (float) new bandwidth
+       */
+      virtual void set_loop_bandwidth(float bw) = 0;
+
+      /*!
+       * \brief Set the loop damping factor
+       *
+       * Set the loop filter's damping factor to \p df. The damping
+       * factor should be sqrt(2)/2.0 for critically damped systems.
+       * Set it to anything else only if you know what you are
+       * doing. It must be a number between 0 and 1.
+       *
+       * When a new damping factor is set, the gains, alpha and beta,
+       * of the loop are recalculated by a call to update_gains().
+       *
+       * \param df    (float) new damping factor
+       */
+      virtual void set_damping_factor(float df) = 0;
+
+      /*!
+       * \brief Set the loop gain alpha
+       *
+       * Set's the loop filter's alpha gain parameter.
+       *
+       * This value should really only be set by adjusting the loop
+       * bandwidth and damping factor.
+       *
+       * \param alpha    (float) new alpha gain
+       */
+      virtual void set_alpha(float alpha) = 0;
+
+      /*!
+       * \brief Set the loop gain beta
+       *
+       * Set's the loop filter's beta gain parameter.
+       *
+       * This value should really only be set by adjusting the loop
+       * bandwidth and damping factor.
+       *
+       * \param beta    (float) new beta gain
+       */
+      virtual void set_beta(float beta) = 0;
+
+      /*!
+       * Set the maximum deviation from 0 d_rate can have
+       */
+      virtual void set_max_rate_deviation(float m) = 0;
+
+      /*******************************************************************
+       GET FUNCTIONS
+      *******************************************************************/
+
+      /*!
+       * \brief Returns the loop bandwidth
+       */
+      virtual float loop_bandwidth() const = 0;
+
+      /*!
+       * \brief Returns the loop damping factor
+       */
+      virtual float damping_factor() const = 0;
+
+      /*!
+       * \brief Returns the loop gain alpha
+       */
+      virtual float alpha() const = 0;
+
+      /*!
+       * \brief Returns the loop gain beta
+       */
+      virtual float beta() const = 0;
+
+      /*!
+       * \brief Returns the current clock rate
+       */
+      virtual float clock_rate() const = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_PFB_CLOCK_SYNC_FFF_H */
diff --git a/gr-digital/include/gnuradio/digital/pn_correlator_cc.h b/gr-digital/include/gnuradio/digital/pn_correlator_cc.h
new file mode 100644
index 0000000000..c98f086aa0
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/pn_correlator_cc.h
@@ -0,0 +1,63 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_PN_CORRELATOR_CC_H
+#define INCLUDED_GR_PN_CORRELATOR_CC_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_decimator.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief PN code sequential search correlator
+     * \ingroup synchronizers_blk
+     *
+     * \details
+     * Receives complex baseband signal, outputs complex correlation
+     * against reference PN code, one sample per PN code period. The
+     * PN sequence is generated using a GLFSR.
+     */
+    class DIGITAL_API pn_correlator_cc : virtual public sync_decimator
+    {
+    public:
+      // gr::digital::pn_correlator_cc::sptr
+      typedef boost::shared_ptr<pn_correlator_cc> sptr;
+
+      /*!
+       * \brief Make PN code sequential search correlator block.
+       *
+       * \param degree Degree of shift register must be in [1, 32]. If mask
+       *               is 0, the degree determines a default mask (see
+       *               digital_impl_glfsr.cc for the mapping).
+       * \param mask   Allows a user-defined bit mask for indexes of the shift
+       *               register to feed back.
+       * \param seed   Initial setting for values in shift register.
+       */
+      static sptr make(int degree, int mask=0, int seed=1);
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_PN_CORRELATOR_CC_H */
diff --git a/gr-digital/include/gnuradio/digital/probe_density_b.h b/gr-digital/include/gnuradio/digital/probe_density_b.h
new file mode 100644
index 0000000000..ff5ce22080
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/probe_density_b.h
@@ -0,0 +1,68 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2008,2012 Free Software Foundation, Inc.
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_PROBE_DENSITY_B_H
+#define INCLUDED_GR_PROBE_DENSITY_B_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \ingroup measurement_tools_blk
+     *
+     * This block maintains a running average of the input stream and
+     * makes it available as an accessor function. The input stream is
+     * type unsigned char.
+     *
+     * If you send this block a stream of unpacked bytes, it will tell
+     * you what the bit density is.
+     */
+    class DIGITAL_API probe_density_b : virtual public sync_block
+    {
+    public:
+      // gr::digital::probe_density_b::sptr
+      typedef boost::shared_ptr<probe_density_b> sptr;
+
+      /*!
+       * Make a density probe block.
+       *
+       * \param alpha  Average filter constant
+       *
+       */
+      static sptr make(double alpha);
+
+      /*!
+       * \brief Returns the current density value
+       */
+      virtual double density() const = 0;
+
+      /*!
+       * \brief Set the average filter constant
+       */
+      virtual void set_alpha(double alpha) = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_PROBE_DENSITY_B_H */
diff --git a/gr-digital/include/gnuradio/digital/probe_mpsk_snr_est_c.h b/gr-digital/include/gnuradio/digital/probe_mpsk_snr_est_c.h
new file mode 100644
index 0000000000..f78c767bf1
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/probe_mpsk_snr_est_c.h
@@ -0,0 +1,95 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2011,2012 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_DIGITAL_PROBE_MPSK_SNR_EST_C_H
+#define INCLUDED_DIGITAL_PROBE_MPSK_SNR_EST_C_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/digital/mpsk_snr_est.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief A probe for computing SNR of a signal.
+     * \ingroup measurement_tools_blk
+     *
+     * \details 
+     * This is a probe block (a sink) that can be used to monitor and
+     * retrieve estimations of the signal SNR. This probe is designed
+     * for use with M-PSK signals especially. The type of estimator is
+     * specified as the \p type parameter in the constructor. The
+     * estimators tend to trade off performance for accuracy, although
+     * experimentation should be done to figure out the right approach
+     * for a given implementation. Further, the current set of
+     * estimators are designed and proven theoretically under AWGN
+     * conditions; some amount of error should be assumed and/or
+     * estimated for real channel conditions.
+     */
+    class DIGITAL_API probe_mpsk_snr_est_c : virtual public sync_block
+    {
+    public:
+      // gr::digital::probe_mpsk_snr_est_c::sptr
+      typedef boost::shared_ptr<probe_mpsk_snr_est_c> sptr;
+
+      /*! Make an MPSK SNR probe.
+       *
+       *  Parameters:
+       *
+       *  \param type: the type of estimator to use see
+       *   gr::digital::snr_est_type_t for details about the types.
+       *  \param msg_nsamples: [not implemented yet] after this many
+       *   samples, a message containing the SNR (key='snr') will be sent
+       *  \param alpha: the update rate of internal running average
+       *   calculations.
+       */
+      static sptr make(snr_est_type_t type,
+		       int msg_nsamples=10000,
+		       double alpha=0.001);
+
+      //! Return the estimated signal-to-noise ratio in decibels
+      virtual double snr() = 0;
+
+      //! Return the type of estimator in use
+      virtual snr_est_type_t type() const = 0;
+
+      //! Return how many samples between SNR messages
+      virtual int msg_nsample() const = 0;
+
+      //! Get the running-average coefficient
+      virtual double alpha() const = 0;
+
+      //! Set type of estimator to use
+      virtual void set_type(snr_est_type_t t) = 0;
+
+      //! Set the number of samples between SNR messages
+      virtual void set_msg_nsample(int n) = 0;
+
+      //! Set the running-average coefficient
+      virtual void set_alpha(double alpha) = 0;
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_DIGITAL_PROBE_MPSK_SNR_EST_C_H */
diff --git a/gr-digital/include/gnuradio/digital/scrambler_bb.h b/gr-digital/include/gnuradio/digital/scrambler_bb.h
new file mode 100644
index 0000000000..4ba83daf60
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/scrambler_bb.h
@@ -0,0 +1,60 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2008,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_SCRAMBLER_BB_H
+#define INCLUDED_GR_SCRAMBLER_BB_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/sync_block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief Scramble an input stream using an LFSR.
+     * \ingroup coding_blk
+     *
+     * \details
+     * This block works on the LSB only of the input data stream,
+     * i.e., on an "unpacked binary" stream, and produces the same
+     * format on its output.
+     */
+    class DIGITAL_API scrambler_bb : virtual public sync_block
+    {
+    public:
+      // gr::digital::scrambler_bb::sptr
+      typedef boost::shared_ptr<scrambler_bb> sptr;
+
+      /*!
+       * Make a scramber block.
+       *
+       * \param mask     Polynomial mask for LFSR
+       * \param seed     Initial shift register contents
+       * \param len      Shift register length
+       */
+      static sptr make(int mask, int seed, int len);
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_SCRAMBLER_BB_H */
diff --git a/gr-digital/include/gnuradio/digital/simple_correlator.h b/gr-digital/include/gnuradio/digital/simple_correlator.h
new file mode 100644
index 0000000000..763705c6b9
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/simple_correlator.h
@@ -0,0 +1,49 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_SIMPLE_CORRELATOR_H
+#define INCLUDED_GR_SIMPLE_CORRELATOR_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+  namespace digital {
+    
+    /*!
+     * \brief inverse of simple_framer (more or less)
+     * \ingroup packet_operators_blk
+     * \ingroup deprecated_blk
+     */
+    class DIGITAL_API simple_correlator : virtual public block
+    {
+    public:
+      // gr::digital::simple_correlator::sptr
+      typedef boost::shared_ptr<simple_correlator> sptr;
+
+      static sptr make(int payload_bytesize);
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_SIMPLE_CORRELATOR_H */
diff --git a/gr-digital/include/gnuradio/digital/simple_framer.h b/gr-digital/include/gnuradio/digital/simple_framer.h
new file mode 100644
index 0000000000..f0588eb20e
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/simple_framer.h
@@ -0,0 +1,59 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_SIMPLE_FRAMER_H
+#define INCLUDED_GR_SIMPLE_FRAMER_H
+
+#include <gnuradio/digital/api.h>
+#include <gnuradio/block.h>
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * \brief add sync field, seq number and command field to payload
+     * \ingroup packet_operators_blk
+     * \ingroup deprecated_blk
+     *
+     * \details
+     * Takes in enough samples to create a full output frame. The
+     * frame is prepended with the GRSF_SYNC (defind in
+     * simple_framer_sync.h) and an 8-bit sequence number.
+     */
+    class DIGITAL_API simple_framer : virtual public block
+    {
+    public:
+      // gr::digital::simple_framer::sptr
+      typedef boost::shared_ptr<simple_framer> sptr;
+
+      /*!
+       * Make a simple_framer block.
+       *
+       * \param payload_bytesize The size of the payload in bytes.
+       */
+      static sptr make(int payload_bytesize);
+    };
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_SIMPLE_FRAMER_H */
diff --git a/gr-digital/include/gnuradio/digital/simple_framer_sync.h b/gr-digital/include/gnuradio/digital/simple_framer_sync.h
new file mode 100644
index 0000000000..f6c8f148e6
--- /dev/null
+++ b/gr-digital/include/gnuradio/digital/simple_framer_sync.h
@@ -0,0 +1,56 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004,2005,2012 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_GR_SIMPLE_FRAMER_SYNC_H
+#define INCLUDED_GR_SIMPLE_FRAMER_SYNC_H
+
+namespace gr {
+  namespace digital {
+
+    /*!
+     * Here are a couple of maximum length sequences (m-sequences)
+     * that were generated by the the "mseq" matlab/octave code
+     * downloaded from: <a
+     * href="http://www.mathworks.com/matlabcentral/fileexchange/990">http://www.mathworks.com/matlabcentral/fileexchange/990</a>
+     *
+     * <pre>
+     * 31-bit m-sequence:
+     *	0110100100001010111011000111110
+     *	0x690AEC76 (padded on right with a zero)
+     *
+     * 63-bit m-sequence:
+     *	101011001101110110100100111000101111001010001100001000001111110
+     *      0xACDDA4E2F28C20FC (padded on right with a zero)
+     * </pre>
+     */
+    static const unsigned long long GRSF_SYNC = 0xacdda4e2f28c20fcULL;
+
+    static const int GRSF_BITS_PER_BYTE = 8;
+    static const int GRSF_SYNC_OVERHEAD = sizeof(GRSF_SYNC);
+    static const int GRSF_PAYLOAD_OVERHEAD = 1;		  	// 1 byte seqno
+    static const int GRSF_TAIL_PAD = 1;				// one byte trailing padding
+    static const int GRSF_OVERHEAD = GRSF_SYNC_OVERHEAD + GRSF_PAYLOAD_OVERHEAD + GRSF_TAIL_PAD;
+
+  } /* namespace digital */
+} /* namespace gr */
+
+#endif /* INCLUDED_GR_SIMPLE_FRAMER_SYNC_H */
diff --git a/gr-digital/lib/additive_scrambler_bb_impl.h b/gr-digital/lib/additive_scrambler_bb_impl.h
index 5a4c2f5025..b621637e67 100644
--- a/gr-digital/lib/additive_scrambler_bb_impl.h
+++ b/gr-digital/lib/additive_scrambler_bb_impl.h
@@ -23,8 +23,8 @@
 #ifndef INCLUDED_DIGITAL_ADDITIVE_SCRAMBLER_BB_IMPL_H
 #define INCLUDED_DIGITAL_ADDITIVE_SCRAMBLER_BB_IMPL_H
 
-#include <digital/additive_scrambler_bb.h>
-#include <digital/lfsr.h>
+#include <gnuradio/digital/additive_scrambler_bb.h>
+#include <gnuradio/digital/lfsr.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/binary_slicer_fb_impl.h b/gr-digital/lib/binary_slicer_fb_impl.h
index 7416d9cd52..c3ae16c7d5 100644
--- a/gr-digital/lib/binary_slicer_fb_impl.h
+++ b/gr-digital/lib/binary_slicer_fb_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_BINARY_SLICER_FB_IMPL_H
 #define INCLUDED_DIGITAL_BINARY_SLICER_FB_IMPL_H
 
-#include <digital/binary_slicer_fb.h>
+#include <gnuradio/digital/binary_slicer_fb.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/chunks_to_symbols_XX_impl.h.t b/gr-digital/lib/chunks_to_symbols_XX_impl.h.t
index ea44c71ad4..0e80754d10 100644
--- a/gr-digital/lib/chunks_to_symbols_XX_impl.h.t
+++ b/gr-digital/lib/chunks_to_symbols_XX_impl.h.t
@@ -25,7 +25,7 @@
 #ifndef @GUARD_NAME@
 #define @GUARD_NAME@
 
-#include <digital/@BASE_NAME@.h>
+#include <gnuradio/digital/@BASE_NAME@.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/clock_recovery_mm_cc_impl.h b/gr-digital/lib/clock_recovery_mm_cc_impl.h
index fa62bd127f..9b9aa8655c 100644
--- a/gr-digital/lib/clock_recovery_mm_cc_impl.h
+++ b/gr-digital/lib/clock_recovery_mm_cc_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_CC_IMPL_H
 #define	INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_CC_IMPL_H
 
-#include <digital/clock_recovery_mm_cc.h>
+#include <gnuradio/digital/clock_recovery_mm_cc.h>
 #include <filter/mmse_fir_interpolator_cc.h>
 
 namespace gr {
diff --git a/gr-digital/lib/clock_recovery_mm_ff_impl.h b/gr-digital/lib/clock_recovery_mm_ff_impl.h
index 920a05a496..c16bc580ba 100644
--- a/gr-digital/lib/clock_recovery_mm_ff_impl.h
+++ b/gr-digital/lib/clock_recovery_mm_ff_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_FF_IMPL_H
 #define	INCLUDED_DIGITAL_CLOCK_RECOVERY_MM_FF_IMPL_H
 
-#include <digital/clock_recovery_mm_ff.h>
+#include <gnuradio/digital/clock_recovery_mm_ff.h>
 #include <filter/mmse_fir_interpolator_ff.h>
 
 namespace gr {
diff --git a/gr-digital/lib/cma_equalizer_cc_impl.h b/gr-digital/lib/cma_equalizer_cc_impl.h
index 5c45209dc8..5e9715c7af 100644
--- a/gr-digital/lib/cma_equalizer_cc_impl.h
+++ b/gr-digital/lib/cma_equalizer_cc_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_CMA_EQUALIZER_CC_IMPL_H
 #define	INCLUDED_DIGITAL_CMA_EQUALIZER_CC_IMPL_H
 
-#include <digital/cma_equalizer_cc.h>
+#include <gnuradio/digital/cma_equalizer_cc.h>
 #include <filter/fir_filter.h>
 #include <gnuradio/math.h>
 #include <stdexcept>
diff --git a/gr-digital/lib/constellation.cc b/gr-digital/lib/constellation.cc
index 13d6029a06..2c70bb0944 100644
--- a/gr-digital/lib/constellation.cc
+++ b/gr-digital/lib/constellation.cc
@@ -25,7 +25,7 @@
 #endif
 
 #include <gnuradio/io_signature.h>
-#include <digital/constellation.h>
+#include <gnuradio/digital/constellation.h>
 #include <gnuradio/math.h>
 #include <gnuradio/gr_complex.h>
 #include <math.h>
diff --git a/gr-digital/lib/constellation_decoder_cb_impl.h b/gr-digital/lib/constellation_decoder_cb_impl.h
index 5972760507..286a281171 100644
--- a/gr-digital/lib/constellation_decoder_cb_impl.h
+++ b/gr-digital/lib/constellation_decoder_cb_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_CONSTELLATION_DECODER_CB_IMPL_H
 #define INCLUDED_DIGITAL_CONSTELLATION_DECODER_CB_IMPL_H
 
-#include <digital/constellation_decoder_cb.h>
+#include <gnuradio/digital/constellation_decoder_cb.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/constellation_receiver_cb_impl.h b/gr-digital/lib/constellation_receiver_cb_impl.h
index 47453e67bc..4cd5f72bfa 100644
--- a/gr-digital/lib/constellation_receiver_cb_impl.h
+++ b/gr-digital/lib/constellation_receiver_cb_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_CONSTELLATION_RECEIVER_CB_IMPL_H
 #define	INCLUDED_DIGITAL_CONSTELLATION_RECEIVER_CB_IMPL_H
 
-#include <digital/constellation_receiver_cb.h>
+#include <gnuradio/digital/constellation_receiver_cb.h>
 #include <gnuradio/attributes.h>
 #include <gnuradio/gr_complex.h>
 #include <gnuradio/blocks/control_loop.h>
diff --git a/gr-digital/lib/correlate_access_code_bb_impl.h b/gr-digital/lib/correlate_access_code_bb_impl.h
index ad44b36400..5c46565a1c 100644
--- a/gr-digital/lib/correlate_access_code_bb_impl.h
+++ b/gr-digital/lib/correlate_access_code_bb_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_BB_IMPL_H
 #define INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_BB_IMPL_H
 
-#include <digital/correlate_access_code_bb.h>
+#include <gnuradio/digital/correlate_access_code_bb.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/correlate_access_code_tag_bb_impl.h b/gr-digital/lib/correlate_access_code_tag_bb_impl.h
index 17a016fc9c..df558dd17e 100644
--- a/gr-digital/lib/correlate_access_code_tag_bb_impl.h
+++ b/gr-digital/lib/correlate_access_code_tag_bb_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_TAG_BB_IMPL_H
 #define INCLUDED_DIGITAL_CORRELATE_ACCESS_CODE_TAG_BB_IMPL_H
 
-#include <digital/correlate_access_code_tag_bb.h>
+#include <gnuradio/digital/correlate_access_code_tag_bb.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/costas_loop_cc_impl.h b/gr-digital/lib/costas_loop_cc_impl.h
index ecba2cdd4f..ceb45ce32f 100644
--- a/gr-digital/lib/costas_loop_cc_impl.h
+++ b/gr-digital/lib/costas_loop_cc_impl.h
@@ -24,7 +24,7 @@
 #ifndef INCLUDED_DIGITAL_COSTAS_LOOP_CC_IMPL_H
 #define INCLUDED_DIGITAL_COSTAS_LOOP_CC_IMPL_H
 
-#include <digital/costas_loop_cc.h>
+#include <gnuradio/digital/costas_loop_cc.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/cpmmod_bc_impl.h b/gr-digital/lib/cpmmod_bc_impl.h
index 08c936478c..6fdd8d5d67 100644
--- a/gr-digital/lib/cpmmod_bc_impl.h
+++ b/gr-digital/lib/cpmmod_bc_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_CPMMOD_BC_IMPL_H
 #define INCLUDED_DIGITAL_CPMMOD_BC_IMPL_H
 
-#include <digital/cpmmod_bc.h>
+#include <gnuradio/digital/cpmmod_bc.h>
 #include <gnuradio/blocks/char_to_float.h>
 #include <gnuradio/analog/frequency_modulator_fc.h>
 #include <filter/interp_fir_filter_fff.h>
diff --git a/gr-digital/lib/crc32.cc b/gr-digital/lib/crc32.cc
index b203727114..cdff9f7e7a 100644
--- a/gr-digital/lib/crc32.cc
+++ b/gr-digital/lib/crc32.cc
@@ -28,7 +28,7 @@
 #include <config.h>
 #endif
 
-#include <digital/crc32.h>
+#include <gnuradio/digital/crc32.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/crc32_bb_impl.cc b/gr-digital/lib/crc32_bb_impl.cc
index 5a72d528ab..67dbfd328b 100644
--- a/gr-digital/lib/crc32_bb_impl.cc
+++ b/gr-digital/lib/crc32_bb_impl.cc
@@ -26,7 +26,7 @@
 
 #include <gnuradio/io_signature.h>
 #include "crc32_bb_impl.h"
-#include <digital/crc32.h>
+#include <gnuradio/digital/crc32.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/crc32_bb_impl.h b/gr-digital/lib/crc32_bb_impl.h
index 7b9dbb6351..9d5fddc557 100644
--- a/gr-digital/lib/crc32_bb_impl.h
+++ b/gr-digital/lib/crc32_bb_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_CRC32_BB_IMPL_H
 #define INCLUDED_DIGITAL_CRC32_BB_IMPL_H
 
-#include <digital/crc32_bb.h>
+#include <gnuradio/digital/crc32_bb.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/descrambler_bb_impl.h b/gr-digital/lib/descrambler_bb_impl.h
index 4f07b7c329..aeada30566 100644
--- a/gr-digital/lib/descrambler_bb_impl.h
+++ b/gr-digital/lib/descrambler_bb_impl.h
@@ -23,8 +23,8 @@
 #ifndef INCLUDED_GR_DESCRAMBLER_BB_IMPL_H
 #define INCLUDED_GR_DESCRAMBLER_BB_IMPL_H
 
-#include <digital/descrambler_bb.h>
-#include <digital/lfsr.h>
+#include <gnuradio/digital/descrambler_bb.h>
+#include <gnuradio/digital/lfsr.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/diff_decoder_bb_impl.h b/gr-digital/lib/diff_decoder_bb_impl.h
index 2e06d3cf5f..c827c8e35f 100644
--- a/gr-digital/lib/diff_decoder_bb_impl.h
+++ b/gr-digital/lib/diff_decoder_bb_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_GR_DIFF_DECODER_BB_IMPL_H
 #define INCLUDED_GR_DIFF_DECODER_BB_IMPL_H
 
-#include <digital/diff_decoder_bb.h>
+#include <gnuradio/digital/diff_decoder_bb.h>
 #include <gnuradio/sync_block.h>
 
 namespace gr {
diff --git a/gr-digital/lib/diff_encoder_bb_impl.h b/gr-digital/lib/diff_encoder_bb_impl.h
index e088d79f86..7c761b235b 100644
--- a/gr-digital/lib/diff_encoder_bb_impl.h
+++ b/gr-digital/lib/diff_encoder_bb_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_GR_DIFF_ENCODER_BB_IMPL_H
 #define INCLUDED_GR_DIFF_ENCODER_BB_IMPL_H
 
-#include <digital/diff_encoder_bb.h>
+#include <gnuradio/digital/diff_encoder_bb.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/diff_phasor_cc_impl.h b/gr-digital/lib/diff_phasor_cc_impl.h
index 7e06b35ad4..4b54e11f44 100644
--- a/gr-digital/lib/diff_phasor_cc_impl.h
+++ b/gr-digital/lib/diff_phasor_cc_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_GR_DIFF_PHASOR_CC_IMPL_H
 #define INCLUDED_GR_DIFF_PHASOR_CC_IMPL_H
 
-#include <digital/diff_phasor_cc.h>
+#include <gnuradio/digital/diff_phasor_cc.h>
 #include <gnuradio/sync_block.h>
 
 namespace gr {
diff --git a/gr-digital/lib/fll_band_edge_cc_impl.h b/gr-digital/lib/fll_band_edge_cc_impl.h
index 6237b53cff..3334fda615 100644
--- a/gr-digital/lib/fll_band_edge_cc_impl.h
+++ b/gr-digital/lib/fll_band_edge_cc_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_FLL_BAND_EDGE_CC_IMPL_H
 #define	INCLUDED_DIGITAL_FLL_BAND_EDGE_CC_IMPL_H
 
-#include <digital/fll_band_edge_cc.h>
+#include <gnuradio/digital/fll_band_edge_cc.h>
 #include <gnuradio/blocks/control_loop.h>
 #include <filter/fir_filter.h>
 
diff --git a/gr-digital/lib/framer_sink_1_impl.h b/gr-digital/lib/framer_sink_1_impl.h
index d30c1f316d..e33c93de16 100644
--- a/gr-digital/lib/framer_sink_1_impl.h
+++ b/gr-digital/lib/framer_sink_1_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_GR_FRAMER_SINK_1_IMPL_H
 #define INCLUDED_GR_FRAMER_SINK_1_IMPL_H
 
-#include <digital/framer_sink_1.h>
+#include <gnuradio/digital/framer_sink_1.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/glfsr.cc b/gr-digital/lib/glfsr.cc
index 5c9d22af88..fc2762fd5b 100644
--- a/gr-digital/lib/glfsr.cc
+++ b/gr-digital/lib/glfsr.cc
@@ -20,7 +20,7 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include <digital/glfsr.h>
+#include <gnuradio/digital/glfsr.h>
 #include <stdexcept>
 
 namespace gr {
diff --git a/gr-digital/lib/glfsr_source_b_impl.h b/gr-digital/lib/glfsr_source_b_impl.h
index f52cfa0f20..a063eb7c0a 100644
--- a/gr-digital/lib/glfsr_source_b_impl.h
+++ b/gr-digital/lib/glfsr_source_b_impl.h
@@ -23,8 +23,8 @@
 #ifndef INCLUDED_GR_GLFSR_SOURCE_B_IMPL_H
 #define INCLUDED_GR_GLFSR_SOURCE_B_IMPL_H
 
-#include <digital/glfsr_source_b.h>
-#include <digital/glfsr.h>
+#include <gnuradio/digital/glfsr_source_b.h>
+#include <gnuradio/digital/glfsr.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/glfsr_source_f_impl.h b/gr-digital/lib/glfsr_source_f_impl.h
index 4168016097..194e2ff3b9 100644
--- a/gr-digital/lib/glfsr_source_f_impl.h
+++ b/gr-digital/lib/glfsr_source_f_impl.h
@@ -23,8 +23,8 @@
 #ifndef INCLUDED_GR_GLFSR_SOURCE_F_IMPL_H
 #define INCLUDED_GR_GLFSR_SOURCE_F_IMPL_H
 
-#include <digital/glfsr_source_f.h>
-#include <digital/glfsr.h>
+#include <gnuradio/digital/glfsr_source_f.h>
+#include <gnuradio/digital/glfsr.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/header_payload_demux_impl.h b/gr-digital/lib/header_payload_demux_impl.h
index dc8cc7883a..a11430b175 100644
--- a/gr-digital/lib/header_payload_demux_impl.h
+++ b/gr-digital/lib/header_payload_demux_impl.h
@@ -22,7 +22,7 @@
 #ifndef INCLUDED_DIGITAL_HEADER_PAYLOAD_DEMUX_IMPL_H
 #define INCLUDED_DIGITAL_HEADER_PAYLOAD_DEMUX_IMPL_H
 
-#include <digital/header_payload_demux.h>
+#include <gnuradio/digital/header_payload_demux.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/kurtotic_equalizer_cc_impl.h b/gr-digital/lib/kurtotic_equalizer_cc_impl.h
index 41178c3eb8..3e2a0c9aef 100644
--- a/gr-digital/lib/kurtotic_equalizer_cc_impl.h
+++ b/gr-digital/lib/kurtotic_equalizer_cc_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_KURTOTIC_EQUALIZER_CC_IMPL_H
 #define	INCLUDED_DIGITAL_KURTOTIC_EQUALIZER_CC_IMPL_H
 
-#include <digital/kurtotic_equalizer_cc.h>
+#include <gnuradio/digital/kurtotic_equalizer_cc.h>
 #include <filter/fir_filter.h>
 #include <gnuradio/math.h>
 #include <stdexcept>
diff --git a/gr-digital/lib/lms_dd_equalizer_cc_impl.h b/gr-digital/lib/lms_dd_equalizer_cc_impl.h
index ca6ba4d84c..04e541d462 100644
--- a/gr-digital/lib/lms_dd_equalizer_cc_impl.h
+++ b/gr-digital/lib/lms_dd_equalizer_cc_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_LMS_DD_EQUALIZER_CC_IMPL_H
 #define INCLUDED_DIGITAL_LMS_DD_EQUALIZER_CC_IMPL_H
 
-#include <digital/lms_dd_equalizer_cc.h>
+#include <gnuradio/digital/lms_dd_equalizer_cc.h>
 #include <filter/fir_filter.h>
 #include <stdexcept>
 
diff --git a/gr-digital/lib/map_bb_impl.h b/gr-digital/lib/map_bb_impl.h
index 356bf8bde6..18a82d18e9 100644
--- a/gr-digital/lib/map_bb_impl.h
+++ b/gr-digital/lib/map_bb_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_GR_MAP_BB_IMPL_H
 #define INCLUDED_GR_MAP_BB_IMPL_H
 
-#include <digital/map_bb.h>
+#include <gnuradio/digital/map_bb.h>
 #include <gnuradio/thread/thread.h>
 
 namespace gr {
diff --git a/gr-digital/lib/mpsk_receiver_cc_impl.h b/gr-digital/lib/mpsk_receiver_cc_impl.h
index c8807c2a4e..e9914993f3 100644
--- a/gr-digital/lib/mpsk_receiver_cc_impl.h
+++ b/gr-digital/lib/mpsk_receiver_cc_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_MPSK_RECEIVER_CC_IMPL_H
 #define	INCLUDED_DIGITAL_MPSK_RECEIVER_CC_IMPL_H
 
-#include <digital/mpsk_receiver_cc.h>
+#include <gnuradio/digital/mpsk_receiver_cc.h>
 #include <gnuradio/attributes.h>
 #include <gnuradio/blocks/control_loop.h>
 #include <gnuradio/gr_complex.h>
diff --git a/gr-digital/lib/mpsk_snr_est.cc b/gr-digital/lib/mpsk_snr_est.cc
index 9b52334806..6edb0274f5 100644
--- a/gr-digital/lib/mpsk_snr_est.cc
+++ b/gr-digital/lib/mpsk_snr_est.cc
@@ -24,7 +24,7 @@
 #include <config.h>
 #endif
 
-#include <digital/mpsk_snr_est.h>
+#include <gnuradio/digital/mpsk_snr_est.h>
 #include <stdexcept>
 #include <cstdio>
 
diff --git a/gr-digital/lib/mpsk_snr_est_cc_impl.h b/gr-digital/lib/mpsk_snr_est_cc_impl.h
index 49bf078457..36a6daa9d0 100644
--- a/gr-digital/lib/mpsk_snr_est_cc_impl.h
+++ b/gr-digital/lib/mpsk_snr_est_cc_impl.h
@@ -23,8 +23,8 @@
 #ifndef INCLUDED_DIGITAL_MPSK_SNR_EST_CC_IMPL_H
 #define INCLUDED_DIGITAL_MPSK_SNR_EST_CC_IMPL_H
 
-#include <digital/api.h>
-#include <digital/mpsk_snr_est_cc.h>
+#include <gnuradio/digital/api.h>
+#include <gnuradio/digital/mpsk_snr_est_cc.h>
 #include <gnuradio/sync_block.h>
 
 namespace gr {
diff --git a/gr-digital/lib/ofdm_carrier_allocator_cvc_impl.h b/gr-digital/lib/ofdm_carrier_allocator_cvc_impl.h
index 6e478b3389..8599355ebb 100644
--- a/gr-digital/lib/ofdm_carrier_allocator_cvc_impl.h
+++ b/gr-digital/lib/ofdm_carrier_allocator_cvc_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_OFDM_CARRIER_ALLOCATOR_CVC_IMPL_H
 #define INCLUDED_DIGITAL_OFDM_CARRIER_ALLOCATOR_CVC_IMPL_H
 
-#include <digital/ofdm_carrier_allocator_cvc.h>
+#include <gnuradio/digital/ofdm_carrier_allocator_cvc.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/ofdm_chanest_vcvc_impl.h b/gr-digital/lib/ofdm_chanest_vcvc_impl.h
index def8734e64..9a21fbdf87 100644
--- a/gr-digital/lib/ofdm_chanest_vcvc_impl.h
+++ b/gr-digital/lib/ofdm_chanest_vcvc_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_OFDM_CHANEST_VCVC_IMPL_H
 #define INCLUDED_DIGITAL_OFDM_CHANEST_VCVC_IMPL_H
 
-#include <digital/ofdm_chanest_vcvc.h>
+#include <gnuradio/digital/ofdm_chanest_vcvc.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/ofdm_cyclic_prefixer_impl.h b/gr-digital/lib/ofdm_cyclic_prefixer_impl.h
index 5a5766f131..936fe995f4 100644
--- a/gr-digital/lib/ofdm_cyclic_prefixer_impl.h
+++ b/gr-digital/lib/ofdm_cyclic_prefixer_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_OFDM_CYCLIC_PREFIXER_IMPL_H
 #define INCLUDED_DIGITAL_OFDM_CYCLIC_PREFIXER_IMPL_H
 
-#include <digital/ofdm_cyclic_prefixer.h>
+#include <gnuradio/digital/ofdm_cyclic_prefixer.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/ofdm_equalizer_base.cc b/gr-digital/lib/ofdm_equalizer_base.cc
index 5209b09c29..7e69b07634 100644
--- a/gr-digital/lib/ofdm_equalizer_base.cc
+++ b/gr-digital/lib/ofdm_equalizer_base.cc
@@ -23,7 +23,7 @@
 #include "config.h"
 #endif
 
-#include <digital/ofdm_equalizer_base.h>
+#include <gnuradio/digital/ofdm_equalizer_base.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/ofdm_equalizer_simpledfe.cc b/gr-digital/lib/ofdm_equalizer_simpledfe.cc
index a822c6cc60..8f518aa454 100644
--- a/gr-digital/lib/ofdm_equalizer_simpledfe.cc
+++ b/gr-digital/lib/ofdm_equalizer_simpledfe.cc
@@ -23,7 +23,7 @@
 #include "config.h"
 #endif
 
-#include <digital/ofdm_equalizer_simpledfe.h>
+#include <gnuradio/digital/ofdm_equalizer_simpledfe.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/ofdm_equalizer_static.cc b/gr-digital/lib/ofdm_equalizer_static.cc
index 72c7d14064..ed24f1fe26 100644
--- a/gr-digital/lib/ofdm_equalizer_static.cc
+++ b/gr-digital/lib/ofdm_equalizer_static.cc
@@ -23,7 +23,7 @@
 #include "config.h"
 #endif
 
-#include <digital/ofdm_equalizer_static.h>
+#include <gnuradio/digital/ofdm_equalizer_static.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/ofdm_frame_acquisition_impl.h b/gr-digital/lib/ofdm_frame_acquisition_impl.h
index 867d86736f..a28fc7177d 100644
--- a/gr-digital/lib/ofdm_frame_acquisition_impl.h
+++ b/gr-digital/lib/ofdm_frame_acquisition_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_OFDM_FRAME_ACQUISITION_IMPL_H
 #define INCLUDED_DIGITAL_OFDM_FRAME_ACQUISITION_IMPL_H
 
-#include <digital/ofdm_frame_acquisition.h>
+#include <gnuradio/digital/ofdm_frame_acquisition.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/ofdm_frame_equalizer_vcvc_impl.h b/gr-digital/lib/ofdm_frame_equalizer_vcvc_impl.h
index c219052148..c5f039d1a6 100644
--- a/gr-digital/lib/ofdm_frame_equalizer_vcvc_impl.h
+++ b/gr-digital/lib/ofdm_frame_equalizer_vcvc_impl.h
@@ -22,7 +22,7 @@
 #ifndef INCLUDED_DIGITAL_OFDM_FRAME_EQUALIZER_VCVC_IMPL_H
 #define INCLUDED_DIGITAL_OFDM_FRAME_EQUALIZER_VCVC_IMPL_H
 
-#include <digital/ofdm_frame_equalizer_vcvc.h>
+#include <gnuradio/digital/ofdm_frame_equalizer_vcvc.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/ofdm_frame_sink_impl.h b/gr-digital/lib/ofdm_frame_sink_impl.h
index dcf4a06163..4f16a29701 100644
--- a/gr-digital/lib/ofdm_frame_sink_impl.h
+++ b/gr-digital/lib/ofdm_frame_sink_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_OFDM_FRAME_SINK_IMPL_H
 #define INCLUDED_DIGITAL_OFDM_FRAME_SINK_IMPL_H
 
-#include <digital/ofdm_frame_sink.h>
+#include <gnuradio/digital/ofdm_frame_sink.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/ofdm_insert_preamble_impl.h b/gr-digital/lib/ofdm_insert_preamble_impl.h
index cd47810daf..f926d1a16b 100644
--- a/gr-digital/lib/ofdm_insert_preamble_impl.h
+++ b/gr-digital/lib/ofdm_insert_preamble_impl.h
@@ -22,7 +22,7 @@
 #ifndef INCLUDED_DIGITAL_OFDM_INSERT_PREAMBLE_IMPL_H
 #define INCLUDED_DIGITAL_OFDM_INSERT_PREAMBLE_IMPL_H
 
-#include <digital/ofdm_insert_preamble.h>
+#include <gnuradio/digital/ofdm_insert_preamble.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/ofdm_mapper_bcv_impl.h b/gr-digital/lib/ofdm_mapper_bcv_impl.h
index 2754b0a04b..fc2daf5bd8 100644
--- a/gr-digital/lib/ofdm_mapper_bcv_impl.h
+++ b/gr-digital/lib/ofdm_mapper_bcv_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_OFDM_MAPPER_BCV_IMPL_H
 #define INCLUDED_DIGITAL_OFDM_MAPPER_BCV_IMPL_H
 
-#include <digital/ofdm_mapper_bcv.h>
+#include <gnuradio/digital/ofdm_mapper_bcv.h>
 #include <gnuradio/message.h>
 #include <vector>
 
diff --git a/gr-digital/lib/ofdm_sampler_impl.h b/gr-digital/lib/ofdm_sampler_impl.h
index a562bc54b3..b1f57cb330 100644
--- a/gr-digital/lib/ofdm_sampler_impl.h
+++ b/gr-digital/lib/ofdm_sampler_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_OFDM_SAMPLER_IMPL_H
 #define INCLUDED_DIGITAL_OFDM_SAMPLER_IMPL_H
 
-#include <digital/ofdm_sampler.h>
+#include <gnuradio/digital/ofdm_sampler.h>
 #include <gnuradio/sync_block.h>
 
 namespace gr {
diff --git a/gr-digital/lib/ofdm_serializer_vcc_impl.h b/gr-digital/lib/ofdm_serializer_vcc_impl.h
index 4f750eac71..0ec0ec3505 100644
--- a/gr-digital/lib/ofdm_serializer_vcc_impl.h
+++ b/gr-digital/lib/ofdm_serializer_vcc_impl.h
@@ -22,7 +22,7 @@
 #ifndef INCLUDED_DIGITAL_OFDM_SERIALIZER_VCC_IMPL_H
 #define INCLUDED_DIGITAL_OFDM_SERIALIZER_VCC_IMPL_H
 
-#include <digital/ofdm_serializer_vcc.h>
+#include <gnuradio/digital/ofdm_serializer_vcc.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/ofdm_sync_sc_cfb_impl.h b/gr-digital/lib/ofdm_sync_sc_cfb_impl.h
index 207ea41ae1..b217002038 100644
--- a/gr-digital/lib/ofdm_sync_sc_cfb_impl.h
+++ b/gr-digital/lib/ofdm_sync_sc_cfb_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_OFDM_SYNC_SC_CFB_IMPL_H
 #define INCLUDED_DIGITAL_OFDM_SYNC_SC_CFB_IMPL_H
 
-#include <digital/ofdm_sync_sc_cfb.h>
+#include <gnuradio/digital/ofdm_sync_sc_cfb.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/packet_header_default.cc b/gr-digital/lib/packet_header_default.cc
index 8299e5625e..eb639260c6 100644
--- a/gr-digital/lib/packet_header_default.cc
+++ b/gr-digital/lib/packet_header_default.cc
@@ -24,7 +24,7 @@
 #endif
 
 #include <string.h>
-#include <digital/packet_header_default.h>
+#include <gnuradio/digital/packet_header_default.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/packet_header_ofdm.cc b/gr-digital/lib/packet_header_ofdm.cc
index bf0f642932..03a9581a6c 100644
--- a/gr-digital/lib/packet_header_ofdm.cc
+++ b/gr-digital/lib/packet_header_ofdm.cc
@@ -23,7 +23,7 @@
 #include "config.h"
 #endif
 
-#include <digital/packet_header_ofdm.h>
+#include <gnuradio/digital/packet_header_ofdm.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/packet_headergenerator_bb_impl.h b/gr-digital/lib/packet_headergenerator_bb_impl.h
index aaad42aebc..3cca23fc5e 100644
--- a/gr-digital/lib/packet_headergenerator_bb_impl.h
+++ b/gr-digital/lib/packet_headergenerator_bb_impl.h
@@ -22,7 +22,7 @@
 #ifndef INCLUDED_DIGITAL_PACKET_HEADERGENERATOR_BB_IMPL_H
 #define INCLUDED_DIGITAL_PACKET_HEADERGENERATOR_BB_IMPL_H
 
-#include <digital/packet_headergenerator_bb.h>
+#include <gnuradio/digital/packet_headergenerator_bb.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/packet_headerparser_b_impl.h b/gr-digital/lib/packet_headerparser_b_impl.h
index a7ded1143f..41641eda4d 100644
--- a/gr-digital/lib/packet_headerparser_b_impl.h
+++ b/gr-digital/lib/packet_headerparser_b_impl.h
@@ -22,7 +22,7 @@
 #ifndef INCLUDED_DIGITAL_PACKET_HEADERPARSER_B_IMPL_H
 #define INCLUDED_DIGITAL_PACKET_HEADERPARSER_B_IMPL_H
 
-#include <digital/packet_headerparser_b.h>
+#include <gnuradio/digital/packet_headerparser_b.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/packet_sink_impl.h b/gr-digital/lib/packet_sink_impl.h
index a6c80629c6..2a1da67b7f 100644
--- a/gr-digital/lib/packet_sink_impl.h
+++ b/gr-digital/lib/packet_sink_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_GR_PACKET_SINK_IMPL_H
 #define INCLUDED_GR_PACKET_SINK_IMPL_H
 
-#include <digital/packet_sink.h>
+#include <gnuradio/digital/packet_sink.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/pfb_clock_sync_ccf_impl.h b/gr-digital/lib/pfb_clock_sync_ccf_impl.h
index c7fdc9183e..7020dd0bd5 100644
--- a/gr-digital/lib/pfb_clock_sync_ccf_impl.h
+++ b/gr-digital/lib/pfb_clock_sync_ccf_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_PFB_CLOCK_SYNC_CCF_IMPL_H
 #define	INCLUDED_DIGITAL_PFB_CLOCK_SYNC_CCF_IMPL_H
 
-#include <digital/pfb_clock_sync_ccf.h>
+#include <gnuradio/digital/pfb_clock_sync_ccf.h>
 
 using namespace gr::filter;
 
diff --git a/gr-digital/lib/pfb_clock_sync_fff_impl.h b/gr-digital/lib/pfb_clock_sync_fff_impl.h
index 2ade1e646f..7f78b4e60c 100644
--- a/gr-digital/lib/pfb_clock_sync_fff_impl.h
+++ b/gr-digital/lib/pfb_clock_sync_fff_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_PFB_CLOCK_SYNC_FFF_IMPL_H
 #define	INCLUDED_DIGITAL_PFB_CLOCK_SYNC_FFF_IMPL_H
 
-#include <digital/pfb_clock_sync_fff.h>
+#include <gnuradio/digital/pfb_clock_sync_fff.h>
 
 using namespace gr::filter;
 
diff --git a/gr-digital/lib/pn_correlator_cc_impl.h b/gr-digital/lib/pn_correlator_cc_impl.h
index bea9a30505..a98721eb70 100644
--- a/gr-digital/lib/pn_correlator_cc_impl.h
+++ b/gr-digital/lib/pn_correlator_cc_impl.h
@@ -23,8 +23,8 @@
 #ifndef INCLUDED_GR_PN_CORRELATOR_CC_IMPL_H
 #define INCLUDED_GR_PN_CORRELATOR_CC_IMPL_H
 
-#include <digital/pn_correlator_cc.h>
-#include <digital/glfsr.h>
+#include <gnuradio/digital/pn_correlator_cc.h>
+#include <gnuradio/digital/glfsr.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/probe_density_b_impl.h b/gr-digital/lib/probe_density_b_impl.h
index e792403dc5..a7a6086dd1 100644
--- a/gr-digital/lib/probe_density_b_impl.h
+++ b/gr-digital/lib/probe_density_b_impl.h
@@ -21,7 +21,7 @@
 #ifndef INCLUDED_GR_PROBE_DENSITY_B_IMPL_H
 #define INCLUDED_GR_PROBE_DENSITY_B_IMPL_H
 
-#include <digital/probe_density_b.h>
+#include <gnuradio/digital/probe_density_b.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/probe_mpsk_snr_est_c_impl.h b/gr-digital/lib/probe_mpsk_snr_est_c_impl.h
index 90da85d21b..0663595928 100644
--- a/gr-digital/lib/probe_mpsk_snr_est_c_impl.h
+++ b/gr-digital/lib/probe_mpsk_snr_est_c_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_DIGITAL_PROBE_MPSK_SNR_EST_C_IMPL_H
 #define INCLUDED_DIGITAL_PROBE_MPSK_SNR_EST_C_IMPL_H
 
-#include <digital/probe_mpsk_snr_est_c.h>
+#include <gnuradio/digital/probe_mpsk_snr_est_c.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/scrambler_bb_impl.h b/gr-digital/lib/scrambler_bb_impl.h
index 31a0e294ba..7d09e9709c 100644
--- a/gr-digital/lib/scrambler_bb_impl.h
+++ b/gr-digital/lib/scrambler_bb_impl.h
@@ -23,9 +23,9 @@
 #ifndef INCLUDED_GR_SCRAMBLER_BB_IMPL_H
 #define INCLUDED_GR_SCRAMBLER_BB_IMPL_H
 
-#include <digital/scrambler_bb.h>
+#include <gnuradio/digital/scrambler_bb.h>
 #include <gnuradio/sync_block.h>
-#include <digital/lfsr.h>
+#include <gnuradio/digital/lfsr.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/lib/simple_correlator_impl.cc b/gr-digital/lib/simple_correlator_impl.cc
index 37ee137525..6524e906a4 100644
--- a/gr-digital/lib/simple_correlator_impl.cc
+++ b/gr-digital/lib/simple_correlator_impl.cc
@@ -25,7 +25,7 @@
 #endif
 
 #include "simple_correlator_impl.h"
-#include <digital/simple_framer_sync.h>
+#include <gnuradio/digital/simple_framer_sync.h>
 #include <gnuradio/io_signature.h>
 #include <gnuradio/blocks/count_bits.h>
 #include <assert.h>
diff --git a/gr-digital/lib/simple_correlator_impl.h b/gr-digital/lib/simple_correlator_impl.h
index fe324131fd..09868682e7 100644
--- a/gr-digital/lib/simple_correlator_impl.h
+++ b/gr-digital/lib/simple_correlator_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_GR_SIMPLE_CORRELATOR_IMPL_H
 #define INCLUDED_GR_SIMPLE_CORRELATOR_IMPL_H
 
-#include <digital/simple_correlator.h>
+#include <gnuradio/digital/simple_correlator.h>
 
 //#define	DEBUG_SIMPLE_CORRELATOR
 
diff --git a/gr-digital/lib/simple_framer_impl.cc b/gr-digital/lib/simple_framer_impl.cc
index 64e70d5cfb..0f8a068276 100644
--- a/gr-digital/lib/simple_framer_impl.cc
+++ b/gr-digital/lib/simple_framer_impl.cc
@@ -25,7 +25,7 @@
 #endif
 
 #include "simple_framer_impl.h"
-#include <digital/simple_framer_sync.h>
+#include <gnuradio/digital/simple_framer_sync.h>
 #include <gnuradio/io_signature.h>
 #include <assert.h>
 #include <string>
diff --git a/gr-digital/lib/simple_framer_impl.h b/gr-digital/lib/simple_framer_impl.h
index fe967eb26a..25dda4429e 100644
--- a/gr-digital/lib/simple_framer_impl.h
+++ b/gr-digital/lib/simple_framer_impl.h
@@ -23,7 +23,7 @@
 #ifndef INCLUDED_GR_SIMPLE_FRAMER_IMPL_H
 #define INCLUDED_GR_SIMPLE_FRAMER_IMPL_H
 
-#include <digital/simple_framer.h>
+#include <gnuradio/digital/simple_framer.h>
 
 namespace gr {
   namespace digital {
diff --git a/gr-digital/swig/CMakeLists.txt b/gr-digital/swig/CMakeLists.txt
index a77627ca20..15922a34e4 100644
--- a/gr-digital/swig/CMakeLists.txt
+++ b/gr-digital/swig/CMakeLists.txt
@@ -41,7 +41,7 @@ endif(ENABLE_GR_CTRLPORT)
 # Setup swig docs to depend on includes and pull in from build directory
 set(GR_SWIG_TARGET_DEPS digital_generated_includes)
 set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/digital_swig_doc.i)
-set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../include/digital)
+set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../include/gnuradio/digital)
 set(GR_SWIG_DOCS_TARGET_DEPS runtime_swig_swig_doc)
 
 set(GR_SWIG_LIBRARIES gnuradio-digital
diff --git a/gr-digital/swig/digital_swig.i b/gr-digital/swig/digital_swig.i
index bc5481a2a1..253bc6f3b8 100644
--- a/gr-digital/swig/digital_swig.i
+++ b/gr-digital/swig/digital_swig.i
@@ -37,139 +37,139 @@
 %include <gnuradio/blocks/control_loop.h>
 
 %{
-#include "digital/additive_scrambler_bb.h"
-#include "digital/binary_slicer_fb.h"
-#include "digital/chunks_to_symbols_bc.h"
-#include "digital/chunks_to_symbols_bf.h"
-#include "digital/chunks_to_symbols_ic.h"
-#include "digital/chunks_to_symbols_if.h"
-#include "digital/chunks_to_symbols_sc.h"
-#include "digital/chunks_to_symbols_sf.h"
-#include "digital/clock_recovery_mm_cc.h"
-#include "digital/clock_recovery_mm_ff.h"
-#include "digital/cma_equalizer_cc.h"
-#include "digital/constellation.h"
-#include "digital/constellation_decoder_cb.h"
-#include "digital/constellation_receiver_cb.h"
-#include "digital/correlate_access_code_bb.h"
-#include "digital/correlate_access_code_tag_bb.h"
-#include "digital/costas_loop_cc.h"
-#include "digital/cpmmod_bc.h"
-#include "digital/crc32.h"
-#include "digital/crc32_bb.h"
-#include "digital/descrambler_bb.h"
-#include "digital/diff_decoder_bb.h"
-#include "digital/diff_encoder_bb.h"
-#include "digital/diff_phasor_cc.h"
-#include "digital/fll_band_edge_cc.h"
-#include "digital/framer_sink_1.h"
-#include "digital/glfsr_source_b.h"
-#include "digital/glfsr_source_f.h"
-#include "digital/header_payload_demux.h"
-#include "digital/kurtotic_equalizer_cc.h"
-#include "digital/lfsr.h"
-#include "digital/lms_dd_equalizer_cc.h"
-#include "digital/map_bb.h"
-#include "digital/metric_type.h"
-#include "digital/mpsk_receiver_cc.h"
-#include "digital/mpsk_snr_est.h"
-#include "digital/mpsk_snr_est_cc.h"
-#include "digital/ofdm_carrier_allocator_cvc.h"
-#include "digital/ofdm_chanest_vcvc.h"
-#include "digital/ofdm_cyclic_prefixer.h"
-#include "digital/ofdm_equalizer_base.h"
-#include "digital/ofdm_equalizer_simpledfe.h"
-#include "digital/ofdm_equalizer_static.h"
-#include "digital/ofdm_frame_acquisition.h"
-#include "digital/ofdm_frame_equalizer_vcvc.h"
-#include "digital/ofdm_frame_sink.h"
-#include "digital/ofdm_insert_preamble.h"
-#include "digital/ofdm_mapper_bcv.h"
-#include "digital/ofdm_sampler.h"
-#include "digital/ofdm_serializer_vcc.h"
-#include "digital/ofdm_sync_sc_cfb.h"
-#include "digital/packet_header_default.h"
-#include "digital/packet_header_ofdm.h"
-#include "digital/packet_headergenerator_bb.h"
-#include "digital/packet_headerparser_b.h"
-#include "digital/packet_sink.h"
-#include "digital/pfb_clock_sync_ccf.h"
-#include "digital/pfb_clock_sync_fff.h"
-#include "digital/pn_correlator_cc.h"
-#include "digital/probe_density_b.h"
-#include "digital/probe_mpsk_snr_est_c.h"
-#include "digital/scrambler_bb.h"
-#include "digital/simple_correlator.h"
-#include "digital/simple_framer.h"
-#include "digital/ofdm_serializer_vcc.h"
-#include "digital/packet_headerparser_b.h"
-#include "digital/header_payload_demux.h"
+#include "gnuradio/digital/additive_scrambler_bb.h"
+#include "gnuradio/digital/binary_slicer_fb.h"
+#include "gnuradio/digital/chunks_to_symbols_bc.h"
+#include "gnuradio/digital/chunks_to_symbols_bf.h"
+#include "gnuradio/digital/chunks_to_symbols_ic.h"
+#include "gnuradio/digital/chunks_to_symbols_if.h"
+#include "gnuradio/digital/chunks_to_symbols_sc.h"
+#include "gnuradio/digital/chunks_to_symbols_sf.h"
+#include "gnuradio/digital/clock_recovery_mm_cc.h"
+#include "gnuradio/digital/clock_recovery_mm_ff.h"
+#include "gnuradio/digital/cma_equalizer_cc.h"
+#include "gnuradio/digital/constellation.h"
+#include "gnuradio/digital/constellation_decoder_cb.h"
+#include "gnuradio/digital/constellation_receiver_cb.h"
+#include "gnuradio/digital/correlate_access_code_bb.h"
+#include "gnuradio/digital/correlate_access_code_tag_bb.h"
+#include "gnuradio/digital/costas_loop_cc.h"
+#include "gnuradio/digital/cpmmod_bc.h"
+#include "gnuradio/digital/crc32.h"
+#include "gnuradio/digital/crc32_bb.h"
+#include "gnuradio/digital/descrambler_bb.h"
+#include "gnuradio/digital/diff_decoder_bb.h"
+#include "gnuradio/digital/diff_encoder_bb.h"
+#include "gnuradio/digital/diff_phasor_cc.h"
+#include "gnuradio/digital/fll_band_edge_cc.h"
+#include "gnuradio/digital/framer_sink_1.h"
+#include "gnuradio/digital/glfsr_source_b.h"
+#include "gnuradio/digital/glfsr_source_f.h"
+#include "gnuradio/digital/header_payload_demux.h"
+#include "gnuradio/digital/kurtotic_equalizer_cc.h"
+#include "gnuradio/digital/lfsr.h"
+#include "gnuradio/digital/lms_dd_equalizer_cc.h"
+#include "gnuradio/digital/map_bb.h"
+#include "gnuradio/digital/metric_type.h"
+#include "gnuradio/digital/mpsk_receiver_cc.h"
+#include "gnuradio/digital/mpsk_snr_est.h"
+#include "gnuradio/digital/mpsk_snr_est_cc.h"
+#include "gnuradio/digital/ofdm_carrier_allocator_cvc.h"
+#include "gnuradio/digital/ofdm_chanest_vcvc.h"
+#include "gnuradio/digital/ofdm_cyclic_prefixer.h"
+#include "gnuradio/digital/ofdm_equalizer_base.h"
+#include "gnuradio/digital/ofdm_equalizer_simpledfe.h"
+#include "gnuradio/digital/ofdm_equalizer_static.h"
+#include "gnuradio/digital/ofdm_frame_acquisition.h"
+#include "gnuradio/digital/ofdm_frame_equalizer_vcvc.h"
+#include "gnuradio/digital/ofdm_frame_sink.h"
+#include "gnuradio/digital/ofdm_insert_preamble.h"
+#include "gnuradio/digital/ofdm_mapper_bcv.h"
+#include "gnuradio/digital/ofdm_sampler.h"
+#include "gnuradio/digital/ofdm_serializer_vcc.h"
+#include "gnuradio/digital/ofdm_sync_sc_cfb.h"
+#include "gnuradio/digital/packet_header_default.h"
+#include "gnuradio/digital/packet_header_ofdm.h"
+#include "gnuradio/digital/packet_headergenerator_bb.h"
+#include "gnuradio/digital/packet_headerparser_b.h"
+#include "gnuradio/digital/packet_sink.h"
+#include "gnuradio/digital/pfb_clock_sync_ccf.h"
+#include "gnuradio/digital/pfb_clock_sync_fff.h"
+#include "gnuradio/digital/pn_correlator_cc.h"
+#include "gnuradio/digital/probe_density_b.h"
+#include "gnuradio/digital/probe_mpsk_snr_est_c.h"
+#include "gnuradio/digital/scrambler_bb.h"
+#include "gnuradio/digital/simple_correlator.h"
+#include "gnuradio/digital/simple_framer.h"
+#include "gnuradio/digital/ofdm_serializer_vcc.h"
+#include "gnuradio/digital/packet_headerparser_b.h"
+#include "gnuradio/digital/header_payload_demux.h"
 %}
 
-%include "digital/additive_scrambler_bb.h"
-%include "digital/binary_slicer_fb.h"
-%include "digital/chunks_to_symbols_bc.h"
-%include "digital/chunks_to_symbols_bf.h"
-%include "digital/chunks_to_symbols_ic.h"
-%include "digital/chunks_to_symbols_if.h"
-%include "digital/chunks_to_symbols_sc.h"
-%include "digital/chunks_to_symbols_sf.h"
-%include "digital/clock_recovery_mm_cc.h"
-%include "digital/clock_recovery_mm_ff.h"
-%include "digital/cma_equalizer_cc.h"
-%include "digital/constellation.h"
-%include "digital/constellation_decoder_cb.h"
-%include "digital/constellation_receiver_cb.h"
-%include "digital/correlate_access_code_bb.h"
-%include "digital/correlate_access_code_tag_bb.h"
-%include "digital/costas_loop_cc.h"
-%include "digital/cpmmod_bc.h"
-%include "digital/crc32.h"
-%include "digital/crc32_bb.h"
-%include "digital/descrambler_bb.h"
-%include "digital/diff_decoder_bb.h"
-%include "digital/diff_encoder_bb.h"
-%include "digital/diff_phasor_cc.h"
-%include "digital/fll_band_edge_cc.h"
-%include "digital/framer_sink_1.h"
-%include "digital/glfsr_source_b.h"
-%include "digital/glfsr_source_f.h"
-%include "digital/header_payload_demux.h"
-%include "digital/kurtotic_equalizer_cc.h"
-%include "digital/lfsr.h"
-%include "digital/lms_dd_equalizer_cc.h"
-%include "digital/map_bb.h"
-%include "digital/metric_type.h"
-%include "digital/mpsk_receiver_cc.h"
-%include "digital/mpsk_snr_est.h"
-%include "digital/mpsk_snr_est_cc.h"
-%include "digital/ofdm_carrier_allocator_cvc.h"
-%include "digital/ofdm_chanest_vcvc.h"
-%include "digital/ofdm_cyclic_prefixer.h"
-%include "digital/ofdm_equalizer_base.h"
-%include "digital/ofdm_equalizer_simpledfe.h"
-%include "digital/ofdm_equalizer_static.h"
-%include "digital/ofdm_frame_acquisition.h"
-%include "digital/ofdm_frame_equalizer_vcvc.h"
-%include "digital/ofdm_frame_sink.h"
-%include "digital/ofdm_insert_preamble.h"
-%include "digital/ofdm_mapper_bcv.h"
-%include "digital/ofdm_sampler.h"
-%include "digital/ofdm_serializer_vcc.h"
-%include "digital/ofdm_sync_sc_cfb.h"
-%include "digital/packet_header_default.h"
-%include "digital/packet_header_ofdm.h"
-%include "digital/packet_headergenerator_bb.h"
-%include "digital/packet_headerparser_b.h"
-%include "digital/packet_sink.h"
-%include "digital/pfb_clock_sync_ccf.h"
-%include "digital/pfb_clock_sync_fff.h"
-%include "digital/pn_correlator_cc.h"
-%include "digital/probe_density_b.h"
-%include "digital/probe_mpsk_snr_est_c.h"
-%include "digital/scrambler_bb.h"
-%include "digital/simple_correlator.h"
-%include "digital/simple_framer.h"
+%include "gnuradio/digital/additive_scrambler_bb.h"
+%include "gnuradio/digital/binary_slicer_fb.h"
+%include "gnuradio/digital/chunks_to_symbols_bc.h"
+%include "gnuradio/digital/chunks_to_symbols_bf.h"
+%include "gnuradio/digital/chunks_to_symbols_ic.h"
+%include "gnuradio/digital/chunks_to_symbols_if.h"
+%include "gnuradio/digital/chunks_to_symbols_sc.h"
+%include "gnuradio/digital/chunks_to_symbols_sf.h"
+%include "gnuradio/digital/clock_recovery_mm_cc.h"
+%include "gnuradio/digital/clock_recovery_mm_ff.h"
+%include "gnuradio/digital/cma_equalizer_cc.h"
+%include "gnuradio/digital/constellation.h"
+%include "gnuradio/digital/constellation_decoder_cb.h"
+%include "gnuradio/digital/constellation_receiver_cb.h"
+%include "gnuradio/digital/correlate_access_code_bb.h"
+%include "gnuradio/digital/correlate_access_code_tag_bb.h"
+%include "gnuradio/digital/costas_loop_cc.h"
+%include "gnuradio/digital/cpmmod_bc.h"
+%include "gnuradio/digital/crc32.h"
+%include "gnuradio/digital/crc32_bb.h"
+%include "gnuradio/digital/descrambler_bb.h"
+%include "gnuradio/digital/diff_decoder_bb.h"
+%include "gnuradio/digital/diff_encoder_bb.h"
+%include "gnuradio/digital/diff_phasor_cc.h"
+%include "gnuradio/digital/fll_band_edge_cc.h"
+%include "gnuradio/digital/framer_sink_1.h"
+%include "gnuradio/digital/glfsr_source_b.h"
+%include "gnuradio/digital/glfsr_source_f.h"
+%include "gnuradio/digital/header_payload_demux.h"
+%include "gnuradio/digital/kurtotic_equalizer_cc.h"
+%include "gnuradio/digital/lfsr.h"
+%include "gnuradio/digital/lms_dd_equalizer_cc.h"
+%include "gnuradio/digital/map_bb.h"
+%include "gnuradio/digital/metric_type.h"
+%include "gnuradio/digital/mpsk_receiver_cc.h"
+%include "gnuradio/digital/mpsk_snr_est.h"
+%include "gnuradio/digital/mpsk_snr_est_cc.h"
+%include "gnuradio/digital/ofdm_carrier_allocator_cvc.h"
+%include "gnuradio/digital/ofdm_chanest_vcvc.h"
+%include "gnuradio/digital/ofdm_cyclic_prefixer.h"
+%include "gnuradio/digital/ofdm_equalizer_base.h"
+%include "gnuradio/digital/ofdm_equalizer_simpledfe.h"
+%include "gnuradio/digital/ofdm_equalizer_static.h"
+%include "gnuradio/digital/ofdm_frame_acquisition.h"
+%include "gnuradio/digital/ofdm_frame_equalizer_vcvc.h"
+%include "gnuradio/digital/ofdm_frame_sink.h"
+%include "gnuradio/digital/ofdm_insert_preamble.h"
+%include "gnuradio/digital/ofdm_mapper_bcv.h"
+%include "gnuradio/digital/ofdm_sampler.h"
+%include "gnuradio/digital/ofdm_serializer_vcc.h"
+%include "gnuradio/digital/ofdm_sync_sc_cfb.h"
+%include "gnuradio/digital/packet_header_default.h"
+%include "gnuradio/digital/packet_header_ofdm.h"
+%include "gnuradio/digital/packet_headergenerator_bb.h"
+%include "gnuradio/digital/packet_headerparser_b.h"
+%include "gnuradio/digital/packet_sink.h"
+%include "gnuradio/digital/pfb_clock_sync_ccf.h"
+%include "gnuradio/digital/pfb_clock_sync_fff.h"
+%include "gnuradio/digital/pn_correlator_cc.h"
+%include "gnuradio/digital/probe_density_b.h"
+%include "gnuradio/digital/probe_mpsk_snr_est_c.h"
+%include "gnuradio/digital/scrambler_bb.h"
+%include "gnuradio/digital/simple_correlator.h"
+%include "gnuradio/digital/simple_framer.h"
 
 GR_SWIG_BLOCK_MAGIC2(digital, additive_scrambler_bb);
 GR_SWIG_BLOCK_MAGIC2(digital, binary_slicer_fb);
diff --git a/gr-trellis/include/trellis/calc_metric.h b/gr-trellis/include/trellis/calc_metric.h
index 46d83c301f..c85fcbff69 100644
--- a/gr-trellis/include/trellis/calc_metric.h
+++ b/gr-trellis/include/trellis/calc_metric.h
@@ -25,7 +25,7 @@
 
 #include <vector>
 #include <gnuradio/gr_complex.h>
-#include <digital/metric_type.h>
+#include <gnuradio/digital/metric_type.h>
 
 namespace gr {
   namespace trellis {
diff --git a/gr-trellis/include/trellis/constellation_metrics_cf.h b/gr-trellis/include/trellis/constellation_metrics_cf.h
index 5a728ad96c..576378dd62 100644
--- a/gr-trellis/include/trellis/constellation_metrics_cf.h
+++ b/gr-trellis/include/trellis/constellation_metrics_cf.h
@@ -25,8 +25,8 @@
 
 #include <trellis/api.h>
 #include <gnuradio/block.h>
-#include <digital/constellation.h>
-#include <digital/metric_type.h>
+#include <gnuradio/digital/constellation.h>
+#include <gnuradio/digital/metric_type.h>
 
 namespace gr {
   namespace trellis {
diff --git a/gr-trellis/include/trellis/core_algorithms.h b/gr-trellis/include/trellis/core_algorithms.h
index 2292845629..03d3efa56a 100644
--- a/gr-trellis/include/trellis/core_algorithms.h
+++ b/gr-trellis/include/trellis/core_algorithms.h
@@ -25,7 +25,7 @@
 
 #include <cmath>
 #include <vector>
-#include <digital/metric_type.h>
+#include <gnuradio/digital/metric_type.h>
 #include <trellis/fsm.h>
 #include <trellis/interleaver.h>
 
diff --git a/gr-trellis/swig/trellis_swig.i b/gr-trellis/swig/trellis_swig.i
index d593926b0d..2a938ab08a 100644
--- a/gr-trellis/swig/trellis_swig.i
+++ b/gr-trellis/swig/trellis_swig.i
@@ -27,8 +27,8 @@
 //load generated python docstrings
 %include "trellis_swig_doc.i"
 
-%include "digital/metric_type.h"
-%include "digital/constellation.h"
+%include "gnuradio/digital/metric_type.h"
+%include "gnuradio/digital/constellation.h"
 %include "trellis/siso_type.h"
 %include "trellis/fsm.h"
 %include "trellis/interleaver.h"
-- 
cgit v1.2.3