diff options
author | jcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5> | 2006-08-03 04:51:51 +0000 |
---|---|---|
committer | jcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5> | 2006-08-03 04:51:51 +0000 |
commit | 5d69a524f81f234b3fbc41d49ba18d6f6886baba (patch) | |
tree | b71312bf7f1e8d10fef0f3ac6f28784065e73e72 /gr-error-correcting-codes/src/python |
Houston, we have a trunk.
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@3122 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'gr-error-correcting-codes/src/python')
6 files changed, 373 insertions, 0 deletions
diff --git a/gr-error-correcting-codes/src/python/Makefile.am b/gr-error-correcting-codes/src/python/Makefile.am new file mode 100644 index 0000000000..7c387f92de --- /dev/null +++ b/gr-error-correcting-codes/src/python/Makefile.am @@ -0,0 +1,32 @@ +# +# Copyright 2006 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 2, 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., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# + +include $(top_srcdir)/Makefile.common + +EXTRA_DIST = run_tests.in + +TESTS = run_tests + +noinst_PYTHON = qa_test_coding_1.py qa_test_coding_2.py + +grpython_PYTHON = + +MOSTLYCLEANFILES = *.pyc *~ run_tests diff --git a/gr-error-correcting-codes/src/python/qa_test_coding_1.py b/gr-error-correcting-codes/src/python/qa_test_coding_1.py new file mode 100755 index 0000000000..90c479dffc --- /dev/null +++ b/gr-error-correcting-codes/src/python/qa_test_coding_1.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python +# +# Copyright 2004,2005 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 2, 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., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# + +from gnuradio import gr, audio +from gnuradio.eng_option import eng_option +from optparse import OptionParser +# must be imported from local directory so that make check +# can run before installation +import ecc + +class my_graph(gr.flow_graph): + + def __init__(self): + gr.flow_graph.__init__(self) + + parser = OptionParser(option_class=eng_option) + parser.add_option("-O", "--audio-output", type="string", default="", + help="pcm output device name. E.g., hw:0,0 or /dev/dsp") + parser.add_option("-r", "--sample-rate", type="eng_float", default=48000, + help="set sample rate to RATE (48000)") + (options, args) = parser.parse_args () + if len(args) != 0: + parser.print_help() + raise SystemExit, 1 + + sample_rate = int(options.sample_rate) + audio_option = options.audio_output + src = audio.source (sample_rate, audio_option) + src_out_chan = src.output_signature().max_streams() + dst = audio.sink (sample_rate, str(src_out_chan)) + dst_in_chan = dst.input_signature().max_streams() + audio_el_size = src.output_signature().sizeof_stream_item(1) + frame_size = 1000 + do_mux_outputs = 0 + enc_code_in_chan = src_out_chan + code_generators = [05, 06] #, 03, 04] # , 0, 07] + enc_code_out_chan = len (code_generators) / enc_code_in_chan + do_termination = 1 + + if do_mux_outputs == 1: + enc_dec_chan = 1 + else: + enc_dec_chan = enc_code_out_chan + + ss_enc = ecc.streams_encode_convolutional (frame_size, + enc_code_in_chan, + enc_code_out_chan, + code_generators, + do_termination) +# for now + ss2s = gr.streams_to_stream (1, enc_dec_chan); + ns = gr.null_sink (1); +# end for now + +# ss_dec = error-correcting-codes.frames_to_streams (audio_el_size, 1, 1000) + + for i in range (src_out_chan): + self.connect ((src, i), (ss_enc, i)) +# for now + for i in range (enc_dec_chan): + self.connect ((ss_enc, i), (ss2s, i)) + self.connect (ss2s, ns) +# end for now + +# for i in range (enc_dec_chan): +# self.connect ((ss_enc, i), (ss_dec, i)) + +# for i in range (dst_in_chan): +# self.connect ((ss_dec, i), (dst, i)) + +if __name__ == '__main__': + try: + my_graph().run() + except KeyboardInterrupt: + pass diff --git a/gr-error-correcting-codes/src/python/qa_test_coding_2.py b/gr-error-correcting-codes/src/python/qa_test_coding_2.py new file mode 100755 index 0000000000..1ddd50c2b6 --- /dev/null +++ b/gr-error-correcting-codes/src/python/qa_test_coding_2.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python +# +# Copyright 2006 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 2, 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., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# + +from gnuradio import gr, audio +from gnuradio.eng_option import eng_option +from optparse import OptionParser +# must be imported from local directory so that make check +# can run before installation +import ecc + +class my_graph(gr.flow_graph): + + def __init__(self): + gr.flow_graph.__init__(self) + + parser = OptionParser(option_class=eng_option) + parser.add_option("-O", "--audio-output", type="string", default="", + help="pcm output device name. E.g., hw:0,0 or /dev/dsp") + parser.add_option("-r", "--sample-rate", type="eng_float", default=48000, + help="set sample rate to RATE (48000)") + (options, args) = parser.parse_args () + if len(args) != 0: + parser.print_help() + raise SystemExit, 1 + + sample_rate = int(options.sample_rate) + audio_option = options.audio_output + src = audio.source (sample_rate, audio_option) + enc_chan_in = 2 + src_out_chan = src.output_signature().max_streams() + dst = audio.sink (sample_rate, str(enc_chan_in)) + dst_in_chan = dst.input_signature().max_streams() + audio_el_size = dst.input_signature().sizeof_stream_item(0) + frame_size = 10 + enc_code_in_chan = enc_chan_in + code_generators = [05, 06] #, 03, 04] #, 0, 07] + enc_code_out_chan = len (code_generators) / enc_code_in_chan + do_termination = 1 + + ss_enc = ecc.streams_encode_convolutional (frame_size, + enc_code_in_chan, + enc_code_out_chan, + code_generators, + do_termination) + + for i in range (src_out_chan): + p2up = gr.packed_to_unpacked_bb (1, 1) + self.connect ((src, i), p2up, (ss_enc, i)) + + tau_bits = 0 # 0 -> decode all first + ss_dec = error-correcting-codes.dec_blk_conv_soft_full (audio_el_size, + frame_size, + do_termination, + do_mux_outputs, + enc_code_in_chan, + enc_code_out_chan, + code_generators) + up2bf0 = gr.chunks_to_symbols_bf ([1.0, -1.0]) + self.connect ((ss_enc, 0), p2up0, up2bf0, (ss_dec, 0)) + if enc_dec_chan > 1: + p2up1 = gr.packed_to_unpacked_bb (1, 1) + up2bf1 = gr.chunks_to_symbols_bf ([1.0, -1.0]) + self.connect ((ss_enc, 1), p2up1, up2bf1, (ss_dec, 1)) + + for i in range (dst_in_chan): + self.connect ((ss_dec, i), (dst, i)) + +if __name__ == '__main__': + try: + my_graph().run() + except KeyboardInterrupt: + pass diff --git a/gr-error-correcting-codes/src/python/qa_test_encoder_convolutional_1.py b/gr-error-correcting-codes/src/python/qa_test_encoder_convolutional_1.py new file mode 100755 index 0000000000..0eeca99285 --- /dev/null +++ b/gr-error-correcting-codes/src/python/qa_test_encoder_convolutional_1.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# +# Copyright 2004,2005 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 2, 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., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# + +from gnuradio import gr, audio +from gnuradio.eng_option import eng_option +from optparse import OptionParser +# must be imported from local directory so that make check +# can run before installation +import ecc + +class my_graph(gr.flow_graph): + + def __init__(self): + gr.flow_graph.__init__(self) + + parser = OptionParser(option_class=eng_option) + parser.add_option("-O", "--audio-output", type="string", default="", + help="pcm output device name. E.g., hw:0,0 or /dev/dsp") + parser.add_option("-r", "--sample-rate", type="eng_float", default=48000, + help="set sample rate to RATE (48000)") + (options, args) = parser.parse_args () + if len(args) != 0: + parser.print_help() + raise SystemExit, 1 + + sample_rate = int(options.sample_rate) + audio_option = options.audio_output + src = audio.source (sample_rate, audio_option) + src_out_chan = src.output_signature().max_streams() + dst = audio.sink (sample_rate, str(src_out_chan)) + dst_in_chan = dst.input_signature().max_streams() + audio_el_size = src.output_signature().sizeof_stream_item(1) + frame_size = 10 + enc_code_in_chan = src_out_chan + code_generators = [05, 06] #, 03, 04] # , 0, 07] + enc_code_out_chan = len (code_generators) / enc_code_in_chan + do_termination = 1 + + ss_enc = ecc.streams_encode_convolutional (frame_size, + enc_code_in_chan, + enc_code_out_chan, + code_generators, + do_termination) + for i in range (enc_code_in_chan): + self.connect ((src, i), (ss_enc, i)) + + for i in range (enc_code_out_chan): + ns = gr.null_sink (1) + self.connect ((ss_enc, i), ns) + +if __name__ == '__main__': + try: + my_graph().run() + except KeyboardInterrupt: + pass diff --git a/gr-error-correcting-codes/src/python/qa_test_encoder_convolutional_2.py b/gr-error-correcting-codes/src/python/qa_test_encoder_convolutional_2.py new file mode 100755 index 0000000000..f2ccadb1ce --- /dev/null +++ b/gr-error-correcting-codes/src/python/qa_test_encoder_convolutional_2.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python +# +# Copyright 2006 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 2, 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., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# + +from gnuradio import gr +from gnuradio.eng_option import eng_option +import ecc + +def main (): + e1 = ecc.streams_encode_convolutional (100, 3, 2, [1, 0, 5, 0, 1, 6]) + + e2 = ecc.streams_encode_convolutional (100, 2, 3, [1, 0, 0, 1, 5, 6]) + + e3 = ecc.streams_encode_convolutional_feedback (100, 2, 3, [1, 7, 0, 1, 5, 6], [1, 1, 1, 1, 017, 017]) + +if __name__ == '__main__': + main () diff --git a/gr-error-correcting-codes/src/python/run_tests.in b/gr-error-correcting-codes/src/python/run_tests.in new file mode 100644 index 0000000000..4618f76c43 --- /dev/null +++ b/gr-error-correcting-codes/src/python/run_tests.in @@ -0,0 +1,47 @@ +#!/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@/gr-error-correcting-codes/src/lib +# Where to look in the src tree for swig generated python code +libsrc=@abs_top_srcdir@/gr-error-correcting-codes/src/lib +# Where to look in the src tree for hand written python code +py=@abs_top_srcdir@/gr-error-correcting-codes/src/python + +# Where to look for GNU Radio python modules in current build tree +# FIXME this is wrong on a distcheck. We really need to ask gnuradio-core +# where it put its python files. +grpythonbld=@abs_top_builddir@/gnuradio-core/src/python/:@abs_top_builddir@/gnuradio-core/src/lib/swig/:@abs_top_builddir@/gnuradio-core/src/lib/swig/.libs + +PYTHONPATH="$grpythonbld:$libbld:$libbld/.libs:$libsrc:$py:$PYTHONPATH" +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 |