summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Dickens <michael.dickens@ettus.com>2016-10-24 12:36:57 -0400
committerMichael Dickens <michael.dickens@ettus.com>2016-10-24 12:36:57 -0400
commit30a7f3e115019e0e73539393e85a2cf3888537c9 (patch)
tree04e8cada9b5ca63ff7c40792ed40f3b3f62f265e
parent5d6799147f1db7ff22b088e81be6db9fde81dc23 (diff)
digital: split swig into 3 parts (a la blocks/swig) to allow for building on "low memory" systems (e.g., RPi).
-rw-r--r--gr-digital/swig/CMakeLists.txt87
-rw-r--r--gr-digital/swig/digital_swig.py.in24
-rw-r--r--gr-digital/swig/digital_swig0.i148
-rw-r--r--gr-digital/swig/digital_swig1.i120
-rw-r--r--gr-digital/swig/digital_swig2.i112
5 files changed, 313 insertions, 178 deletions
diff --git a/gr-digital/swig/CMakeLists.txt b/gr-digital/swig/CMakeLists.txt
index 2f00dc14a3..fb13d3e402 100644
--- a/gr-digital/swig/CMakeLists.txt
+++ b/gr-digital/swig/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2016 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -24,47 +24,72 @@ include(GrPython)
include(GrSwig)
set(GR_SWIG_INCLUDE_DIRS
- ${GR_DIGITAL_INCLUDE_DIRS}
- ${GR_BLOCKS_INCLUDE_DIRS}
- ${GR_ANALOG_INCLUDE_DIRS}
- ${GR_FFT_INCLUDE_DIRS}
- ${GR_FILTER_INCLUDE_DIRS}
- ${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
- ${VOLK_INCLUDE_DIRS}
- ${Boost_INCLUDE_DIRS}
+ ${GR_DIGITAL_INCLUDE_DIRS}
+ ${GR_BLOCKS_INCLUDE_DIRS}
+ ${GR_ANALOG_INCLUDE_DIRS}
+ ${GR_FFT_INCLUDE_DIRS}
+ ${GR_FILTER_INCLUDE_DIRS}
+ ${GNURADIO_RUNTIME_SWIG_INCLUDE_DIRS}
+ ${VOLK_INCLUDE_DIRS}
+ ${Boost_INCLUDE_DIRS}
)
if(ENABLE_GR_CTRLPORT)
list(APPEND GR_SWIG_FLAGS "-DGR_CTRLPORT")
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
+configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/digital_swig.py.in
+ ${CMAKE_CURRENT_BINARY_DIR}/digital_swig.py
+@ONLY)
+
+# We split up the swig files into multiple sections to minimize the
+# memory overhead. If a .i file grows too large, create a new file
+# named 'digital_swigN.i' and add it to this list.
+#
+# Also add the line "from swig_blocksN import *" line to
+# digital_swig.py.in.
+set(GR_SWIG_BLOCK_IFILES
+ digital_swig0
+ digital_swig1
+ digital_swig2
+)
+
+foreach(swigfile ${GR_SWIG_BLOCK_IFILES})
+ set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/${swigfile}_doc.i)
+ set(GR_SWIG_DOC_DIRS
${CMAKE_CURRENT_SOURCE_DIR}/../include/gnuradio/digital
${CMAKE_CURRENT_BINARY_DIR}/../include/gnuradio/digital
-)
-set(GR_SWIG_DOCS_TARGET_DEPS runtime_swig_swig_doc)
+ )
+ set(GR_SWIG_DOCS_TARGET_DEPS runtime_swig_swig_doc)
+ set(GR_SWIG_TARGET_DEPS digital_generated_includes)
+ set(GR_SWIG_LIBRARIES gnuradio-digital
+ gnuradio-filter gnuradio-analog gnuradio-blocks)
+ GR_SWIG_MAKE(${swigfile} ${swigfile}.i)
-set(GR_SWIG_LIBRARIES gnuradio-digital
- gnuradio-filter gnuradio-analog gnuradio-blocks)
+ GR_SWIG_INSTALL(
+ TARGETS ${swigfile}
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio/digital
+ COMPONENT "digital_python")
-GR_SWIG_MAKE(digital_swig digital_swig.i)
+ list(APPEND SWIGFILES ${swigfile}.i)
+ list(APPEND SWIGDOCFILES ${CMAKE_CURRENT_BINARY_DIR}/${swigfile}_doc.i)
+endforeach(swigfile)
-GR_SWIG_INSTALL(
- TARGETS digital_swig
- DESTINATION ${GR_PYTHON_DIR}/gnuradio/digital
- COMPONENT "digital_python"
+install(
+ FILES
+ ${SWIGFILES}
+ constellation.i
+ ofdm_equalizer.i
+ packet_header.i
+ ${SWIGDOCFILES}
+ DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
+ COMPONENT "digital_swig"
)
-install(
- FILES
- digital_swig.i
- constellation.i
- ofdm_equalizer.i
- packet_header.i
- ${CMAKE_CURRENT_BINARY_DIR}/digital_swig_doc.i
- DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
- COMPONENT "digital_swig"
+# Install the Python file that pulls in the swig built files.
+GR_PYTHON_INSTALL(
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/digital_swig.py
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio/digital
+ COMPONENT "digital_python"
)
diff --git a/gr-digital/swig/digital_swig.py.in b/gr-digital/swig/digital_swig.py.in
new file mode 100644
index 0000000000..d5d55a0f4e
--- /dev/null
+++ b/gr-digital/swig/digital_swig.py.in
@@ -0,0 +1,24 @@
+#
+# Copyright 2016 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.
+#
+
+from digital_swig0 import *
+from digital_swig1 import *
+from digital_swig2 import *
diff --git a/gr-digital/swig/digital_swig0.i b/gr-digital/swig/digital_swig0.i
index 8a38d65b82..753d0267b9 100644
--- a/gr-digital/swig/digital_swig0.i
+++ b/gr-digital/swig/digital_swig0.i
@@ -27,7 +27,7 @@
%include "stdint.i"
//load generated python docstrings
-%include "digital_swig_doc.i"
+%include "digital_swig0_doc.i"
%include "gnuradio/analog/cpm.h"
@@ -37,18 +37,7 @@
%include <gnuradio/blocks/control_loop.h>
%{
-#include "gnuradio/digital/additive_scrambler_bb.h"
#include "gnuradio/digital/binary_slicer_fb.h"
-#include "gnuradio/digital/burst_shaper_cc.h"
-#include "gnuradio/digital/burst_shaper_ff.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"
@@ -66,26 +55,7 @@
#include "gnuradio/digital/crc32_bb.h"
#include "gnuradio/digital/crc32_async_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/hdlc_deframer_bp.h"
-#include "gnuradio/digital/hdlc_framer_pb.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/modulate_vector.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/msk_timing_recovery_cc.h"
#include "gnuradio/digital/ofdm_carrier_allocator_cvc.h"
#include "gnuradio/digital/ofdm_chanest_vcvc.h"
#include "gnuradio/digital/ofdm_cyclic_prefixer.h"
@@ -100,44 +70,9 @@
#include "gnuradio/digital/ofdm_sampler.h"
#include "gnuradio/digital/ofdm_serializer_vcc.h"
#include "gnuradio/digital/ofdm_sync_sc_cfb.h"
-#include "gnuradio/digital/header_format_base.h"
-#include "gnuradio/digital/header_format_default.h"
-#include "gnuradio/digital/header_format_counter.h"
-#include "gnuradio/digital/header_format_crc.h"
-#include "gnuradio/digital/header_format_ofdm.h"
-#include "gnuradio/digital/protocol_formatter_async.h"
-#include "gnuradio/digital/protocol_formatter_bb.h"
-#include "gnuradio/digital/protocol_parser_b.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 "gnuradio/digital/additive_scrambler_bb.h"
%include "gnuradio/digital/binary_slicer_fb.h"
-%include "gnuradio/digital/burst_shaper_cc.h"
-%include "gnuradio/digital/burst_shaper_ff.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"
@@ -155,26 +90,7 @@
%include "gnuradio/digital/crc32_bb.h"
%include "gnuradio/digital/crc32_async_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/hdlc_deframer_bp.h"
-%include "gnuradio/digital/hdlc_framer_pb.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/modulate_vector.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/msk_timing_recovery_cc.h"
%include "gnuradio/digital/ofdm_carrier_allocator_cvc.h"
%include "gnuradio/digital/ofdm_chanest_vcvc.h"
%include "gnuradio/digital/ofdm_cyclic_prefixer.h"
@@ -189,40 +105,8 @@
%include "gnuradio/digital/ofdm_sampler.h"
%include "gnuradio/digital/ofdm_serializer_vcc.h"
%include "gnuradio/digital/ofdm_sync_sc_cfb.h"
-%include "gnuradio/digital/header_format_base.h"
-%include "gnuradio/digital/header_format_default.h"
-%include "gnuradio/digital/header_format_counter.h"
-%include "gnuradio/digital/header_format_crc.h"
-%include "gnuradio/digital/header_format_ofdm.h"
-%include "gnuradio/digital/protocol_formatter_async.h"
-%include "gnuradio/digital/protocol_formatter_bb.h"
-%include "gnuradio/digital/protocol_parser_b.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);
-GR_SWIG_BLOCK_MAGIC2(digital, burst_shaper_cc);
-GR_SWIG_BLOCK_MAGIC2(digital, burst_shaper_ff);
-GR_SWIG_BLOCK_MAGIC2(digital, chunks_to_symbols_bc);
-GR_SWIG_BLOCK_MAGIC2(digital, chunks_to_symbols_bf);
-GR_SWIG_BLOCK_MAGIC2(digital, chunks_to_symbols_ic);
-GR_SWIG_BLOCK_MAGIC2(digital, chunks_to_symbols_if);
-GR_SWIG_BLOCK_MAGIC2(digital, chunks_to_symbols_sc);
-GR_SWIG_BLOCK_MAGIC2(digital, chunks_to_symbols_sf);
-GR_SWIG_BLOCK_MAGIC2(digital, clock_recovery_mm_cc);
-GR_SWIG_BLOCK_MAGIC2(digital, clock_recovery_mm_ff);
GR_SWIG_BLOCK_MAGIC2(digital, cma_equalizer_cc);
GR_SWIG_BLOCK_MAGIC2(digital, constellation_decoder_cb);
GR_SWIG_BLOCK_MAGIC2(digital, constellation_receiver_cb);
@@ -238,22 +122,7 @@ GR_SWIG_BLOCK_MAGIC2(digital, crc32_bb);
GR_SWIG_BLOCK_MAGIC2(digital, crc32_async_bb);
GR_SWIG_BLOCK_MAGIC2(digital, cpmmod_bc);
GR_SWIG_BLOCK_MAGIC2(digital, descrambler_bb);
-GR_SWIG_BLOCK_MAGIC2(digital, diff_decoder_bb);
-GR_SWIG_BLOCK_MAGIC2(digital, diff_encoder_bb);
-GR_SWIG_BLOCK_MAGIC2(digital, diff_phasor_cc);
-GR_SWIG_BLOCK_MAGIC2(digital, fll_band_edge_cc);
-GR_SWIG_BLOCK_MAGIC2(digital, framer_sink_1);
-GR_SWIG_BLOCK_MAGIC2(digital, glfsr_source_b);
-GR_SWIG_BLOCK_MAGIC2(digital, glfsr_source_f);
-GR_SWIG_BLOCK_MAGIC2(digital, hdlc_deframer_bp);
-GR_SWIG_BLOCK_MAGIC2(digital, hdlc_framer_pb);
-GR_SWIG_BLOCK_MAGIC2(digital, header_payload_demux);
-GR_SWIG_BLOCK_MAGIC2(digital, kurtotic_equalizer_cc);
GR_SWIG_BLOCK_MAGIC2(digital, lms_dd_equalizer_cc);
-GR_SWIG_BLOCK_MAGIC2(digital, map_bb);
-GR_SWIG_BLOCK_MAGIC2(digital, mpsk_receiver_cc);
-GR_SWIG_BLOCK_MAGIC2(digital, mpsk_snr_est_cc);
-GR_SWIG_BLOCK_MAGIC2(digital, msk_timing_recovery_cc);
GR_SWIG_BLOCK_MAGIC2(digital, ofdm_carrier_allocator_cvc);
GR_SWIG_BLOCK_MAGIC2(digital, ofdm_chanest_vcvc);
GR_SWIG_BLOCK_MAGIC2(digital, ofdm_cyclic_prefixer);
@@ -265,24 +134,9 @@ GR_SWIG_BLOCK_MAGIC2(digital, ofdm_mapper_bcv);
GR_SWIG_BLOCK_MAGIC2(digital, ofdm_sampler);
GR_SWIG_BLOCK_MAGIC2(digital, ofdm_serializer_vcc);
GR_SWIG_BLOCK_MAGIC2(digital, ofdm_sync_sc_cfb);
-GR_SWIG_BLOCK_MAGIC2(digital, protocol_formatter_async);
-GR_SWIG_BLOCK_MAGIC2(digital, protocol_formatter_bb);
-GR_SWIG_BLOCK_MAGIC2(digital, protocol_parser_b);
-GR_SWIG_BLOCK_MAGIC2(digital, packet_headergenerator_bb);
-GR_SWIG_BLOCK_MAGIC2(digital, packet_headerparser_b);
-GR_SWIG_BLOCK_MAGIC2(digital, packet_sink);
-GR_SWIG_BLOCK_MAGIC2(digital, pfb_clock_sync_ccf);
-GR_SWIG_BLOCK_MAGIC2(digital, pfb_clock_sync_fff);
-GR_SWIG_BLOCK_MAGIC2(digital, pn_correlator_cc);
-GR_SWIG_BLOCK_MAGIC2(digital, probe_density_b);
-GR_SWIG_BLOCK_MAGIC2(digital, probe_mpsk_snr_est_c);
-GR_SWIG_BLOCK_MAGIC2(digital, scrambler_bb);
-GR_SWIG_BLOCK_MAGIC2(digital, simple_correlator);
-GR_SWIG_BLOCK_MAGIC2(digital, simple_framer);
GR_SWIG_BLOCK_MAGIC_FACTORY(digital, cpmmod_bc, gmskmod_bc);
// Properly package up non-block objects
%include "constellation.i"
-%include "packet_header.i"
%include "ofdm_equalizer.i"
diff --git a/gr-digital/swig/digital_swig1.i b/gr-digital/swig/digital_swig1.i
new file mode 100644
index 0000000000..972ddf5cb2
--- /dev/null
+++ b/gr-digital/swig/digital_swig1.i
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2016 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.
+ */
+
+#define DIGITAL_API
+#define ANALOG_API
+#define BLOCKS_API
+
+%include "gnuradio.i"
+%include "stdint.i"
+
+//load generated python docstrings
+%include "digital_swig1_doc.i"
+
+ //%include "gnuradio/analog/cpm.h"
+
+%{
+#include <gnuradio/blocks/control_loop.h>
+%}
+%include <gnuradio/blocks/control_loop.h>
+
+%{
+#include "gnuradio/digital/additive_scrambler_bb.h"
+#include "gnuradio/digital/burst_shaper_cc.h"
+#include "gnuradio/digital/burst_shaper_ff.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/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/hdlc_deframer_bp.h"
+#include "gnuradio/digital/hdlc_framer_pb.h"
+#include "gnuradio/digital/header_payload_demux.h"
+#include "gnuradio/digital/kurtotic_equalizer_cc.h"
+#include "gnuradio/digital/lfsr.h"
+#include "gnuradio/digital/map_bb.h"
+#include "gnuradio/digital/metric_type.h"
+#include "gnuradio/digital/modulate_vector.h"
+#include "gnuradio/digital/msk_timing_recovery_cc.h"
+%}
+
+%include "gnuradio/digital/additive_scrambler_bb.h"
+%include "gnuradio/digital/burst_shaper_cc.h"
+%include "gnuradio/digital/burst_shaper_ff.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/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/hdlc_deframer_bp.h"
+%include "gnuradio/digital/hdlc_framer_pb.h"
+%include "gnuradio/digital/header_payload_demux.h"
+%include "gnuradio/digital/kurtotic_equalizer_cc.h"
+%include "gnuradio/digital/lfsr.h"
+%include "gnuradio/digital/map_bb.h"
+%include "gnuradio/digital/metric_type.h"
+%include "gnuradio/digital/modulate_vector.h"
+%include "gnuradio/digital/msk_timing_recovery_cc.h"
+
+GR_SWIG_BLOCK_MAGIC2(digital, additive_scrambler_bb);
+GR_SWIG_BLOCK_MAGIC2(digital, burst_shaper_cc);
+GR_SWIG_BLOCK_MAGIC2(digital, burst_shaper_ff);
+GR_SWIG_BLOCK_MAGIC2(digital, chunks_to_symbols_bc);
+GR_SWIG_BLOCK_MAGIC2(digital, chunks_to_symbols_bf);
+GR_SWIG_BLOCK_MAGIC2(digital, chunks_to_symbols_ic);
+GR_SWIG_BLOCK_MAGIC2(digital, chunks_to_symbols_if);
+GR_SWIG_BLOCK_MAGIC2(digital, chunks_to_symbols_sc);
+GR_SWIG_BLOCK_MAGIC2(digital, chunks_to_symbols_sf);
+GR_SWIG_BLOCK_MAGIC2(digital, clock_recovery_mm_cc);
+GR_SWIG_BLOCK_MAGIC2(digital, clock_recovery_mm_ff);
+GR_SWIG_BLOCK_MAGIC2(digital, diff_decoder_bb);
+GR_SWIG_BLOCK_MAGIC2(digital, diff_encoder_bb);
+GR_SWIG_BLOCK_MAGIC2(digital, diff_phasor_cc);
+GR_SWIG_BLOCK_MAGIC2(digital, fll_band_edge_cc);
+GR_SWIG_BLOCK_MAGIC2(digital, framer_sink_1);
+GR_SWIG_BLOCK_MAGIC2(digital, glfsr_source_b);
+GR_SWIG_BLOCK_MAGIC2(digital, glfsr_source_f);
+GR_SWIG_BLOCK_MAGIC2(digital, hdlc_deframer_bp);
+GR_SWIG_BLOCK_MAGIC2(digital, hdlc_framer_pb);
+GR_SWIG_BLOCK_MAGIC2(digital, header_payload_demux);
+GR_SWIG_BLOCK_MAGIC2(digital, kurtotic_equalizer_cc);
+GR_SWIG_BLOCK_MAGIC2(digital, map_bb);
+GR_SWIG_BLOCK_MAGIC2(digital, msk_timing_recovery_cc);
diff --git a/gr-digital/swig/digital_swig2.i b/gr-digital/swig/digital_swig2.i
new file mode 100644
index 0000000000..c16cc6aafb
--- /dev/null
+++ b/gr-digital/swig/digital_swig2.i
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2016 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.
+ */
+
+#define DIGITAL_API
+#define ANALOG_API
+#define BLOCKS_API
+
+%include "gnuradio.i"
+%include "stdint.i"
+
+//load generated python docstrings
+%include "digital_swig2_doc.i"
+
+// %include "gnuradio/analog/cpm.h"
+
+%{
+#include <gnuradio/blocks/control_loop.h>
+%}
+%include <gnuradio/blocks/control_loop.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/header_format_base.h"
+#include "gnuradio/digital/header_format_default.h"
+#include "gnuradio/digital/header_format_counter.h"
+#include "gnuradio/digital/header_format_crc.h"
+#include "gnuradio/digital/header_format_ofdm.h"
+#include "gnuradio/digital/protocol_formatter_async.h"
+#include "gnuradio/digital/protocol_formatter_bb.h"
+#include "gnuradio/digital/protocol_parser_b.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 "gnuradio/digital/mpsk_receiver_cc.h"
+%include "gnuradio/digital/mpsk_snr_est.h"
+%include "gnuradio/digital/mpsk_snr_est_cc.h"
+%include "gnuradio/digital/header_format_base.h"
+%include "gnuradio/digital/header_format_default.h"
+%include "gnuradio/digital/header_format_counter.h"
+%include "gnuradio/digital/header_format_crc.h"
+%include "gnuradio/digital/header_format_ofdm.h"
+%include "gnuradio/digital/protocol_formatter_async.h"
+%include "gnuradio/digital/protocol_formatter_bb.h"
+%include "gnuradio/digital/protocol_parser_b.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, mpsk_receiver_cc);
+GR_SWIG_BLOCK_MAGIC2(digital, mpsk_snr_est_cc);
+GR_SWIG_BLOCK_MAGIC2(digital, protocol_formatter_async);
+GR_SWIG_BLOCK_MAGIC2(digital, protocol_formatter_bb);
+GR_SWIG_BLOCK_MAGIC2(digital, protocol_parser_b);
+GR_SWIG_BLOCK_MAGIC2(digital, packet_headergenerator_bb);
+GR_SWIG_BLOCK_MAGIC2(digital, packet_headerparser_b);
+GR_SWIG_BLOCK_MAGIC2(digital, packet_sink);
+GR_SWIG_BLOCK_MAGIC2(digital, pfb_clock_sync_ccf);
+GR_SWIG_BLOCK_MAGIC2(digital, pfb_clock_sync_fff);
+GR_SWIG_BLOCK_MAGIC2(digital, pn_correlator_cc);
+GR_SWIG_BLOCK_MAGIC2(digital, probe_density_b);
+GR_SWIG_BLOCK_MAGIC2(digital, probe_mpsk_snr_est_c);
+GR_SWIG_BLOCK_MAGIC2(digital, scrambler_bb);
+GR_SWIG_BLOCK_MAGIC2(digital, simple_correlator);
+GR_SWIG_BLOCK_MAGIC2(digital, simple_framer);
+
+// Properly package up non-block objects
+%include "packet_header.i"