diff options
Diffstat (limited to 'gr-utils')
-rw-r--r-- | gr-utils/CMakeLists.txt | 4 | ||||
-rw-r--r-- | gr-utils/python/CMakeLists.txt (renamed from gr-utils/src/python/CMakeLists.txt) | 1 | ||||
-rw-r--r-- | gr-utils/python/README.plot (renamed from gr-utils/src/python/README.plot) | 0 | ||||
-rwxr-xr-x | gr-utils/python/gr_modtool (renamed from gr-utils/src/python/gr_modtool) | 0 | ||||
-rwxr-xr-x | gr-utils/python/gr_plot_char (renamed from gr-utils/src/python/gr_plot_char) | 0 | ||||
-rwxr-xr-x | gr-utils/python/gr_plot_const (renamed from gr-utils/src/python/gr_plot_const) | 0 | ||||
-rw-r--r-- | gr-utils/python/gr_plot_fft (renamed from gr-utils/src/python/gr_plot_fft) | 0 | ||||
-rwxr-xr-x | gr-utils/python/gr_plot_fft_c (renamed from gr-utils/src/python/gr_plot_fft_c) | 0 | ||||
-rwxr-xr-x | gr-utils/python/gr_plot_fft_f (renamed from gr-utils/src/python/gr_plot_fft_f) | 0 | ||||
-rwxr-xr-x | gr-utils/python/gr_plot_float (renamed from gr-utils/src/python/gr_plot_float) | 0 | ||||
-rwxr-xr-x | gr-utils/python/gr_plot_int (renamed from gr-utils/src/python/gr_plot_int) | 0 | ||||
-rwxr-xr-x | gr-utils/python/gr_plot_iq (renamed from gr-utils/src/python/gr_plot_iq) | 0 | ||||
-rw-r--r-- | gr-utils/python/gr_plot_psd (renamed from gr-utils/src/python/gr_plot_psd) | 0 | ||||
-rwxr-xr-x | gr-utils/python/gr_plot_psd_c (renamed from gr-utils/src/python/gr_plot_psd_c) | 0 | ||||
-rwxr-xr-x | gr-utils/python/gr_plot_psd_f (renamed from gr-utils/src/python/gr_plot_psd_f) | 0 | ||||
-rwxr-xr-x | gr-utils/python/gr_plot_qt (renamed from gr-utils/src/python/gr_plot_qt) | 0 | ||||
-rwxr-xr-x | gr-utils/python/gr_plot_short (renamed from gr-utils/src/python/gr_plot_short) | 0 | ||||
-rw-r--r-- | gr-utils/python/gr_read_file_metadata (renamed from gr-utils/src/python/gr_read_file_metadata) | 4 | ||||
-rwxr-xr-x | gr-utils/python/grcc (renamed from gr-utils/src/python/grcc) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/CMakeLists.txt (renamed from gr-utils/src/python/modtool/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/README.modtool (renamed from gr-utils/src/python/modtool/README.modtool) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/__init__.py (renamed from gr-utils/src/python/modtool/__init__.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/cmakefile_editor.py (renamed from gr-utils/src/python/modtool/cmakefile_editor.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/code_generator.py (renamed from gr-utils/src/python/modtool/code_generator.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/CMakeLists.txt (renamed from gr-utils/src/python/modtool/gr-newmod/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/apps/CMakeLists.txt (renamed from gr-utils/src/python/modtool/gr-newmod/apps/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/cmake/Modules/CMakeParseArgumentsCopy.cmake (renamed from gr-utils/src/python/modtool/gr-newmod/cmake/Modules/CMakeParseArgumentsCopy.cmake) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/cmake/Modules/FindCppUnit.cmake (renamed from gr-utils/src/python/modtool/gr-newmod/cmake/Modules/FindCppUnit.cmake) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGnuradioCore.cmake (renamed from gr-utils/src/python/modtool/gr-newmod/cmake/Modules/FindGnuradioCore.cmake) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGruel.cmake (renamed from gr-utils/src/python/modtool/gr-newmod/cmake/Modules/FindGruel.cmake) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/cmake/Modules/GrMiscUtils.cmake (renamed from gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrMiscUtils.cmake) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/cmake/Modules/GrPlatform.cmake (renamed from gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrPlatform.cmake) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/cmake/Modules/GrPython.cmake (renamed from gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrPython.cmake) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/cmake/Modules/GrSwig.cmake (renamed from gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrSwig.cmake) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/cmake/Modules/GrTest.cmake (renamed from gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrTest.cmake) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/cmake/cmake_uninstall.cmake.in (renamed from gr-utils/src/python/modtool/gr-newmod/cmake/cmake_uninstall.cmake.in) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/CMakeLists.txt (renamed from gr-utils/src/python/modtool/gr-newmod/docs/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/README.howto (renamed from gr-utils/src/python/modtool/gr-newmod/docs/README.howto) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/CMakeLists.txt (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/Doxyfile.in (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/Doxyfile.in) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/Doxyfile.swig_doc.in (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/Doxyfile.swig_doc.in) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/__init__.py (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/__init__.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/base.py (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/base.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/doxyindex.py (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/doxyindex.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/__init__.py (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/__init__.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/compound.py (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/compound.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/compoundsuper.py (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/compoundsuper.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/index.py (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/index.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/indexsuper.py (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/indexsuper.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/text.py (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/text.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/other/group_defs.dox (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/other/group_defs.dox) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/other/main_page.dox (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/other/main_page.dox) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/docs/doxygen/swig_doc.py (renamed from gr-utils/src/python/modtool/gr-newmod/docs/doxygen/swig_doc.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/grc/CMakeLists.txt (renamed from gr-utils/src/python/modtool/gr-newmod/grc/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/include/howto/CMakeLists.txt (renamed from gr-utils/src/python/modtool/gr-newmod/include/howto/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/include/howto/api.h (renamed from gr-utils/src/python/modtool/gr-newmod/include/howto/api.h) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/lib/CMakeLists.txt (renamed from gr-utils/src/python/modtool/gr-newmod/lib/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/lib/qa_howto.cc (renamed from gr-utils/src/python/modtool/gr-newmod/lib/qa_howto.cc) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/lib/qa_howto.h (renamed from gr-utils/src/python/modtool/gr-newmod/lib/qa_howto.h) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/lib/test_howto.cc (renamed from gr-utils/src/python/modtool/gr-newmod/lib/test_howto.cc) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/python/CMakeLists.txt (renamed from gr-utils/src/python/modtool/gr-newmod/python/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/python/__init__.py (renamed from gr-utils/src/python/modtool/gr-newmod/python/__init__.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/swig/CMakeLists.txt (renamed from gr-utils/src/python/modtool/gr-newmod/swig/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/gr-newmod/swig/howto_swig.i (renamed from gr-utils/src/python/modtool/gr-newmod/swig/howto_swig.i) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/grc_xml_generator.py (renamed from gr-utils/src/python/modtool/grc_xml_generator.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/modtool.conf.in (renamed from gr-utils/src/python/modtool/modtool.conf.in) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/modtool_add.py (renamed from gr-utils/src/python/modtool/modtool_add.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/modtool_base.py (renamed from gr-utils/src/python/modtool/modtool_base.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/modtool_disable.py (renamed from gr-utils/src/python/modtool/modtool_disable.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/modtool_help.py (renamed from gr-utils/src/python/modtool/modtool_help.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/modtool_info.py (renamed from gr-utils/src/python/modtool/modtool_info.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/modtool_makexml.py (renamed from gr-utils/src/python/modtool/modtool_makexml.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/modtool_newmod.py (renamed from gr-utils/src/python/modtool/modtool_newmod.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/modtool_rm.py (renamed from gr-utils/src/python/modtool/modtool_rm.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/parser_cc_block.py (renamed from gr-utils/src/python/modtool/parser_cc_block.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/templates.py (renamed from gr-utils/src/python/modtool/templates.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/modtool/util_functions.py (renamed from gr-utils/src/python/modtool/util_functions.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/plot_data.py (renamed from gr-utils/src/python/plot_data.py) | 3 | ||||
-rwxr-xr-x | gr-utils/python/plot_fft_base.py (renamed from gr-utils/src/python/plot_fft_base.py) | 0 | ||||
-rwxr-xr-x | gr-utils/python/plot_psd_base.py (renamed from gr-utils/src/python/plot_psd_base.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/pyqt_filter.py (renamed from gr-utils/src/python/pyqt_filter.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/pyqt_filter.ui (renamed from gr-utils/src/python/pyqt_filter.ui) | 0 | ||||
-rw-r--r-- | gr-utils/python/pyqt_plot.py (renamed from gr-utils/src/python/pyqt_plot.py) | 0 | ||||
-rw-r--r-- | gr-utils/python/pyqt_plot.ui (renamed from gr-utils/src/python/pyqt_plot.ui) | 0 | ||||
-rwxr-xr-x | gr-utils/src/python/gr_filter_design | 874 |
85 files changed, 7 insertions, 879 deletions
diff --git a/gr-utils/CMakeLists.txt b/gr-utils/CMakeLists.txt index 50ec7e86cf..e4d64d54c0 100644 --- a/gr-utils/CMakeLists.txt +++ b/gr-utils/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2011 Free Software Foundation, Inc. +# Copyright 2011,2012 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -48,7 +48,7 @@ CPACK_COMPONENT("utils" ######################################################################## # Add subdirectories ######################################################################## -add_subdirectory(src/python) +add_subdirectory(python) endif(ENABLE_GR_UTILS) diff --git a/gr-utils/src/python/CMakeLists.txt b/gr-utils/python/CMakeLists.txt index ef4e66d13f..fc21dc654d 100644 --- a/gr-utils/src/python/CMakeLists.txt +++ b/gr-utils/python/CMakeLists.txt @@ -49,7 +49,6 @@ GR_PYTHON_INSTALL( gr_plot_iq gr_plot_short gr_plot_qt - gr_filter_design gr_read_file_metadata grcc DESTINATION ${GR_RUNTIME_DIR} diff --git a/gr-utils/src/python/README.plot b/gr-utils/python/README.plot index 60f14c669c..60f14c669c 100644 --- a/gr-utils/src/python/README.plot +++ b/gr-utils/python/README.plot diff --git a/gr-utils/src/python/gr_modtool b/gr-utils/python/gr_modtool index 8c5c710aff..8c5c710aff 100755 --- a/gr-utils/src/python/gr_modtool +++ b/gr-utils/python/gr_modtool diff --git a/gr-utils/src/python/gr_plot_char b/gr-utils/python/gr_plot_char index a2b93a63c6..a2b93a63c6 100755 --- a/gr-utils/src/python/gr_plot_char +++ b/gr-utils/python/gr_plot_char diff --git a/gr-utils/src/python/gr_plot_const b/gr-utils/python/gr_plot_const index 749ad035b5..749ad035b5 100755 --- a/gr-utils/src/python/gr_plot_const +++ b/gr-utils/python/gr_plot_const diff --git a/gr-utils/src/python/gr_plot_fft b/gr-utils/python/gr_plot_fft index 4343481645..4343481645 100644 --- a/gr-utils/src/python/gr_plot_fft +++ b/gr-utils/python/gr_plot_fft diff --git a/gr-utils/src/python/gr_plot_fft_c b/gr-utils/python/gr_plot_fft_c index 43e808d95a..43e808d95a 100755 --- a/gr-utils/src/python/gr_plot_fft_c +++ b/gr-utils/python/gr_plot_fft_c diff --git a/gr-utils/src/python/gr_plot_fft_f b/gr-utils/python/gr_plot_fft_f index dee9b17dea..dee9b17dea 100755 --- a/gr-utils/src/python/gr_plot_fft_f +++ b/gr-utils/python/gr_plot_fft_f diff --git a/gr-utils/src/python/gr_plot_float b/gr-utils/python/gr_plot_float index 22806e48ae..22806e48ae 100755 --- a/gr-utils/src/python/gr_plot_float +++ b/gr-utils/python/gr_plot_float diff --git a/gr-utils/src/python/gr_plot_int b/gr-utils/python/gr_plot_int index 355ddf0189..355ddf0189 100755 --- a/gr-utils/src/python/gr_plot_int +++ b/gr-utils/python/gr_plot_int diff --git a/gr-utils/src/python/gr_plot_iq b/gr-utils/python/gr_plot_iq index bf8077b6b4..bf8077b6b4 100755 --- a/gr-utils/src/python/gr_plot_iq +++ b/gr-utils/python/gr_plot_iq diff --git a/gr-utils/src/python/gr_plot_psd b/gr-utils/python/gr_plot_psd index 059ca6b645..059ca6b645 100644 --- a/gr-utils/src/python/gr_plot_psd +++ b/gr-utils/python/gr_plot_psd diff --git a/gr-utils/src/python/gr_plot_psd_c b/gr-utils/python/gr_plot_psd_c index fff2bff0f2..fff2bff0f2 100755 --- a/gr-utils/src/python/gr_plot_psd_c +++ b/gr-utils/python/gr_plot_psd_c diff --git a/gr-utils/src/python/gr_plot_psd_f b/gr-utils/python/gr_plot_psd_f index ec67994797..ec67994797 100755 --- a/gr-utils/src/python/gr_plot_psd_f +++ b/gr-utils/python/gr_plot_psd_f diff --git a/gr-utils/src/python/gr_plot_qt b/gr-utils/python/gr_plot_qt index 153359f0c6..153359f0c6 100755 --- a/gr-utils/src/python/gr_plot_qt +++ b/gr-utils/python/gr_plot_qt diff --git a/gr-utils/src/python/gr_plot_short b/gr-utils/python/gr_plot_short index 702a2a94a6..702a2a94a6 100755 --- a/gr-utils/src/python/gr_plot_short +++ b/gr-utils/python/gr_plot_short diff --git a/gr-utils/src/python/gr_read_file_metadata b/gr-utils/python/gr_read_file_metadata index cf0cd5b116..3bc448b04e 100644 --- a/gr-utils/src/python/gr_read_file_metadata +++ b/gr-utils/python/gr_read_file_metadata @@ -40,7 +40,7 @@ def main(filename, detached=False): # Convert from string to PMT (should be a dictionary) try: - header = pmt.pmt_deserialize_str(header_str) + header = pmt.deserialize_str(header_str) except RuntimeError: sys.stderr.write("Could not deserialize header: invalid or corrupt data file.\n") sys.exit(1) @@ -54,7 +54,7 @@ def main(filename, detached=False): break try: - extra = pmt.pmt_deserialize_str(extra_str) + extra = pmt.deserialize_str(extra_str) except RuntimeError: sys.stderr.write("Could not deserialize extras: invalid or corrupt data file.\n") sys.exit(1) diff --git a/gr-utils/src/python/grcc b/gr-utils/python/grcc index 7e5665dc05..7e5665dc05 100755 --- a/gr-utils/src/python/grcc +++ b/gr-utils/python/grcc diff --git a/gr-utils/src/python/modtool/CMakeLists.txt b/gr-utils/python/modtool/CMakeLists.txt index 7647c86f67..7647c86f67 100644 --- a/gr-utils/src/python/modtool/CMakeLists.txt +++ b/gr-utils/python/modtool/CMakeLists.txt diff --git a/gr-utils/src/python/modtool/README.modtool b/gr-utils/python/modtool/README.modtool index 84c2e66c11..84c2e66c11 100644 --- a/gr-utils/src/python/modtool/README.modtool +++ b/gr-utils/python/modtool/README.modtool diff --git a/gr-utils/src/python/modtool/__init__.py b/gr-utils/python/modtool/__init__.py index a242722ab4..a242722ab4 100644 --- a/gr-utils/src/python/modtool/__init__.py +++ b/gr-utils/python/modtool/__init__.py diff --git a/gr-utils/src/python/modtool/cmakefile_editor.py b/gr-utils/python/modtool/cmakefile_editor.py index 3d90b8d163..3d90b8d163 100644 --- a/gr-utils/src/python/modtool/cmakefile_editor.py +++ b/gr-utils/python/modtool/cmakefile_editor.py diff --git a/gr-utils/src/python/modtool/code_generator.py b/gr-utils/python/modtool/code_generator.py index 525b3d1e9a..525b3d1e9a 100644 --- a/gr-utils/src/python/modtool/code_generator.py +++ b/gr-utils/python/modtool/code_generator.py diff --git a/gr-utils/src/python/modtool/gr-newmod/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/CMakeLists.txt index deea791f80..deea791f80 100644 --- a/gr-utils/src/python/modtool/gr-newmod/CMakeLists.txt +++ b/gr-utils/python/modtool/gr-newmod/CMakeLists.txt diff --git a/gr-utils/src/python/modtool/gr-newmod/apps/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/apps/CMakeLists.txt index c837d77f67..c837d77f67 100644 --- a/gr-utils/src/python/modtool/gr-newmod/apps/CMakeLists.txt +++ b/gr-utils/python/modtool/gr-newmod/apps/CMakeLists.txt diff --git a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/CMakeParseArgumentsCopy.cmake b/gr-utils/python/modtool/gr-newmod/cmake/Modules/CMakeParseArgumentsCopy.cmake index 7ce4c49ae5..7ce4c49ae5 100644 --- a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/CMakeParseArgumentsCopy.cmake +++ b/gr-utils/python/modtool/gr-newmod/cmake/Modules/CMakeParseArgumentsCopy.cmake diff --git a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/FindCppUnit.cmake b/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindCppUnit.cmake index 9af308f84b..9af308f84b 100644 --- a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/FindCppUnit.cmake +++ b/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindCppUnit.cmake diff --git a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/FindGnuradioCore.cmake b/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGnuradioCore.cmake index 3773588a70..3773588a70 100644 --- a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/FindGnuradioCore.cmake +++ b/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGnuradioCore.cmake diff --git a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/FindGruel.cmake b/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGruel.cmake index 58dff70444..58dff70444 100644 --- a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/FindGruel.cmake +++ b/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGruel.cmake diff --git a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrMiscUtils.cmake b/gr-utils/python/modtool/gr-newmod/cmake/Modules/GrMiscUtils.cmake index 9331d5debc..9331d5debc 100644 --- a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrMiscUtils.cmake +++ b/gr-utils/python/modtool/gr-newmod/cmake/Modules/GrMiscUtils.cmake diff --git a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrPlatform.cmake b/gr-utils/python/modtool/gr-newmod/cmake/Modules/GrPlatform.cmake index a2e4f3b34e..a2e4f3b34e 100644 --- a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrPlatform.cmake +++ b/gr-utils/python/modtool/gr-newmod/cmake/Modules/GrPlatform.cmake diff --git a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrPython.cmake b/gr-utils/python/modtool/gr-newmod/cmake/Modules/GrPython.cmake index efdddf371f..efdddf371f 100644 --- a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrPython.cmake +++ b/gr-utils/python/modtool/gr-newmod/cmake/Modules/GrPython.cmake diff --git a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrSwig.cmake b/gr-utils/python/modtool/gr-newmod/cmake/Modules/GrSwig.cmake index 6ba5ee3a5c..6ba5ee3a5c 100644 --- a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrSwig.cmake +++ b/gr-utils/python/modtool/gr-newmod/cmake/Modules/GrSwig.cmake diff --git a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrTest.cmake b/gr-utils/python/modtool/gr-newmod/cmake/Modules/GrTest.cmake index 6174c034e9..6174c034e9 100644 --- a/gr-utils/src/python/modtool/gr-newmod/cmake/Modules/GrTest.cmake +++ b/gr-utils/python/modtool/gr-newmod/cmake/Modules/GrTest.cmake diff --git a/gr-utils/src/python/modtool/gr-newmod/cmake/cmake_uninstall.cmake.in b/gr-utils/python/modtool/gr-newmod/cmake/cmake_uninstall.cmake.in index 9ae1ae4bd6..9ae1ae4bd6 100644 --- a/gr-utils/src/python/modtool/gr-newmod/cmake/cmake_uninstall.cmake.in +++ b/gr-utils/python/modtool/gr-newmod/cmake/cmake_uninstall.cmake.in diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/docs/CMakeLists.txt index f16fbf6db4..f16fbf6db4 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/CMakeLists.txt +++ b/gr-utils/python/modtool/gr-newmod/docs/CMakeLists.txt diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/README.howto b/gr-utils/python/modtool/gr-newmod/docs/README.howto index a0a6c0f19d..a0a6c0f19d 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/README.howto +++ b/gr-utils/python/modtool/gr-newmod/docs/README.howto diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/docs/doxygen/CMakeLists.txt index 1b4479929b..1b4479929b 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/CMakeLists.txt +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/CMakeLists.txt diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/Doxyfile.in b/gr-utils/python/modtool/gr-newmod/docs/doxygen/Doxyfile.in index cb6a913bbe..cb6a913bbe 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/Doxyfile.in +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/Doxyfile.in diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/Doxyfile.swig_doc.in b/gr-utils/python/modtool/gr-newmod/docs/doxygen/Doxyfile.swig_doc.in index 50b8aa81d6..50b8aa81d6 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/Doxyfile.swig_doc.in +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/Doxyfile.swig_doc.in diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/__init__.py b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/__init__.py index 5cd0b3c6c5..5cd0b3c6c5 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/__init__.py +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/__init__.py diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/base.py b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/base.py index e8f026ab90..e8f026ab90 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/base.py +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/base.py diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/doxyindex.py b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/doxyindex.py index 0132ab86fd..0132ab86fd 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/doxyindex.py +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/doxyindex.py diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/__init__.py b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/__init__.py index 39823979f6..39823979f6 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/__init__.py +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/__init__.py diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/compound.py b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/compound.py index 1522ac23f1..1522ac23f1 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/compound.py +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/compound.py diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/compoundsuper.py b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/compoundsuper.py index 6255dda163..6255dda163 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/compoundsuper.py +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/compoundsuper.py diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/index.py b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/index.py index 7a70e14a1a..7a70e14a1a 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/index.py +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/index.py diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/indexsuper.py b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/indexsuper.py index a991530198..a991530198 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/indexsuper.py +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/generated/indexsuper.py diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/text.py b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/text.py index 629edd180d..629edd180d 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/doxyxml/text.py +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/doxyxml/text.py diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/other/group_defs.dox b/gr-utils/python/modtool/gr-newmod/docs/doxygen/other/group_defs.dox index 708f8c6d98..708f8c6d98 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/other/group_defs.dox +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/other/group_defs.dox diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/other/main_page.dox b/gr-utils/python/modtool/gr-newmod/docs/doxygen/other/main_page.dox index 6357044912..6357044912 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/other/main_page.dox +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/other/main_page.dox diff --git a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/swig_doc.py b/gr-utils/python/modtool/gr-newmod/docs/doxygen/swig_doc.py index 4e1ce2e475..4e1ce2e475 100644 --- a/gr-utils/src/python/modtool/gr-newmod/docs/doxygen/swig_doc.py +++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/swig_doc.py diff --git a/gr-utils/src/python/modtool/gr-newmod/grc/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/grc/CMakeLists.txt index d776de7523..d776de7523 100644 --- a/gr-utils/src/python/modtool/gr-newmod/grc/CMakeLists.txt +++ b/gr-utils/python/modtool/gr-newmod/grc/CMakeLists.txt diff --git a/gr-utils/src/python/modtool/gr-newmod/include/howto/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/include/howto/CMakeLists.txt index 1cfb5a6eac..1cfb5a6eac 100644 --- a/gr-utils/src/python/modtool/gr-newmod/include/howto/CMakeLists.txt +++ b/gr-utils/python/modtool/gr-newmod/include/howto/CMakeLists.txt diff --git a/gr-utils/src/python/modtool/gr-newmod/include/howto/api.h b/gr-utils/python/modtool/gr-newmod/include/howto/api.h index 5263a1cf70..5263a1cf70 100644 --- a/gr-utils/src/python/modtool/gr-newmod/include/howto/api.h +++ b/gr-utils/python/modtool/gr-newmod/include/howto/api.h diff --git a/gr-utils/src/python/modtool/gr-newmod/lib/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/lib/CMakeLists.txt index a9df565cf2..a9df565cf2 100644 --- a/gr-utils/src/python/modtool/gr-newmod/lib/CMakeLists.txt +++ b/gr-utils/python/modtool/gr-newmod/lib/CMakeLists.txt diff --git a/gr-utils/src/python/modtool/gr-newmod/lib/qa_howto.cc b/gr-utils/python/modtool/gr-newmod/lib/qa_howto.cc index f86aed4aa1..f86aed4aa1 100644 --- a/gr-utils/src/python/modtool/gr-newmod/lib/qa_howto.cc +++ b/gr-utils/python/modtool/gr-newmod/lib/qa_howto.cc diff --git a/gr-utils/src/python/modtool/gr-newmod/lib/qa_howto.h b/gr-utils/python/modtool/gr-newmod/lib/qa_howto.h index 8eff956b61..8eff956b61 100644 --- a/gr-utils/src/python/modtool/gr-newmod/lib/qa_howto.h +++ b/gr-utils/python/modtool/gr-newmod/lib/qa_howto.h diff --git a/gr-utils/src/python/modtool/gr-newmod/lib/test_howto.cc b/gr-utils/python/modtool/gr-newmod/lib/test_howto.cc index bf344265d7..bf344265d7 100644 --- a/gr-utils/src/python/modtool/gr-newmod/lib/test_howto.cc +++ b/gr-utils/python/modtool/gr-newmod/lib/test_howto.cc diff --git a/gr-utils/src/python/modtool/gr-newmod/python/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/python/CMakeLists.txt index 9901854c8f..9901854c8f 100644 --- a/gr-utils/src/python/modtool/gr-newmod/python/CMakeLists.txt +++ b/gr-utils/python/modtool/gr-newmod/python/CMakeLists.txt diff --git a/gr-utils/src/python/modtool/gr-newmod/python/__init__.py b/gr-utils/python/modtool/gr-newmod/python/__init__.py index 575cbfc222..575cbfc222 100644 --- a/gr-utils/src/python/modtool/gr-newmod/python/__init__.py +++ b/gr-utils/python/modtool/gr-newmod/python/__init__.py diff --git a/gr-utils/src/python/modtool/gr-newmod/swig/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/swig/CMakeLists.txt index 1e3e59e2c4..1e3e59e2c4 100644 --- a/gr-utils/src/python/modtool/gr-newmod/swig/CMakeLists.txt +++ b/gr-utils/python/modtool/gr-newmod/swig/CMakeLists.txt diff --git a/gr-utils/src/python/modtool/gr-newmod/swig/howto_swig.i b/gr-utils/python/modtool/gr-newmod/swig/howto_swig.i index 4627d48d34..4627d48d34 100644 --- a/gr-utils/src/python/modtool/gr-newmod/swig/howto_swig.i +++ b/gr-utils/python/modtool/gr-newmod/swig/howto_swig.i diff --git a/gr-utils/src/python/modtool/grc_xml_generator.py b/gr-utils/python/modtool/grc_xml_generator.py index 7ccd443196..7ccd443196 100644 --- a/gr-utils/src/python/modtool/grc_xml_generator.py +++ b/gr-utils/python/modtool/grc_xml_generator.py diff --git a/gr-utils/src/python/modtool/modtool.conf.in b/gr-utils/python/modtool/modtool.conf.in index 8b3df1b9cf..8b3df1b9cf 100644 --- a/gr-utils/src/python/modtool/modtool.conf.in +++ b/gr-utils/python/modtool/modtool.conf.in diff --git a/gr-utils/src/python/modtool/modtool_add.py b/gr-utils/python/modtool/modtool_add.py index e1d61cf0fb..e1d61cf0fb 100644 --- a/gr-utils/src/python/modtool/modtool_add.py +++ b/gr-utils/python/modtool/modtool_add.py diff --git a/gr-utils/src/python/modtool/modtool_base.py b/gr-utils/python/modtool/modtool_base.py index 3f8f2bc3c7..3f8f2bc3c7 100644 --- a/gr-utils/src/python/modtool/modtool_base.py +++ b/gr-utils/python/modtool/modtool_base.py diff --git a/gr-utils/src/python/modtool/modtool_disable.py b/gr-utils/python/modtool/modtool_disable.py index 36725e5578..36725e5578 100644 --- a/gr-utils/src/python/modtool/modtool_disable.py +++ b/gr-utils/python/modtool/modtool_disable.py diff --git a/gr-utils/src/python/modtool/modtool_help.py b/gr-utils/python/modtool/modtool_help.py index 76d9fd28bd..76d9fd28bd 100644 --- a/gr-utils/src/python/modtool/modtool_help.py +++ b/gr-utils/python/modtool/modtool_help.py diff --git a/gr-utils/src/python/modtool/modtool_info.py b/gr-utils/python/modtool/modtool_info.py index 680bd41b99..680bd41b99 100644 --- a/gr-utils/src/python/modtool/modtool_info.py +++ b/gr-utils/python/modtool/modtool_info.py diff --git a/gr-utils/src/python/modtool/modtool_makexml.py b/gr-utils/python/modtool/modtool_makexml.py index 777cc09e1f..777cc09e1f 100644 --- a/gr-utils/src/python/modtool/modtool_makexml.py +++ b/gr-utils/python/modtool/modtool_makexml.py diff --git a/gr-utils/src/python/modtool/modtool_newmod.py b/gr-utils/python/modtool/modtool_newmod.py index 0613d5fbe1..0613d5fbe1 100644 --- a/gr-utils/src/python/modtool/modtool_newmod.py +++ b/gr-utils/python/modtool/modtool_newmod.py diff --git a/gr-utils/src/python/modtool/modtool_rm.py b/gr-utils/python/modtool/modtool_rm.py index 32dfee4806..32dfee4806 100644 --- a/gr-utils/src/python/modtool/modtool_rm.py +++ b/gr-utils/python/modtool/modtool_rm.py diff --git a/gr-utils/src/python/modtool/parser_cc_block.py b/gr-utils/python/modtool/parser_cc_block.py index 0d1d75f29a..0d1d75f29a 100644 --- a/gr-utils/src/python/modtool/parser_cc_block.py +++ b/gr-utils/python/modtool/parser_cc_block.py diff --git a/gr-utils/src/python/modtool/templates.py b/gr-utils/python/modtool/templates.py index 87eb9f470c..87eb9f470c 100644 --- a/gr-utils/src/python/modtool/templates.py +++ b/gr-utils/python/modtool/templates.py diff --git a/gr-utils/src/python/modtool/util_functions.py b/gr-utils/python/modtool/util_functions.py index 4ca294ac31..4ca294ac31 100644 --- a/gr-utils/src/python/modtool/util_functions.py +++ b/gr-utils/python/modtool/util_functions.py diff --git a/gr-utils/src/python/plot_data.py b/gr-utils/python/plot_data.py index 242ca2a4b0..2ae3b1d5b3 100644 --- a/gr-utils/src/python/plot_data.py +++ b/gr-utils/python/plot_data.py @@ -18,6 +18,9 @@ # the Free Software Foundation, Inc., 51 Franklin Street, # Boston, MA 02110-1301, USA. # +""" +Utility to help plotting data from files. +""" try: import scipy diff --git a/gr-utils/src/python/plot_fft_base.py b/gr-utils/python/plot_fft_base.py index 4afdc3a360..4afdc3a360 100755 --- a/gr-utils/src/python/plot_fft_base.py +++ b/gr-utils/python/plot_fft_base.py diff --git a/gr-utils/src/python/plot_psd_base.py b/gr-utils/python/plot_psd_base.py index fe3c9e12b7..fe3c9e12b7 100755 --- a/gr-utils/src/python/plot_psd_base.py +++ b/gr-utils/python/plot_psd_base.py diff --git a/gr-utils/src/python/pyqt_filter.py b/gr-utils/python/pyqt_filter.py index 0c781f2347..0c781f2347 100644 --- a/gr-utils/src/python/pyqt_filter.py +++ b/gr-utils/python/pyqt_filter.py diff --git a/gr-utils/src/python/pyqt_filter.ui b/gr-utils/python/pyqt_filter.ui index 9853352e2e..9853352e2e 100644 --- a/gr-utils/src/python/pyqt_filter.ui +++ b/gr-utils/python/pyqt_filter.ui diff --git a/gr-utils/src/python/pyqt_plot.py b/gr-utils/python/pyqt_plot.py index 5650135abf..5650135abf 100644 --- a/gr-utils/src/python/pyqt_plot.py +++ b/gr-utils/python/pyqt_plot.py diff --git a/gr-utils/src/python/pyqt_plot.ui b/gr-utils/python/pyqt_plot.ui index 55c72fda26..55c72fda26 100644 --- a/gr-utils/src/python/pyqt_plot.ui +++ b/gr-utils/python/pyqt_plot.ui diff --git a/gr-utils/src/python/gr_filter_design b/gr-utils/src/python/gr_filter_design deleted file mode 100755 index cc21ea5e76..0000000000 --- a/gr-utils/src/python/gr_filter_design +++ /dev/null @@ -1,874 +0,0 @@ -#!/usr/bin/env python - -import sys, os, re, csv -from optparse import OptionParser -from gnuradio import gr, blks2, eng_notation - -try: - import scipy - from scipy import fftpack -except ImportError: - print "Please install SciPy to run this script (http://www.scipy.org/)" - raise SystemExit, 1 - -try: - from PyQt4 import Qt, QtCore, QtGui -except ImportError: - print "Please install PyQt4 to run this script (http://www.riverbankcomputing.co.uk/software/pyqt/download)" - raise SystemExit, 1 - -try: - import PyQt4.Qwt5 as Qwt -except ImportError: - print "Please install PyQwt5 to run this script (http://pyqwt.sourceforge.net/)" - raise SystemExit, 1 - -try: - from gnuradio.pyqt_filter import Ui_MainWindow -except ImportError: - print "Could not import from pyqt_filter. Please build with \"pyuic4 pyqt_filter.ui -o pyqt_filter.py\"" - raise SystemExit, 1 - - -class gr_plot_filter(QtGui.QMainWindow): - def __init__(self, qapp, options): - QtGui.QWidget.__init__(self, None) - self.gui = Ui_MainWindow() - self.gui.setupUi(self) - - self.connect(self.gui.action_save, - Qt.SIGNAL("activated()"), - self.action_save_dialog) - self.connect(self.gui.action_open, - Qt.SIGNAL("activated()"), - self.action_open_dialog) - - - self.connect(self.gui.filterTypeComboBox, - Qt.SIGNAL("currentIndexChanged(const QString&)"), - self.changed_filter_type) - self.connect(self.gui.filterDesignTypeComboBox, - Qt.SIGNAL("currentIndexChanged(const QString&)"), - self.changed_filter_design_type) - - self.connect(self.gui.designButton, - Qt.SIGNAL("released()"), - self.design) - - self.connect(self.gui.tabGroup, - Qt.SIGNAL("currentChanged(int)"), - self.tab_changed) - - self.connect(self.gui.nfftEdit, - Qt.SIGNAL("textEdited(QString)"), - self.nfft_edit_changed) - - self.gui.designButton.setShortcut(QtCore.Qt.Key_Return) - - self.taps = [] - self.fftdB = [] - self.fftDeg = [] - self.groupDelay = [] - self.nfftpts = int(10000) - self.gui.nfftEdit.setText(Qt.QString("%1").arg(self.nfftpts)) - - self.firFilters = ("Low Pass", "Band Pass", "Complex Band Pass", "Band Notch", - "High Pass", "Root Raised Cosine", "Gaussian") - self.optFilters = ("Low Pass", "Band Pass", "Complex Band Pass", - "Band Notch", "High Pass") - - self.set_windowed() - - # Initialize to LPF - self.gui.filterTypeWidget.setCurrentWidget(self.gui.firlpfPage) - - # Set Axis labels - self.gui.freqPlot.setAxisTitle(self.gui.freqPlot.xBottom, - "Frequency (Hz)") - self.gui.freqPlot.setAxisTitle(self.gui.freqPlot.yLeft, - "Magnitude (dB)") - self.gui.timePlot.setAxisTitle(self.gui.timePlot.xBottom, - "Tap number") - self.gui.timePlot.setAxisTitle(self.gui.timePlot.yLeft, - "Amplitude") - self.gui.phasePlot.setAxisTitle(self.gui.phasePlot.xBottom, - "Frequency (Hz)") - self.gui.phasePlot.setAxisTitle(self.gui.phasePlot.yLeft, - "Phase (Radians)") - self.gui.groupPlot.setAxisTitle(self.gui.groupPlot.xBottom, - "Frequency (Hz)") - self.gui.groupPlot.setAxisTitle(self.gui.groupPlot.yLeft, - "Delay (sec)") - - # Set up plot curves - self.rcurve = Qwt.QwtPlotCurve("Real") - self.rcurve.attach(self.gui.timePlot) - self.icurve = Qwt.QwtPlotCurve("Imag") - self.icurve.attach(self.gui.timePlot) - - self.freqcurve = Qwt.QwtPlotCurve("PSD") - self.freqcurve.attach(self.gui.freqPlot) - - self.phasecurve = Qwt.QwtPlotCurve("Phase") - self.phasecurve.attach(self.gui.phasePlot) - - self.groupcurve = Qwt.QwtPlotCurve("Group Delay") - self.groupcurve.attach(self.gui.groupPlot) - - # Create zoom functionality for the plots - self.timeZoomer = Qwt.QwtPlotZoomer(self.gui.timePlot.xBottom, - self.gui.timePlot.yLeft, - Qwt.QwtPicker.PointSelection, - Qwt.QwtPicker.AlwaysOn, - self.gui.timePlot.canvas()) - - self.freqZoomer = Qwt.QwtPlotZoomer(self.gui.freqPlot.xBottom, - self.gui.freqPlot.yLeft, - Qwt.QwtPicker.PointSelection, - Qwt.QwtPicker.AlwaysOn, - self.gui.freqPlot.canvas()) - - self.phaseZoomer = Qwt.QwtPlotZoomer(self.gui.phasePlot.xBottom, - self.gui.phasePlot.yLeft, - Qwt.QwtPicker.PointSelection, - Qwt.QwtPicker.AlwaysOn, - self.gui.phasePlot.canvas()) - - self.groupZoomer = Qwt.QwtPlotZoomer(self.gui.groupPlot.xBottom, - self.gui.groupPlot.yLeft, - Qwt.QwtPicker.PointSelection, - Qwt.QwtPicker.AlwaysOn, - self.gui.groupPlot.canvas()) - - # Set up pen for colors and line width - blue = QtGui.qRgb(0x00, 0x00, 0xFF) - blueBrush = Qt.QBrush(Qt.QColor(blue)) - red = QtGui.qRgb(0xFF, 0x00, 0x00) - redBrush = Qt.QBrush(Qt.QColor(red)) - self.freqcurve.setPen(Qt.QPen(blueBrush, 2)) - self.rcurve.setPen(Qt.QPen(blueBrush, 2)) - self.icurve.setPen(Qt.QPen(redBrush, 2)) - self.phasecurve.setPen(Qt.QPen(blueBrush, 2)) - self.groupcurve.setPen(Qt.QPen(blueBrush, 2)) - - # Set up validators for edit boxes - self.intVal = Qt.QIntValidator(None) - self.dblVal = Qt.QDoubleValidator(None) - self.gui.nfftEdit.setValidator(self.intVal) - self.gui.sampleRateEdit.setValidator(self.dblVal) - self.gui.filterGainEdit.setValidator(self.dblVal) - self.gui.endofLpfPassBandEdit.setValidator(self.dblVal) - self.gui.startofLpfStopBandEdit.setValidator(self.dblVal) - self.gui.lpfStopBandAttenEdit.setValidator(self.dblVal) - self.gui.lpfPassBandRippleEdit.setValidator(self.dblVal) - self.gui.startofBpfPassBandEdit.setValidator(self.dblVal) - self.gui.endofBpfPassBandEdit.setValidator(self.dblVal) - self.gui.bpfTransitionEdit.setValidator(self.dblVal) - self.gui.bpfStopBandAttenEdit.setValidator(self.dblVal) - self.gui.bpfPassBandRippleEdit.setValidator(self.dblVal) - self.gui.startofBnfStopBandEdit.setValidator(self.dblVal) - self.gui.endofBnfStopBandEdit.setValidator(self.dblVal) - self.gui.bnfTransitionEdit.setValidator(self.dblVal) - self.gui.bnfStopBandAttenEdit.setValidator(self.dblVal) - self.gui.bnfPassBandRippleEdit.setValidator(self.dblVal) - self.gui.endofHpfStopBandEdit.setValidator(self.dblVal) - self.gui.startofHpfPassBandEdit.setValidator(self.dblVal) - self.gui.hpfStopBandAttenEdit.setValidator(self.dblVal) - self.gui.hpfPassBandRippleEdit.setValidator(self.dblVal) - self.gui.rrcSymbolRateEdit.setValidator(self.dblVal) - self.gui.rrcAlphaEdit.setValidator(self.dblVal) - self.gui.rrcNumTapsEdit.setValidator(self.dblVal) - self.gui.gausSymbolRateEdit.setValidator(self.dblVal) - self.gui.gausBTEdit.setValidator(self.dblVal) - self.gui.gausNumTapsEdit.setValidator(self.dblVal) - - self.gui.nTapsEdit.setText("0") - - self.filterWindows = {"Hamming Window" : gr.firdes.WIN_HAMMING, - "Hann Window" : gr.firdes.WIN_HANN, - "Blackman Window" : gr.firdes.WIN_BLACKMAN, - "Rectangular Window" : gr.firdes.WIN_RECTANGULAR, - "Kaiser Window" : gr.firdes.WIN_KAISER, - "Blackman-harris Window" : gr.firdes.WIN_BLACKMAN_hARRIS} - self.EQUIRIPPLE_FILT = 6 # const for equiripple filter window types - self.show() - - def changed_filter_type(self, ftype): - strftype = str(ftype.toAscii()) - if(ftype == "Low Pass"): - self.gui.filterTypeWidget.setCurrentWidget(self.gui.firlpfPage) - elif(ftype == "Band Pass"): - self.gui.filterTypeWidget.setCurrentWidget(self.gui.firbpfPage) - elif(ftype == "Complex Band Pass"): - self.gui.filterTypeWidget.setCurrentWidget(self.gui.firbpfPage) - elif(ftype == "Band Notch"): - self.gui.filterTypeWidget.setCurrentWidget(self.gui.firbnfPage) - elif(ftype == "High Pass"): - self.gui.filterTypeWidget.setCurrentWidget(self.gui.firhpfPage) - elif(ftype == "Root Raised Cosine"): - self.gui.filterTypeWidget.setCurrentWidget(self.gui.rrcPage) - elif(ftype == "Gaussian"): - self.gui.filterTypeWidget.setCurrentWidget(self.gui.gausPage) - - self.design() - - def changed_filter_design_type(self, design): - if(design == "Equiripple"): - self.set_equiripple() - else: - self.set_windowed() - - self.design() - - def set_equiripple(self): - # Stop sending the signal for this function - self.gui.filterTypeComboBox.blockSignals(True) - - self.equiripple = True - self.gui.lpfPassBandRippleLabel.setVisible(True) - self.gui.lpfPassBandRippleEdit.setVisible(True) - self.gui.bpfPassBandRippleLabel.setVisible(True) - self.gui.bpfPassBandRippleEdit.setVisible(True) - self.gui.bnfPassBandRippleLabel.setVisible(True) - self.gui.bnfPassBandRippleEdit.setVisible(True) - self.gui.hpfPassBandRippleLabel.setVisible(True) - self.gui.hpfPassBandRippleEdit.setVisible(True) - - # Save current type and repopulate the combo box for - # filters this window type can handle - currenttype = self.gui.filterTypeComboBox.currentText() - items = self.gui.filterTypeComboBox.count() - for i in xrange(items): - self.gui.filterTypeComboBox.removeItem(0) - self.gui.filterTypeComboBox.addItems(self.optFilters) - - # If the last filter type was valid for this window type, - # go back to it; otherwise, reset - try: - index = self.optFilters.index(currenttype) - self.gui.filterTypeComboBox.setCurrentIndex(index) - except ValueError: - pass - - # Tell gui its ok to start sending this signal again - self.gui.filterTypeComboBox.blockSignals(False) - - def set_windowed(self): - # Stop sending the signal for this function - self.gui.filterTypeComboBox.blockSignals(True) - - self.equiripple = False - self.gui.lpfPassBandRippleLabel.setVisible(False) - self.gui.lpfPassBandRippleEdit.setVisible(False) - self.gui.bpfPassBandRippleLabel.setVisible(False) - self.gui.bpfPassBandRippleEdit.setVisible(False) - self.gui.bnfPassBandRippleLabel.setVisible(False) - self.gui.bnfPassBandRippleEdit.setVisible(False) - self.gui.hpfPassBandRippleLabel.setVisible(False) - self.gui.hpfPassBandRippleEdit.setVisible(False) - - # Save current type and repopulate the combo box for - # filters this window type can handle - currenttype = self.gui.filterTypeComboBox.currentText() - items = self.gui.filterTypeComboBox.count() - for i in xrange(items): - self.gui.filterTypeComboBox.removeItem(0) - self.gui.filterTypeComboBox.addItems(self.firFilters) - - # If the last filter type was valid for this window type, - # go back to it; otherwise, reset - try: - index = self.optFilters.index(currenttype) - self.gui.filterTypeComboBox.setCurrentIndex(index) - except ValueError: - pass - - # Tell gui its ok to start sending this signal again - self.gui.filterTypeComboBox.blockSignals(False) - - def design(self): - ret = True - fs,r = self.gui.sampleRateEdit.text().toDouble() - ret = r and ret - gain,r = self.gui.filterGainEdit.text().toDouble() - ret = r and ret - - if(ret): - winstr = str(self.gui.filterDesignTypeComboBox.currentText().toAscii()) - ftype = str(self.gui.filterTypeComboBox.currentText().toAscii()) - - if(winstr == "Equiripple"): - designer = {"Low Pass" : self.design_opt_lpf, - "Band Pass" : self.design_opt_bpf, - "Complex Band Pass" : self.design_opt_cbpf, - "Band Notch" : self.design_opt_bnf, - "High Pass" : self.design_opt_hpf} - taps,params,r = designer[ftype](fs, gain) - - else: - designer = {"Low Pass" : self.design_win_lpf, - "Band Pass" : self.design_win_bpf, - "Complex Band Pass" : self.design_win_cbpf, - "Band Notch" : self.design_win_bnf, - "High Pass" : self.design_win_hpf, - "Root Raised Cosine" : self.design_win_rrc, - "Gaussian" : self.design_win_gaus} - wintype = self.filterWindows[winstr] - taps,params,r = designer[ftype](fs, gain, wintype) - - if(r): - self.draw_plots(taps, params) - - - # Filter design functions using a window - def design_win_lpf(self, fs, gain, wintype): - ret = True - pb,r = self.gui.endofLpfPassBandEdit.text().toDouble() - ret = r and ret - sb,r = self.gui.startofLpfStopBandEdit.text().toDouble() - ret = r and ret - atten,r = self.gui.lpfStopBandAttenEdit.text().toDouble() - ret = r and ret - - if(ret): - tb = sb - pb - - taps = gr.firdes.low_pass_2(gain, fs, pb, tb, - atten, wintype) - params = {"fs": fs, "gain": gain, "wintype": wintype, - "filttype": "lpf", "pbend": pb, "sbstart": sb, - "atten": atten, "ntaps": len(taps)} - return (taps, params, ret) - else: - return ([], [], ret) - - def design_win_bpf(self, fs, gain, wintype): - ret = True - pb1,r = self.gui.startofBpfPassBandEdit.text().toDouble() - ret = r and ret - pb2,r = self.gui.endofBpfPassBandEdit.text().toDouble() - ret = r and ret - tb,r = self.gui.bpfTransitionEdit.text().toDouble() - ret = r and ret - atten,r = self.gui.bpfStopBandAttenEdit.text().toDouble() - ret = r and ret - - if(r): - taps = gr.firdes.band_pass_2(gain, fs, pb1, pb2, tb, - atten, wintype) - params = {"fs": fs, "gain": gain, "wintype": wintype, - "filttype": "bpf", "pbstart": pb1, "pbend": pb2, - "tb": tb, "atten": atten, "ntaps": len(taps)} - return (taps,params,r) - else: - return ([],[],r) - - def design_win_cbpf(self, fs, gain, wintype): - ret = True - pb1,r = self.gui.startofBpfPassBandEdit.text().toDouble() - ret = r and ret - pb2,r = self.gui.endofBpfPassBandEdit.text().toDouble() - ret = r and ret - tb,r = self.gui.bpfTransitionEdit.text().toDouble() - ret = r and ret - atten,r = self.gui.bpfStopBandAttenEdit.text().toDouble() - ret = r and ret - - if(r): - taps = gr.firdes.complex_band_pass_2(gain, fs, pb1, pb2, tb, - atten, wintype) - params = {"fs": fs, "gain": gain, "wintype": wintype, - "filttype": "cbpf", "pbstart": pb1, "pbend": pb2, - "tb": tb, "atten": atten, "ntaps": len(taps)} - return (taps,params,r) - else: - return ([],[],r) - - def design_win_bnf(self, fs, gain, wintype): - ret = True - pb1,r = self.gui.startofBnfStopBandEdit.text().toDouble() - ret = r and ret - pb2,r = self.gui.endofBnfStopBandEdit.text().toDouble() - ret = r and ret - tb,r = self.gui.bnfTransitionEdit.text().toDouble() - ret = r and ret - atten,r = self.gui.bnfStopBandAttenEdit.text().toDouble() - ret = r and ret - - if(r): - taps = gr.firdes.band_reject_2(gain, fs, pb1, pb2, tb, - atten, wintype) - params = {"fs": fs, "gain": gain, "wintype": wintype, - "filttype": "bnf", "sbstart": pb1, "sbend": pb2, - "tb": tb, "atten": atten, "ntaps": len(taps)} - return (taps,params,r) - else: - return ([],[],r) - - def design_win_hpf(self, fs, gain, wintype): - ret = True - sb,r = self.gui.endofHpfStopBandEdit.text().toDouble() - ret = r and ret - pb,r = self.gui.startofHpfPassBandEdit.text().toDouble() - ret = r and ret - atten,r = self.gui.hpfStopBandAttenEdit.text().toDouble() - ret = r and ret - - if(r): - tb = pb - sb - taps = gr.firdes.high_pass_2(gain, fs, pb, tb, - atten, wintype) - params = {"fs": fs, "gain": gain, "wintype": wintype, - "filttype": "hpf", "sbend": sb, "pbstart": pb, - "atten": atten, "ntaps": len(taps)} - return (taps,params,r) - else: - return ([],[],r) - - def design_win_rrc(self, fs, gain, wintype): - ret = True - sr,r = self.gui.rrcSymbolRateEdit.text().toDouble() - ret = r and ret - alpha,r = self.gui.rrcAlphaEdit.text().toDouble() - ret = r and ret - ntaps,r = self.gui.rrcNumTapsEdit.text().toInt() - ret = r and ret - - if(r): - taps = gr.firdes.root_raised_cosine(gain, fs, sr, - alpha, ntaps) - params = {"fs": fs, "gain": gain, "wintype": wintype, - "filttype": "rrc", "srate": sr, "alpha": alpha, - "ntaps": ntaps} - return (taps,params,r) - else: - return ([],[],r) - - def design_win_gaus(self, fs, gain, wintype): - ret = True - sr,r = self.gui.gausSymbolRateEdit.text().toDouble() - ret = r and ret - bt,r = self.gui.gausBTEdit.text().toDouble() - ret = r and ret - ntaps,r = self.gui.gausNumTapsEdit.text().toInt() - ret = r and ret - - if(r): - spb = fs / sr - taps = gr.firdes.gaussian(gain, spb, bt, ntaps) - params = {"fs": fs, "gain": gain, "wintype": wintype, - "filttype": "gaus", "srate": sr, "bt": bt, - "ntaps": ntaps} - return (taps,params,r) - else: - return ([],[],r) - - # Design Functions for Equiripple Filters - def design_opt_lpf(self, fs, gain): - ret = True - pb,r = self.gui.endofLpfPassBandEdit.text().toDouble() - ret = r and ret - sb,r = self.gui.startofLpfStopBandEdit.text().toDouble() - ret = r and ret - atten,r = self.gui.lpfStopBandAttenEdit.text().toDouble() - ret = r and ret - ripple,r = self.gui.lpfPassBandRippleEdit.text().toDouble() - ret = r and ret - - if(ret): - try: - taps = blks2.optfir.low_pass(gain, fs, pb, sb, - ripple, atten) - except RuntimeError, e: - reply = QtGui.QMessageBox.information(self, "Filter did not converge", - e.args[0], "&Ok") - return ([],[],False) - else: - params = {"fs": fs, "gain": gain, "wintype": self.EQUIRIPPLE_FILT, - "filttype": "lpf", "pbend": pb, "sbstart": sb, - "atten": atten, "ripple": ripple, "ntaps": len(taps)} - return (taps, params, ret) - else: - return ([], [], ret) - - def design_opt_bpf(self, fs, gain): - ret = True - pb1,r = self.gui.startofBpfPassBandEdit.text().toDouble() - ret = r and ret - pb2,r = self.gui.endofBpfPassBandEdit.text().toDouble() - ret = r and ret - tb,r = self.gui.bpfTransitionEdit.text().toDouble() - ret = r and ret - atten,r = self.gui.bpfStopBandAttenEdit.text().toDouble() - ret = r and ret - ripple,r = self.gui.bpfPassBandRippleEdit.text().toDouble() - ret = r and ret - - if(r): - sb1 = pb1 - tb - sb2 = pb2 + tb - try: - taps = blks2.optfir.band_pass(gain, fs, sb1, pb1, pb2, sb2, - ripple, atten) - except RuntimeError, e: - reply = QtGui.QMessageBox.information(self, "Filter did not converge", - e.args[0], "&Ok") - return ([],[],False) - - else: - params = {"fs": fs, "gain": gain, "wintype": self.EQUIRIPPLE_FILT, - "filttype": "bpf", "pbstart": pb1, "pbend": pb2, - "tb": tb, "atten": atten, "ripple": ripple, - "ntaps": len(taps)} - return (taps,params,r) - else: - return ([],[],r) - - def design_opt_cbpf(self, fs, gain): - ret = True - pb1,r = self.gui.startofBpfPassBandEdit.text().toDouble() - ret = r and ret - pb2,r = self.gui.endofBpfPassBandEdit.text().toDouble() - ret = r and ret - tb,r = self.gui.bpfTransitionEdit.text().toDouble() - ret = r and ret - atten,r = self.gui.bpfStopBandAttenEdit.text().toDouble() - ret = r and ret - ripple,r = self.gui.bpfPassBandRippleEdit.text().toDouble() - ret = r and ret - - if(r): - sb1 = pb1 - tb - sb2 = pb2 + tb - try: - taps = blks2.optfir.complex_band_pass(gain, fs, sb1, pb1, pb2, sb2, - ripple, atten) - except RuntimeError, e: - reply = QtGui.QMessageBox.information(self, "Filter did not converge", - e.args[0], "&Ok") - return ([],[],False) - else: - params = {"fs": fs, "gain": gain, "wintype": self.EQUIRIPPLE_FILT, - "filttype": "cbpf", "pbstart": pb1, "pbend": pb2, - "tb": tb, "atten": atten, "ripple": ripple, - "ntaps": len(taps)} - return (taps,params,r) - else: - return ([],[],r) - - def design_opt_bnf(self, fs, gain): - ret = True - sb1,r = self.gui.startofBnfStopBandEdit.text().toDouble() - ret = r and ret - sb2,r = self.gui.endofBnfStopBandEdit.text().toDouble() - ret = r and ret - tb,r = self.gui.bnfTransitionEdit.text().toDouble() - ret = r and ret - atten,r = self.gui.bnfStopBandAttenEdit.text().toDouble() - ret = r and ret - ripple,r = self.gui.bnfPassBandRippleEdit.text().toDouble() - ret = r and ret - - if(r): - pb1 = sb1 - tb - pb2 = sb2 + tb - try: - taps = blks2.optfir.band_reject(gain, fs, pb1, sb1, sb2, pb2, - ripple, atten) - except RuntimeError, e: - reply = QtGui.QMessageBox.information(self, "Filter did not converge", - e.args[0], "&Ok") - return ([],[],False) - else: - params = {"fs": fs, "gain": gain, "wintype": self.EQUIRIPPLE_FILT, - "filttype": "bnf", "sbstart": pb1, "sbend": pb2, - "tb": tb, "atten": atten, "ripple": ripple, - "ntaps": len(taps)} - return (taps,params,r) - else: - return ([],[],r) - - def design_opt_hpf(self, fs, gain): - ret = True - sb,r = self.gui.endofHpfStopBandEdit.text().toDouble() - ret = r and ret - pb,r = self.gui.startofHpfPassBandEdit.text().toDouble() - ret = r and ret - atten,r = self.gui.hpfStopBandAttenEdit.text().toDouble() - ret = r and ret - ripple,r = self.gui.hpfPassBandRippleEdit.text().toDouble() - ret = r and ret - - if(r): - try: - taps = blks2.optfir.high_pass(gain, fs, sb, pb, - atten, ripple) - except RuntimeError, e: - reply = QtGui.QMessageBox.information(self, "Filter did not converge", - e.args[0], "&Ok") - return ([],[],False) - else: - params = {"fs": fs, "gain": gain, "wintype": self.EQUIRIPPLE_FILT, - "filttype": "hpf", "sbend": sb, "pbstart": pb, - "atten": atten, "ripple": ripple, - "ntaps": len(taps)} - return (taps,params,r) - else: - return ([],[],r) - - def nfft_edit_changed(self, nfft): - infft,r = nfft.toInt() - if(r and (infft != self.nfftpts)): - self.nfftpts = infft - self.update_freq_curves() - - def tab_changed(self, tab): - if(tab == 0): - self.update_freq_curves() - if(tab == 1): - self.update_time_curves() - if(tab == 2): - self.update_phase_curves() - if(tab == 3): - self.update_group_curves() - - def get_fft(self, fs, taps, Npts): - Ts = 1.0/fs - fftpts = fftpack.fft(taps, Npts) - self.freq = scipy.arange(0, fs, 1.0/(Npts*Ts)) - self.fftdB = 20.0*scipy.log10(abs(fftpts)) - self.fftDeg = scipy.unwrap(scipy.angle(fftpts)) - self.groupDelay = -scipy.diff(self.fftDeg) - - def update_time_curves(self): - ntaps = len(self.taps) - if(ntaps > 0): - if(type(self.taps[0]) == scipy.complex128): - self.rcurve.setData(scipy.arange(ntaps), self.taps.real) - self.icurve.setData(scipy.arange(ntaps), self.taps.imag) - else: - self.rcurve.setData(scipy.arange(ntaps), self.taps) - - # Reset the x-axis to the new time scale - ymax = 1.5 * max(self.taps) - ymin = 1.5 * min(self.taps) - self.gui.timePlot.setAxisScale(self.gui.timePlot.xBottom, - 0, ntaps) - self.gui.timePlot.setAxisScale(self.gui.timePlot.yLeft, - ymin, ymax) - - # Set the zoomer base to unzoom to the new axis - self.timeZoomer.setZoomBase() - - self.gui.timePlot.replot() - - def update_freq_curves(self): - npts = len(self.fftdB) - if(npts > 0): - self.freqcurve.setData(self.freq, self.fftdB) - - # Reset the x-axis to the new time scale - ymax = 1.5 * max(self.fftdB[0:npts/2]) - ymin = 1.1 * min(self.fftdB[0:npts/2]) - xmax = self.freq[npts/2] - xmin = self.freq[0] - self.gui.freqPlot.setAxisScale(self.gui.freqPlot.xBottom, - xmin, xmax) - self.gui.freqPlot.setAxisScale(self.gui.freqPlot.yLeft, - ymin, ymax) - - # Set the zoomer base to unzoom to the new axis - self.freqZoomer.setZoomBase() - - self.gui.freqPlot.replot() - - - def update_phase_curves(self): - npts = len(self.fftDeg) - if(npts > 0): - self.phasecurve.setData(self.freq, self.fftDeg) - - # Reset the x-axis to the new time scale - ymax = 1.5 * max(self.fftDeg[0:npts/2]) - ymin = 1.1 * min(self.fftDeg[0:npts/2]) - xmax = self.freq[npts/2] - xmin = self.freq[0] - self.gui.phasePlot.setAxisScale(self.gui.phasePlot.xBottom, - xmin, xmax) - self.gui.phasePlot.setAxisScale(self.gui.phasePlot.yLeft, - ymin, ymax) - - # Set the zoomer base to unzoom to the new axis - self.phaseZoomer.setZoomBase() - - self.gui.phasePlot.replot() - - def update_group_curves(self): - npts = len(self.groupDelay) - if(npts > 0): - self.groupcurve.setData(self.freq, self.groupDelay) - - # Reset the x-axis to the new time scale - ymax = 1.5 * max(self.groupDelay[0:npts/2]) - ymin = 1.1 * min(self.groupDelay[0:npts/2]) - xmax = self.freq[npts/2] - xmin = self.freq[0] - self.gui.groupPlot.setAxisScale(self.gui.groupPlot.xBottom, - xmin, xmax) - self.gui.groupPlot.setAxisScale(self.gui.groupPlot.yLeft, - ymin, ymax) - - # Set the zoomer base to unzoom to the new axis - self.groupZoomer.setZoomBase() - - self.gui.groupPlot.replot() - - def action_save_dialog(self): - filename = QtGui.QFileDialog.getSaveFileName(self, "Save CSV Filter File", ".", "") - try: - handle = open(filename, "wb") - except IOError: - reply = QtGui.QMessageBox.information(self, 'File Name', - ("Could not save to file: %s" % filename), - "&Ok") - return - - csvhandle = csv.writer(handle, delimiter=",") - for k in self.params.keys(): - csvhandle.writerow([k, self.params[k]]) - csvhandle.writerow(["taps",] + self.taps.tolist()) - handle.close() - - def action_open_dialog(self): - filename = QtGui.QFileDialog.getOpenFileName(self, "Open CSV Filter File", ".", "") - if(len(filename) == 0): - return - - try: - handle = open(filename, "rb") - except IOError: - reply = QtGui.QMessageBox.information(self, 'File Name', - ("Could not open file: %s" % filename), - "&Ok") - return - - csvhandle = csv.reader(handle, delimiter=",") - taps = [] - params = {} - for row in csvhandle: - if(row[0] != "taps"): - testcpx = re.findall("[+-]?\d+\.*\d*[Ee]?[-+]?\d+j", row[1]) - if(len(testcpx) > 0): # it's a complex - params[row[0]] = complex(row[1]) - else: # assume it's a float - try: # if it's not a float, its a string - params[row[0]] = float(row[1]) - except ValueError: - params[row[0]] = row[1] - else: - testcpx = re.findall("[+-]?\d+\.*\d*[Ee]?[-+]?\d+j", row[1]) - if(len(testcpx) > 0): # it's a complex - taps = [complex(r) for r in row[1:]] - else: - taps = [float(r) for r in row[1:]] - handle.close() - self.draw_plots(taps, params) - - self.gui.sampleRateEdit.setText(Qt.QString("%1").arg(params["fs"])) - self.gui.filterGainEdit.setText(Qt.QString("%1").arg(params["gain"])) - - # Set up GUI parameters for each filter type - if(params["filttype"] == "lpf"): - self.gui.filterTypeComboBox.setCurrentIndex(0) - self.gui.filterDesignTypeComboBox.setCurrentIndex(int(params["wintype"])) - - self.gui.endofLpfPassBandEdit.setText(Qt.QString("%1").arg(params["pbend"])) - self.gui.startofLpfStopBandEdit.setText(Qt.QString("%1").arg(params["sbstart"])) - self.gui.lpfStopBandAttenEdit.setText(Qt.QString("%1").arg(params["atten"])) - if(params["wintype"] == self.EQUIRIPPLE_FILT): - self.gui.lpfPassBandRippleEdit.setText(Qt.QString("%1").arg(params["ripple"])) - elif(params["filttype"] == "bpf"): - self.gui.filterTypeComboBox.setCurrentIndex(1) - self.gui.filterDesignTypeComboBox.setCurrentIndex(int(params["wintype"])) - - self.gui.startofBpfPassBandEdit.setText(Qt.QString("%1").arg(params["pbstart"])) - self.gui.endofBpfPassBandEdit.setText(Qt.QString("%1").arg(params["pbend"])) - self.gui.bpfTransitionEdit.setText(Qt.QString("%1").arg(params["tb"])) - self.gui.bpfStopBandAttenEdit.setText(Qt.QString("%1").arg(params["atten"])) - if(params["wintype"] == self.EQUIRIPPLE_FILT): - self.gui.bpfPassBandRippleEdit.setText(Qt.QString("%1").arg(params["ripple"])) - elif(params["filttype"] == "cbpf"): - self.gui.filterTypeComboBox.setCurrentIndex(2) - self.gui.filterDesignTypeComboBox.setCurrentIndex(int(params["wintype"])) - - self.gui.startofBpfPassBandEdit.setText(Qt.QString("%1").arg(params["pbstart"])) - self.gui.endofBpfPassBandEdit.setText(Qt.QString("%1").arg(params["pbend"])) - self.gui.bpfTransitionEdit.setText(Qt.QString("%1").arg(params["tb"])) - self.gui.bpfStopBandAttenEdit.setText(Qt.QString("%1").arg(params["atten"])) - if(params["wintype"] == self.EQUIRIPPLE_FILT): - self.gui.bpfPassBandRippleEdit.setText(Qt.QString("%1").arg(params["ripple"])) - elif(params["filttype"] == "bnf"): - self.gui.filterTypeComboBox.setCurrentIndex(3) - self.gui.filterDesignTypeComboBox.setCurrentIndex(int(params["wintype"])) - - self.gui.startofBnfStopBandEdit.setText(Qt.QString("%1").arg(params["sbstart"])) - self.gui.endofBnfStopBandEdit.setText(Qt.QString("%1").arg(params["sbend"])) - self.gui.bnfTransitionEdit.setText(Qt.QString("%1").arg(params["tb"])) - self.gui.bnfStopBandAttenEdit.setText(Qt.QString("%1").arg(params["atten"])) - if(params["wintype"] == self.EQUIRIPPLE_FILT): - self.gui.bnfPassBandRippleEdit.setText(Qt.QString("%1").arg(params["ripple"])) - elif(params["filttype"] == "hpf"): - self.gui.filterTypeComboBox.setCurrentIndex(4) - self.gui.filterDesignTypeComboBox.setCurrentIndex(int(params["wintype"])) - - self.gui.endofHpfStopBandEdit.setText(Qt.QString("%1").arg(params["sbend"])) - self.gui.startofHpfPassBandEdit.setText(Qt.QString("%1").arg(params["pbstart"])) - self.gui.hpfStopBandAttenEdit.setText(Qt.QString("%1").arg(params["atten"])) - if(params["wintype"] == self.EQUIRIPPLE_FILT): - self.gui.hpfPassBandRippleEdit.setText(Qt.QString("%1").arg(params["ripple"])) - elif(params["filttype"] == "rrc"): - self.gui.filterTypeComboBox.setCurrentIndex(5) - self.gui.filterDesignTypeComboBox.setCurrentIndex(int(params["wintype"])) - - self.gui.rrcSymbolRateEdit.setText(Qt.QString("%1").arg(params["srate"])) - self.gui.rrcAlphaEdit.setText(Qt.QString("%1").arg(params["alpha"])) - self.gui.rrcNumTapsEdit.setText(Qt.QString("%1").arg(params["ntaps"])) - elif(params["filttype"] == "gaus"): - self.gui.filterTypeComboBox.setCurrentIndex(6) - self.gui.filterDesignTypeComboBox.setCurrentIndex(int(params["wintype"])) - - self.gui.gausSymbolRateEdit.setText(Qt.QString("%1").arg(params["srate"])) - self.gui.gausBTEdit.setText(Qt.QString("%1").arg(params["bt"])) - self.gui.gausNumTapsEdit.setText(Qt.QString("%1").arg(params["ntaps"])) - - def draw_plots(self, taps, params): - self.params = params - self.taps = scipy.array(taps) - self.get_fft(self.params["fs"], self.taps, self.nfftpts) - self.update_time_curves() - self.update_freq_curves() - self.update_phase_curves() - self.update_group_curves() - - self.gui.nTapsEdit.setText(Qt.QString("%1").arg(self.taps.size)) - - -def setup_options(): - usage="%prog: [options] (input_filename)" - description = "" - - parser = OptionParser(conflict_handler="resolve", - usage=usage, description=description) - return parser - -def main(args): - parser = setup_options() - (options, args) = parser.parse_args () - - app = Qt.QApplication(args) - gplt = gr_plot_filter(app, options) - app.exec_() - -if __name__ == '__main__': - main(sys.argv) - |