diff --git a/gr-jay/gr-jay/nbproject/configurations.xml b/gr-jay/gr-jay/nbproject/configurations.xml index 92821c6..08bb3a8 100644 --- a/gr-jay/gr-jay/nbproject/configurations.xml +++ b/gr-jay/gr-jay/nbproject/configurations.xml @@ -8,15 +8,21 @@ projectFiles="true" root="../include/jay"> ../include/jay/CMakeLists.txt + ../include/jay/add.h ../include/jay/api.h + ../include/jay/bit_packer.h ../include/jay/bit_slicer.h + ../include/jay/peak_detect.h ../include/jay/pocsag_decoder.h ../include/jay/square2_ff.h ../include/jay/square_ff.h PocsagDecoder.cpp + add_impl.cc + bit_packer_impl.cc bit_slicer_impl.cc + peak_detect_impl.cc pocsag_decoder_impl.cc qa_jay.cc square2_ff_impl.cc @@ -27,9 +33,6 @@ displayName="swig" projectFiles="true" root="../build/swig"> - ../build/swig/_jay_swig_swig_tag.cpp - ../build/swig/jay_swigPYTHON_wrap.cxx - ../build/swig/jay_swig_swig_2d0df.cpp + @@ -69,10 +73,8 @@ ../lib ../include ../build/lib + ../build/include - - NDEBUG - @@ -80,60 +82,40 @@ - - - - ../build/include - ../build/swig - ../swig - /usr/include/gnuradio/swig - /usr/include/python2.7 - - - - - - - ../build/include - ../build/swig - ../swig - /usr/include/gnuradio/swig - /usr/include/python2.7 - - - _jay_swig_EXPORTS - - - - - - - ../build/include - ../build/swig - ../swig - /usr/include/gnuradio/swig - /usr/include/python2.7 - - - + NDEBUG gnuradio_jay_EXPORTS - + + + NDEBUG + gnuradio_jay_EXPORTS + + + + + + + NDEBUG + gnuradio_jay_EXPORTS + + + + + + + NDEBUG + gnuradio_jay_EXPORTS + + + + + gnuradio_jay_EXPORTS @@ -142,17 +124,22 @@ + NDEBUG gnuradio_jay_EXPORTS + + NDEBUG + + NDEBUG gnuradio_jay_EXPORTS @@ -160,18 +147,25 @@ + NDEBUG gnuradio_jay_EXPORTS + + NDEBUG + - + - ../build/include + ../build/swig + ../swig + /usr/include/gnuradio/swig + /usr/include/python2.7 diff --git a/gr-jay/gr-jay/nbproject/private/Default.properties b/gr-jay/gr-jay/nbproject/private/Default.properties index 642c944..aa5357d 100644 --- a/gr-jay/gr-jay/nbproject/private/Default.properties +++ b/gr-jay/gr-jay/nbproject/private/Default.properties @@ -1 +1 @@ -/home/jens/work/software/projects/GnuRadio/gr-jay/lib/bit_slicer_impl.cc=/home/jens/work/software/projects/GnuRadio/gr-jay/build/lib#-Dgnuradio_jay_EXPORTS -I/home/jens/work/software/projects/GnuRadio/gr-jay/lib -I/home/jens/work/software/projects/GnuRadio/gr-jay/include -I/home/jens/work/software/projects/GnuRadio/gr-jay/build/lib -I/home/jens/work/software/projects/GnuRadio/gr-jay/build/include -O3 -DNDEBUG -fPIC -fvisibility=hidden -o CMakeFiles/gnuradio-jay.dir/bit_slicer_impl.cc.o -c /home/jens/work/software/projects/GnuRadio/gr-jay/lib/bit_slicer_impl.cc +/home/jens/work/software/projects/GnuRadio/gr-jay/lib/peak_detect_impl.cc=/home/jens/work/software/projects/GnuRadio/gr-jay/build/lib#-Dgnuradio_jay_EXPORTS -I/home/jens/work/software/projects/GnuRadio/gr-jay/lib -I/home/jens/work/software/projects/GnuRadio/gr-jay/include -I/home/jens/work/software/projects/GnuRadio/gr-jay/build/lib -I/home/jens/work/software/projects/GnuRadio/gr-jay/build/include -g -fPIC -fvisibility=hidden -o CMakeFiles/gnuradio-jay.dir/peak_detect_impl.cc.o -c /home/jens/work/software/projects/GnuRadio/gr-jay/lib/peak_detect_impl.cc diff --git a/gr-jay/gr-jay/nbproject/private/configurations.xml b/gr-jay/gr-jay/nbproject/private/configurations.xml index b5bd6d4..77e3a1e 100644 --- a/gr-jay/gr-jay/nbproject/private/configurations.xml +++ b/gr-jay/gr-jay/nbproject/private/configurations.xml @@ -6,8 +6,14 @@ PocsagDecoder.cpp PocsagDecoder.hpp + add_impl.cc + add_impl.h + bit_packer_impl.cc + bit_packer_impl.h bit_slicer_impl.cc bit_slicer_impl.h + peak_detect_impl.cc + peak_detect_impl.h pocsag_decoder_impl.cc pocsag_decoder_impl.h qa_jay.cc diff --git a/gr-jay/gr-jay/nbproject/project.xml b/gr-jay/gr-jay/nbproject/project.xml index 6d023af..4fa8466 100644 --- a/gr-jay/gr-jay/nbproject/project.xml +++ b/gr-jay/gr-jay/nbproject/project.xml @@ -5,7 +5,7 @@ gr-jay - cc,cpp,cxx + cc,cpp h,hpp UTF-8 diff --git a/gr-jay/grc/CMakeLists.txt b/gr-jay/grc/CMakeLists.txt index 09c110f..95dc5d5 100644 --- a/gr-jay/grc/CMakeLists.txt +++ b/gr-jay/grc/CMakeLists.txt @@ -22,5 +22,7 @@ install(FILES jay_square2_ff.xml jay_bit_slicer.xml jay_pocsag_decoder.xml - jay_bit_packer.xml DESTINATION share/gnuradio/grc/blocks + jay_bit_packer.xml + jay_add.xml + jay_peak_detect.xml DESTINATION share/gnuradio/grc/blocks ) diff --git a/gr-jay/grc/jay_add.xml b/gr-jay/grc/jay_add.xml new file mode 100644 index 0000000..8660b8f --- /dev/null +++ b/gr-jay/grc/jay_add.xml @@ -0,0 +1,38 @@ + + + add + jay_add + [jay] + import jay + jay.add() + + + ... + ... + ... + + + + + in + + + + + + out + + + diff --git a/gr-jay/grc/jay_peak_detect.xml b/gr-jay/grc/jay_peak_detect.xml new file mode 100644 index 0000000..81a55d0 --- /dev/null +++ b/gr-jay/grc/jay_peak_detect.xml @@ -0,0 +1,50 @@ + + + peak_detect + jay_peak_detect + [jay] + import jay + jay.peak_detect($alpha_s, $alpha_m, $vlen) + + + Alpha short + alpha_s + float + + + Alpha medium + alpha_m + float + + + Vector length + vlen + int + + + + + in + float + $vlen + + + + + out + float + $vlen + + diff --git a/gr-jay/include/jay/CMakeLists.txt b/gr-jay/include/jay/CMakeLists.txt index 695ecd4..34ea0c2 100644 --- a/gr-jay/include/jay/CMakeLists.txt +++ b/gr-jay/include/jay/CMakeLists.txt @@ -27,5 +27,7 @@ install(FILES square2_ff.h bit_slicer.h pocsag_decoder.h - bit_packer.h DESTINATION include/jay + bit_packer.h + add.h + peak_detect.h DESTINATION include/jay ) diff --git a/gr-jay/include/jay/add.h b/gr-jay/include/jay/add.h new file mode 100644 index 0000000..77b8060 --- /dev/null +++ b/gr-jay/include/jay/add.h @@ -0,0 +1,56 @@ +/* -*- c++ -*- */ +/* + * Copyright 2019 Jay Arrowfield. + * + * This 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. + * + * This software 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + + +#ifndef INCLUDED_JAY_ADD_H +#define INCLUDED_JAY_ADD_H + +#include +#include + +namespace gr { + namespace jay { + + /*! + * \brief <+description of block+> + * \ingroup jay + * + */ + class JAY_API add : virtual public gr::sync_block + { + public: + typedef boost::shared_ptr sptr; + + /*! + * \brief Return a shared_ptr to a new instance of jay::add. + * + * To avoid accidental use of raw pointers, jay::add's + * constructor is in a private implementation + * class. jay::add::make is the public interface for + * creating new instances. + */ + static sptr make(); + }; + + } // namespace jay +} // namespace gr + +#endif /* INCLUDED_JAY_ADD_H */ + diff --git a/gr-jay/include/jay/peak_detect.h b/gr-jay/include/jay/peak_detect.h new file mode 100644 index 0000000..01cc674 --- /dev/null +++ b/gr-jay/include/jay/peak_detect.h @@ -0,0 +1,56 @@ +/* -*- c++ -*- */ +/* + * Copyright 2019 Jay Arrowfield. + * + * This 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. + * + * This software 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + + +#ifndef INCLUDED_JAY_PEAK_DETECT_H +#define INCLUDED_JAY_PEAK_DETECT_H + +#include +#include + +namespace gr { + namespace jay { + + /*! + * \brief <+description of block+> + * \ingroup jay + * + */ + class JAY_API peak_detect : virtual public gr::sync_block + { + public: + typedef boost::shared_ptr sptr; + + /*! + * \brief Return a shared_ptr to a new instance of jay::peak_detect. + * + * To avoid accidental use of raw pointers, jay::peak_detect's + * constructor is in a private implementation + * class. jay::peak_detect::make is the public interface for + * creating new instances. + */ + static sptr make(float alpha_s, float alpha_l, int vlen); + }; + + } // namespace jay +} // namespace gr + +#endif /* INCLUDED_JAY_PEAK_DETECT_H */ + diff --git a/gr-jay/lib/CMakeLists.txt b/gr-jay/lib/CMakeLists.txt index f3d6902..7a41dc9 100644 --- a/gr-jay/lib/CMakeLists.txt +++ b/gr-jay/lib/CMakeLists.txt @@ -31,7 +31,9 @@ list(APPEND jay_sources bit_slicer_impl.cc PocsagDecoder.cpp pocsag_decoder_impl.cc - bit_packer_impl.cc ) + bit_packer_impl.cc + add_impl.cc + peak_detect_impl.cc ) set(jay_sources "${jay_sources}" PARENT_SCOPE) if(NOT jay_sources) diff --git a/gr-jay/lib/add_impl.cc b/gr-jay/lib/add_impl.cc new file mode 100644 index 0000000..b215ef2 --- /dev/null +++ b/gr-jay/lib/add_impl.cc @@ -0,0 +1,70 @@ +/* -*- c++ -*- */ +/* + * Copyright 2019 Jay Arrowfield. + * + * This 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. + * + * This software 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include "add_impl.h" + +namespace gr { + namespace jay { + + add::sptr + add::make() + { + return gnuradio::get_initial_sptr + (new add_impl()); + } + + /* + * The private constructor + */ + add_impl::add_impl() + : gr::sync_block("add", + gr::io_signature::make(1, 1, sizeof(float)), + gr::io_signature::make(1, 1, sizeof(float))) + {} + + /* + * Our virtual destructor. + */ + add_impl::~add_impl() + { + } + + int + add_impl::work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + const float *in = (const float *) input_items[0]; + float *out = (float *) output_items[0]; + + // Do <+signal processing+> + + // Tell runtime system how many output items we produced. + return noutput_items; + } + + } /* namespace jay */ +} /* namespace gr */ + diff --git a/gr-jay/lib/add_impl.h b/gr-jay/lib/add_impl.h new file mode 100644 index 0000000..36438b4 --- /dev/null +++ b/gr-jay/lib/add_impl.h @@ -0,0 +1,48 @@ +/* -*- c++ -*- */ +/* + * Copyright 2019 Jay Arrowfield. + * + * This 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. + * + * This software 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_JAY_ADD_IMPL_H +#define INCLUDED_JAY_ADD_IMPL_H + +#include + +namespace gr { + namespace jay { + + class add_impl : public add + { + private: + // Nothing to declare in this block. + + public: + add_impl(); + ~add_impl(); + + // Where all the action really happens + int work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + }; + + } // namespace jay +} // namespace gr + +#endif /* INCLUDED_JAY_ADD_IMPL_H */ + diff --git a/gr-jay/lib/peak_detect_impl.cc b/gr-jay/lib/peak_detect_impl.cc new file mode 100644 index 0000000..10da0c7 --- /dev/null +++ b/gr-jay/lib/peak_detect_impl.cc @@ -0,0 +1,100 @@ +/* -*- c++ -*- */ +/* + * Copyright 2019 Jay Arrowfield. + * + * This 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. + * + * This software 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include "peak_detect_impl.h" + +namespace gr { + namespace jay { + + peak_detect::sptr + peak_detect::make(float alpha_s, float alpha_m, int vlen) + { + return gnuradio::get_initial_sptr + (new peak_detect_impl(alpha_s, alpha_m, vlen)); + } + + /* + * The private constructor + */ + peak_detect_impl::peak_detect_impl(float alpha_s, float alpha_m, int vlen) + : gr::sync_block("peak_detect" + , gr::io_signature::make(1, 1, vlen*sizeof(float)) + , gr::io_signature::make(1, 1, vlen*sizeof(float))) + , m_alpha_s (alpha_s) + , m_alpha_m(alpha_m) + , m_vlen(vlen) + { + m_pPeakCount = new int[vlen]; + m_pXs = new float[vlen]; + m_pXm = new float[vlen]; + + memset(m_pPeakCount, 0, vlen*sizeof(int)); + memset(m_pXs, 0, vlen*sizeof(float)); + memset(m_pXm, 0, vlen*sizeof(float)); + } + + /* + * Our virtual destructor. + */ + peak_detect_impl::~peak_detect_impl() + { + delete [] m_pXm; + delete [] m_pXs; + delete [] m_pPeakCount; + } + + int + peak_detect_impl::work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items) + { + int k=0; + fprintf(stderr, "Peak at"); + for(int i = 0; i < (noutput_items * m_vlen); i++) + { + float x = ((float*)input_items[k])[i]; + m_pXs[i] = (1.f-m_alpha_s)*m_pXs[i] + m_alpha_s*x; + int gate = (int)(m_pXs[i] > (10+m_pXm[i])); + m_pPeakCount[i] = gate*m_pPeakCount[i] + gate; + float peak = (float)(m_pPeakCount[i] > 1); + + m_pXm[i] = (1.f-peak)*((1.f-m_alpha_m)*m_pXm[i] + m_alpha_m*x) + peak*m_pXm[i]; + + ((float*)output_items[k])[i] = m_pXm[i]; + + if (peak > 0.5) + { + fprintf(stderr, " %d", i); + } + } + fprintf(stderr, "\n"); + + // Tell runtime system how many output items we produced. + return noutput_items; + } + + } /* namespace jay */ +} /* namespace gr */ + diff --git a/gr-jay/lib/peak_detect_impl.h b/gr-jay/lib/peak_detect_impl.h new file mode 100644 index 0000000..a589ee3 --- /dev/null +++ b/gr-jay/lib/peak_detect_impl.h @@ -0,0 +1,54 @@ +/* -*- c++ -*- */ +/* + * Copyright 2019 Jay Arrowfield. + * + * This 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. + * + * This software 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_JAY_PEAK_DETECT_IMPL_H +#define INCLUDED_JAY_PEAK_DETECT_IMPL_H + +#include + +namespace gr { + namespace jay { + + class peak_detect_impl : public peak_detect + { + private: + // Nothing to declare in this block. + float m_alpha_s; + float m_alpha_m; + int m_vlen; + int *m_pPeakCount; + float *m_pXs; + float *m_pXm; + + public: + peak_detect_impl(float alpha_s, float alpha_m, int vlen); + ~peak_detect_impl(); + + // Where all the action really happens + int work(int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items); + }; + + } // namespace jay +} // namespace gr + +#endif /* INCLUDED_JAY_PEAK_DETECT_IMPL_H */ + diff --git a/gr-jay/python/CMakeLists.txt b/gr-jay/python/CMakeLists.txt index 3d337e8..e9a9b1e 100644 --- a/gr-jay/python/CMakeLists.txt +++ b/gr-jay/python/CMakeLists.txt @@ -47,3 +47,5 @@ GR_ADD_TEST(qa_square2_ff ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_sq GR_ADD_TEST(qa_bit_slicer ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_bit_slicer.py) GR_ADD_TEST(qa_pocsag_decoder ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_pocsag_decoder.py) GR_ADD_TEST(qa_bit_packer ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_bit_packer.py) +GR_ADD_TEST(qa_add ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_add.py) +GR_ADD_TEST(qa_peak_detect ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_peak_detect.py) diff --git a/gr-jay/python/qa_add.py b/gr-jay/python/qa_add.py new file mode 100755 index 0000000..911a103 --- /dev/null +++ b/gr-jay/python/qa_add.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2019 Jay Arrowfield. +# +# This 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. +# +# This software 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 software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +from gnuradio import gr, gr_unittest +from gnuradio import blocks +import jay_swig as jay + +class qa_add (gr_unittest.TestCase): + + def setUp (self): + self.tb = gr.top_block () + + def tearDown (self): + self.tb = None + + def test_001_t (self): + # set up fg + self.tb.run () + # check data + + +if __name__ == '__main__': + gr_unittest.run(qa_add, "qa_add.xml") diff --git a/gr-jay/python/qa_peak_detect.py b/gr-jay/python/qa_peak_detect.py new file mode 100755 index 0000000..7ab2f96 --- /dev/null +++ b/gr-jay/python/qa_peak_detect.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2019 Jay Arrowfield. +# +# This 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. +# +# This software 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 software; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +from gnuradio import gr, gr_unittest +from gnuradio import blocks +import jay_swig as jay + +class qa_peak_detect (gr_unittest.TestCase): + + def setUp (self): + self.tb = gr.top_block () + + def tearDown (self): + self.tb = None + + def test_001_t (self): + # set up fg + self.tb.run () + # check data + + +if __name__ == '__main__': + gr_unittest.run(qa_peak_detect, "qa_peak_detect.xml") diff --git a/gr-jay/swig/jay_swig.i b/gr-jay/swig/jay_swig.i index f18fc63..a4216a0 100644 --- a/gr-jay/swig/jay_swig.i +++ b/gr-jay/swig/jay_swig.i @@ -13,6 +13,8 @@ #include "jay/bit_slicer.h" #include "jay/pocsag_decoder.h" #include "jay/bit_packer.h" +#include "jay/add.h" +#include "jay/peak_detect.h" %} @@ -27,3 +29,7 @@ GR_SWIG_BLOCK_MAGIC2(jay, bit_slicer); GR_SWIG_BLOCK_MAGIC2(jay, pocsag_decoder); %include "jay/bit_packer.h" GR_SWIG_BLOCK_MAGIC2(jay, bit_packer); +%include "jay/add.h" +GR_SWIG_BLOCK_MAGIC2(jay, add); +%include "jay/peak_detect.h" +GR_SWIG_BLOCK_MAGIC2(jay, peak_detect);