diff options
Diffstat (limited to 'volk/python')
-rw-r--r-- | volk/python/Makefile.am | 40 | ||||
-rw-r--r-- | volk/python/__init__.py | 53 | ||||
-rwxr-xr-x | volk/python/qa_square.py | 47 | ||||
-rw-r--r-- | volk/python/run_tests.in | 50 | ||||
-rw-r--r-- | volk/python/volk.i | 47 | ||||
-rw-r--r-- | volk/python/volk_square_ff.i | 37 |
6 files changed, 274 insertions, 0 deletions
diff --git a/volk/python/Makefile.am b/volk/python/Makefile.am new file mode 100644 index 000000000..8519a102a --- /dev/null +++ b/volk/python/Makefile.am @@ -0,0 +1,40 @@ +# +# Copyright 2010 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. +# + +include $(top_srcdir)/Makefile.common + +AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) +SWIGPYTHONARGS = $(SWIGPYTHONFLAGS) $(SWIGGRFLAGS) + +BUILT_SOURCES = $(swig_built_sources) + +MOSTLYCLEANFILES = $(BUILT_SOURCES) *.pyc + +# Don't distribute the output of swig +dist-hook: + @for file in $(swig_built_sources); do echo $(RM) $(distdir)/$$file; done + @for file in $(swig_built_sources); do $(RM) $(distdir)/$$file; done + + +# Set the install location of any python scripts to /volk +volkpythondir = $(pythondir)/volk + +volkpython_PYTHON = \ + __init__.py diff --git a/volk/python/__init__.py b/volk/python/__init__.py new file mode 100644 index 000000000..7239e7e23 --- /dev/null +++ b/volk/python/__init__.py @@ -0,0 +1,53 @@ +# +# Copyright 2010 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. +# + +# The presence of this file turns this directory into a Python package + +# ---------------------------------------------------------------- +# Temporary workaround for ticket:181 (swig+python problem) +import sys +_RTLD_GLOBAL = 0 +try: + from dl import RTLD_GLOBAL as _RTLD_GLOBAL +except ImportError: + try: + from DLFCN import RTLD_GLOBAL as _RTLD_GLOBAL + except ImportError: + pass + +if _RTLD_GLOBAL != 0: + _dlopenflags = sys.getdlopenflags() + sys.setdlopenflags(_dlopenflags|_RTLD_GLOBAL) +# ---------------------------------------------------------------- + + +# import swig generated symbols into the volk namespace +from volk_swig import * + +# import any pure python here +# from volk_foo import bar +# from volk_baz import * + + +# ---------------------------------------------------------------- +# Tail of workaround +if _RTLD_GLOBAL != 0: + sys.setdlopenflags(_dlopenflags) # Restore original flags +# ---------------------------------------------------------------- diff --git a/volk/python/qa_square.py b/volk/python/qa_square.py new file mode 100755 index 000000000..53f0433ca --- /dev/null +++ b/volk/python/qa_square.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +# +# Copyright 2010 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 gnuradio import gr, gr_unittest +import volk_swig as volk + +class qa_volk(gr_unittest.TestCase): + + def setUp(self): + self.tb = gr.top_block() + + def tearDown(self): + self.tb = None + + def test_001_square_ff(self): + src_data = (-3, 4, -5.5, 2, 3) + expected_result = (9, 16, 30.25, 4, 9) + src = gr.vector_source_f(src_data) + sqr = volk.square_ff() + dst = gr.vector_sink_f() + self.tb.connect(src, sqr) + self.tb.connect(sqr, dst) + self.tb.run() + result_data = dst.data() + self.assertFloatTuplesAlmostEqual(expected_result, result_data, 6) + +if __name__ == '__main__': + gr_unittest.main() diff --git a/volk/python/run_tests.in b/volk/python/run_tests.in new file mode 100644 index 000000000..895a849bd --- /dev/null +++ b/volk/python/run_tests.in @@ -0,0 +1,50 @@ +#!/bin/sh + +# All this strange PYTHONPATH manipulation is required to run our +# tests using our just built shared library and swig-generated python +# code prior to installation. + +# build tree == src tree unless you're doing a VPATH build. +# If you don't know what a VPATH build is, you're not doing one. Relax... + +prefix=@prefix@ +exec_prefix=@exec_prefix@ + +# Where to look in the build tree for our shared library +libbld=@abs_top_builddir@/python +# Where to look in the src tree for swig generated python code +libsrc=@abs_top_builddir@/python +# Where to look in the src tree for hand written python code +py=@abs_top_srcdir@/python + +# Where to look for installed GNU Radio python modules +# FIXME this is wrong on a distcheck. We really need to ask gnuradio-core +# where it put its python files. +installed_pythondir=@pythondir@ +installed_pyexecdir=@pyexecdir@ + +PYTHONPATH="$libbld:$libbld/.libs:$libsrc:$py:$installed_pythondir:$installed_pyexecdir:$PYTHONPATH" +#PYTHONPATH="$libbld:$libbld/.libs:$libsrc:$py:$installed_pythondir:$installed_pyexecdir" + +export PYTHONPATH + +# +# This is the simple part... +# Run everything that matches qa_*.py and return the final result. +# + +ok=yes +for file in @srcdir@/qa_*.py +do + if ! $file + then + ok=no + fi +done + +if [ $ok = yes ] +then + exit 0 +else + exit 1 +fi diff --git a/volk/python/volk.i b/volk/python/volk.i new file mode 100644 index 000000000..ea3a037ba --- /dev/null +++ b/volk/python/volk.i @@ -0,0 +1,47 @@ +/* -*- c++ -*- */ +/* + * Copyright 2010 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. + */ + +%feature("autodoc", "1"); // generate python docstrings + +%include "exception.i" +%import "gnuradio.i" // the common stuff + +%{ +#include "gnuradio_swig_bug_workaround.h" // mandatory bug fix +#include <stdexcept> +%} + +// ---------------------------------------------------------------- + +/* + * Gather all .i files in this directory together. + */ + +%{ + +// The .h files +#include <volk/volk_square_ff.h> + +%} + +// The .i files +%include <volk_square_ff.i> + diff --git a/volk/python/volk_square_ff.i b/volk/python/volk_square_ff.i new file mode 100644 index 000000000..1d485bd7e --- /dev/null +++ b/volk/python/volk_square_ff.i @@ -0,0 +1,37 @@ +/* -*- c++ -*- */ +/* + * Copyright 2010 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. + */ + +/* + * First arg is the package prefix. + * Second arg is the name of the class minus the prefix. + * + * This does some behind-the-scenes magic so we can + * access gr_example_square_ff from python as howto.square_ff + */ +GR_SWIG_BLOCK_MAGIC(volk,square_ff); + +volk_square_ff_sptr volk_make_square_ff (); + +class volk_square_ff : public gr_sync_block +{ +private: + volk_square_ff(); +}; |