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.hPocsagDecoder.cpp
+ add_impl.cc
+ bit_packer_impl.ccbit_slicer_impl.cc
+ peak_detect_impl.ccpocsag_decoder_impl.ccqa_jay.ccsquare2_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
-
-
-
+ NDEBUGgnuradio_jay_EXPORTS
-
+
+
+ NDEBUG
+ gnuradio_jay_EXPORTS
+
+
+
+
+
+
+ NDEBUG
+ gnuradio_jay_EXPORTS
+
+
+
+
+
+
+ NDEBUG
+ gnuradio_jay_EXPORTS
+
+
+
+
+ gnuradio_jay_EXPORTS
@@ -142,17 +124,22 @@
+ NDEBUGgnuradio_jay_EXPORTS
+
+ NDEBUG
+
+ NDEBUGgnuradio_jay_EXPORTS
@@ -160,18 +147,25 @@
+ NDEBUGgnuradio_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.cppPocsagDecoder.hpp
+ add_impl.cc
+ add_impl.h
+ bit_packer_impl.cc
+ bit_packer_impl.hbit_slicer_impl.ccbit_slicer_impl.h
+ peak_detect_impl.cc
+ peak_detect_impl.hpocsag_decoder_impl.ccpocsag_decoder_impl.hqa_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,cpph,hppUTF-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);