From 62eb0520ba866cc2eb7a4aa3e0ba0cdd325b6c0a Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Sun, 22 Apr 2012 20:59:42 -0400 Subject: docs: updating build dependency and building instructions. --- docs/doxygen/other/build_guide.dox | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) (limited to 'docs/doxygen') diff --git a/docs/doxygen/other/build_guide.dox b/docs/doxygen/other/build_guide.dox index 780976d626..629a0f89f2 100644 --- a/docs/doxygen/other/build_guide.dox +++ b/docs/doxygen/other/build_guide.dox @@ -19,13 +19,16 @@ components is determined by what the user requires from GNU Radio. If, for example, you do not use any Comedi-based hardware, do not worry about building gr-comedi. +Before trying to build these from source, please try your system's +installation tool (apt-get, pkg_install, YaST, yum, urpmi, etc.) +first. Most recent systems have these packages available. + \subsection dep_global Global Dependencies \li git http://code.google.com/p/msysgit \li cmake (>= 2.6) http://www.cmake.org/cmake/resources/software.html \li boost (>= 1.35) http://www.boostpro.com/download \li cppunit (>= 1.9.14) http://gaiacrtn.free.fr/cppunit/index.html \li fftw3f (>= 3.0) http://www.fftw.org/install/windows.html -\li gsl (>= 1.10) http://gnuwin32.sourceforge.net/packages/gsl.htm \subsection dep_python Python Wrappers \li python (>= 2.5) http://www.python.org/download/ @@ -39,6 +42,9 @@ about building gr-comedi. \li Cheetah (>= 2.0) http://www.cheetahtemplate.org/ \li pygtk (>= 2.10) http://www.pygtk.org/downloads.html +\subsection dep_wavelet gr-wavelet: Collection of wavelet blocks +\li gsl (>= 1.10) http://gnuwin32.sourceforge.net/packages/gsl.htm + \subsection dep_gr_qtgui gr-qtgui: The QT-based Graphical User Interface \li qt (>= 4.4) http://qt.nokia.com/downloads/ \li qwt (>= 5.2) http://sourceforge.net/projects/qwt/ @@ -57,6 +63,10 @@ about building gr-comedi. \li audio-osx \li audio-windows +It is not necessary to satisfy all of these dependencies; just the +one(s) that are right for your system. On Linux, don't expect +audio-osx and audio-windows to be either satisfied or built. + \subsection dep_uhd uhd: The Ettus USRP Hardware Driver Interface \li uhd (>= 3.0.0) http://code.ettus.com/redmine/ettus/projects/uhd/wiki @@ -146,23 +156,3 @@ cmake -DCMAKE_CXX_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g -DCMAKE_C_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g" \ <gr_source_dir> \endcode - - -\section build_old_autotools Building Using Old Autotools Method - -As of version 3.5, we have moved to using Cmake as the default, -preferred build system. If for some reason, Cmake fails on your -system, GNU Radio still includes the old autotools build process as a -parallel build method. To build: - -\code -$ cd $(srcdir) -$ ./bootstrap // only if not building from a tarball -$ cd $(builddir) -$ $(srcdir)/configure [options] -$ make [-jN] -$ make check -$ sudo make install -\endcode - -*/ -- cgit v1.2.3 From da42490eb23389949473c445b9cfb2a6f109440f Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Tue, 1 May 2012 15:37:12 -0400 Subject: docs: fixed bug in doxygen looking at howto dir. --- docs/doxygen/Doxyfile.in | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'docs/doxygen') diff --git a/docs/doxygen/Doxyfile.in b/docs/doxygen/Doxyfile.in index f3485316c4..ad3c2d01f4 100644 --- a/docs/doxygen/Doxyfile.in +++ b/docs/doxygen/Doxyfile.in @@ -628,7 +628,6 @@ EXCLUDE = @abs_top_builddir@/docs/doxygen/html \ @abs_top_builddir@/gr-gsm-fr-vocoder/src/lib/gsm_full_rate.py \ @abs_top_builddir@/gr-gsm-fr-vocoder/src/python/encdec.py \ @abs_top_builddir@/gr-howto-write-a-block \ - @abs_top_builddir@/gr-howto-write-a-block-cmake \ @abs_top_builddir@/gr-pager/src/pager_swig.py \ @abs_top_builddir@/gr-trellis/doc \ @abs_top_builddir@/gr-trellis/src/lib/generate_all.py \ @@ -640,7 +639,7 @@ EXCLUDE = @abs_top_builddir@/docs/doxygen/html \ @abs_top_builddir@/_CPack_Packages \ @abs_top_srcdir@/cmake \ @abs_top_srcdir@/gr-qtgui/lib \ - @abs_top_srcdir@/gr-howto-write-a-block-cmake + @abs_top_srcdir@/gr-howto-write-a-block # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded -- cgit v1.2.3 From ace7a97a3e93dcb2f9cd6460ddb847cc1512bdd4 Mon Sep 17 00:00:00 2001 From: Ben Reynwar <ben@reynwar.net> Date: Tue, 8 May 2012 12:59:38 -0700 Subject: doxyxml: Added parsing of parameters from xml. --- docs/doxygen/doxyxml/doxyindex.py | 81 +++++++++++++++++++++++++++++---------- 1 file changed, 60 insertions(+), 21 deletions(-) (limited to 'docs/doxygen') diff --git a/docs/doxygen/doxyxml/doxyindex.py b/docs/doxygen/doxyxml/doxyindex.py index 0132ab86fd..84bc7b88c3 100644 --- a/docs/doxygen/doxyxml/doxyindex.py +++ b/docs/doxygen/doxyxml/doxyindex.py @@ -1,23 +1,23 @@ # # 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. -# +# """ Classes providing more user-friendly interfaces to the doxygen xml docs than the generated classes provide. @@ -40,7 +40,7 @@ class DoxyIndex(Base): if self._parsed: return super(DoxyIndex, self)._parse() - self._root = index.parse(os.path.join(self._xml_path, 'index.xml')) + self._root = index.parse(os.path.join(self._xml_path, 'index.xml')) for mem in self._root.compound: converted = self.convert_mem(mem) # For files we want the contents to be accessible directly @@ -78,14 +78,14 @@ class DoxyCompMem(Base): bd = description(getattr(parse_data, 'briefdescription', None)) dd = description(getattr(parse_data, 'detaileddescription', None)) self._data['brief_description'] = bd - self._data['detailed_description'] = dd + self._data['detailed_description'] = dd class DoxyCompound(DoxyCompMem): pass class DoxyMember(DoxyCompMem): pass - + class DoxyFunction(DoxyMember): @@ -111,7 +111,7 @@ Base.mem_classes.append(DoxyFunction) class DoxyParam(DoxyMember): - + __module__ = "gnuradio.utils.doxyxml" def _parse(self): @@ -125,12 +125,33 @@ class DoxyParam(DoxyMember): detailed_description = property(lambda self: self.data()['detailed_description']) declname = property(lambda self: self.data()['declname']) -class DoxyClass(DoxyCompound): +class DoxyParameterItem(DoxyMember): + """A different representation of a parameter in Doxygen.""" + + def _parse(self): + if self._parsed: + return + super(DoxyParameterItem, self)._parse() + names = [] + for nl in self._parse_data.parameternamelist: + for pn in nl.parametername: + names.append(description(pn)) + # Just take first name + self._data['name'] = names[0] + # Get description + pd = description(self._parse_data.get_parameterdescription()) + self._data['description'] = pd + + description = property(lambda self: self.data()['description']) + name = property(lambda self: self.data()['name']) + +class DoxyClass(DoxyCompound): + __module__ = "gnuradio.utils.doxyxml" kind = 'class' - + def _parse(self): if self._parsed: return @@ -139,22 +160,40 @@ class DoxyClass(DoxyCompound): if self._error: return self.set_descriptions(self._retrieved_data.compounddef) + self.set_parameters(self._retrieved_data.compounddef) # Sectiondef.kind tells about whether private or public. # We just ignore this for now. self.process_memberdefs() + def set_parameters(self, data): + vs = [ddc.value for ddc in data.detaileddescription.content_] + pls = [] + for v in vs: + if hasattr(v, 'parameterlist'): + pls += v.parameterlist + pis = [] + for pl in pls: + pis += pl.parameteritem + dpis = [] + for pi in pis: + dpi = DoxyParameterItem(pi) + dpi._parse() + dpis.append(dpi) + self._data['params'] = dpis + brief_description = property(lambda self: self.data()['brief_description']) detailed_description = property(lambda self: self.data()['detailed_description']) + params = property(lambda self: self.data()['params']) Base.mem_classes.append(DoxyClass) - + class DoxyFile(DoxyCompound): - + __module__ = "gnuradio.utils.doxyxml" kind = 'file' - + def _parse(self): if self._parsed: return @@ -164,7 +203,7 @@ class DoxyFile(DoxyCompound): if self._error: return self.process_memberdefs() - + brief_description = property(lambda self: self.data()['brief_description']) detailed_description = property(lambda self: self.data()['detailed_description']) @@ -172,16 +211,16 @@ Base.mem_classes.append(DoxyFile) class DoxyNamespace(DoxyCompound): - + __module__ = "gnuradio.utils.doxyxml" kind = 'namespace' - + Base.mem_classes.append(DoxyNamespace) class DoxyGroup(DoxyCompound): - + __module__ = "gnuradio.utils.doxyxml" kind = 'group' @@ -209,7 +248,7 @@ class DoxyGroup(DoxyCompound): self.process_memberdefs() title = property(lambda self: self.data()['title']) - + Base.mem_classes.append(DoxyGroup) @@ -224,7 +263,7 @@ Base.mem_classes.append(DoxyFriend) class DoxyOther(Base): - + __module__ = "gnuradio.utils.doxyxml" kinds = set(['variable', 'struct', 'union', 'define', 'typedef', 'enum', 'dir', 'page']) @@ -232,6 +271,6 @@ class DoxyOther(Base): @classmethod def can_parse(cls, obj): return obj.kind in cls.kinds - + Base.mem_classes.append(DoxyOther) -- cgit v1.2.3 From 40d1539f04b945045352db7329ae83562c32ddf0 Mon Sep 17 00:00:00 2001 From: Ben Reynwar <ben@reynwar.net> Date: Tue, 8 May 2012 13:07:02 -0700 Subject: docs: Modified swig_doc.py to put parameter info in docstrings. --- docs/doxygen/swig_doc.py | 138 +++++++++++++++++++++++------------------------ 1 file changed, 69 insertions(+), 69 deletions(-) (limited to 'docs/doxygen') diff --git a/docs/doxygen/swig_doc.py b/docs/doxygen/swig_doc.py index bd35b8efdd..414748bbae 100644 --- a/docs/doxygen/swig_doc.py +++ b/docs/doxygen/swig_doc.py @@ -1,23 +1,23 @@ # # Copyright 2010,2011 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. -# +# """ Creates the swig_doc.i SWIG interface file. Execute using: python swig_doc.py xml_path outputfilename @@ -29,11 +29,7 @@ python docstrings. import sys, time -try: - from doxyxml import DoxyIndex, DoxyClass, DoxyFriend, DoxyFunction, DoxyFile, base -except ImportError: - from gnuradio.doxyxml import DoxyIndex, DoxyClass, DoxyFriend, DoxyFunction, DoxyFile, base - +from doxyxml import DoxyIndex, DoxyClass, DoxyFriend, DoxyFunction, DoxyFile, base def py_name(name): bits = name.split('_') @@ -56,7 +52,9 @@ class Block(object): # Check for a parsing error. if item.error(): return False - return item.has_member(make_name(item.name()), DoxyFriend) + friendname = make_name(item.name()) + is_a_block = item.has_member(friendname, DoxyFriend) + return is_a_block def utoascii(text): @@ -82,13 +80,19 @@ def combine_descriptions(obj): if dd: description.append(dd) return utoascii('\n\n'.join(description)).strip() - + +def format_params(parameteritems): + output = ['Args:'] + template = ' {0} : {1}' + for pi in parameteritems: + output.append(template.format(pi.name, pi.description)) + return '\n'.join(output) entry_templ = '%feature("docstring") {name} "{docstring}"' -def make_entry(obj, name=None, templ="{description}", description=None): +def make_entry(obj, name=None, templ="{description}", description=None, params=[]): """ Create a docstring entry for a swig interface file. - + obj - a doxyxml object from which documentation will be extracted. name - the name of the C object (defaults to obj.name()) templ - an optional template for the docstring containing only one @@ -102,6 +106,9 @@ def make_entry(obj, name=None, templ="{description}", description=None): return '' if description is None: description = combine_descriptions(obj) + if params: + description += '\n\n' + description += utoascii(format_params(params)) docstring = templ.format(description=description) if not docstring: return '' @@ -121,16 +128,17 @@ def make_func_entry(func, name=None, description=None, params=None): used as the description instead of extracting it from func. params - a parameter list that overrides using func.params. """ - if params is None: - params = func.params - params = [prm.declname for prm in params] - if params: - sig = "Params: (%s)" % ", ".join(params) - else: - sig = "Params: (NONE)" - templ = "{description}\n\n" + sig - return make_entry(func, name=name, templ=utoascii(templ), - description=description) + #if params is None: + # params = func.params + #params = [prm.declname for prm in params] + #if params: + # sig = "Params: (%s)" % ", ".join(params) + #else: + # sig = "Params: (NONE)" + #templ = "{description}\n\n" + sig + #return make_entry(func, name=name, templ=utoascii(templ), + # description=description) + return make_entry(func, name=name, description=description, params=params) def make_class_entry(klass, description=None): @@ -138,7 +146,7 @@ def make_class_entry(klass, description=None): Create a class docstring for a swig interface file. """ output = [] - output.append(make_entry(klass, description=description)) + output.append(make_entry(klass, description=description, params=klass.params)) for func in klass.in_category(DoxyFunction): name = klass.name() + '::' + func.name() output.append(make_func_entry(func, name=name)) @@ -177,16 +185,33 @@ def make_block_entry(di, block): output.append(make_class_entry(block, description=super_description)) creator = block.get_member(block.name(), DoxyFunction) output.append(make_func_entry(make_func, description=super_description, - params=creator.params)) + params=block.params)) return "\n\n".join(output) +def wait_if_necessary(tries, swigdocfilename, item=None): + if item is not None: + extra = ', item {0}'.format(item.name()) + else: + extra = '' + if(tries < 3): + # May not be built just yet; sleep and try again + sys.stderr.write("XML parsing problem with file {0}{1}, retrying.\n".format( + swigdocfilename, extra)) + time.sleep(1) + tries += 1 + return tries, True + else: + # if we've given it three tries, give up and raise an error + sys.stderr.write("XML parsing error with file {0}{1}. giving up.\n".format( + swigdocfilename, extra)) + return tries, False -def make_swig_interface_file(di, swigdocfilename, custom_output=None): - +def make_swig_interface_file(di, swigdocfilename, custom_output=None, tries=0): + output = [""" /* * This file was automatically generated using swig_doc.py. - * + * * Any changes to it will be lost next time it is regenerated. */ """] @@ -195,46 +220,29 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None): output.append(custom_output) # Create docstrings for the blocks. - tries = 0 while(1): try: blocks = di.in_category(Block) except: - if(tries < 3): - # May not be built just yet; sleep and try again - sys.stderr.write("XML parsing problem with file {0}, retrying.\n".format( - swigdocfilename)) - time.sleep(1) - tries += 1 - else: - # if we've given it three tries, give up and raise an error - sys.stderr.write("XML parsing error with file {0}. giving up.\n".format( - swigdocfilename)) + tries, try_again = wait_if_necessary(tries, swigdocfilename) + if not try_again: raise else: break - make_funcs = set([]) for block in blocks: - tries = 0 while(1): try: make_func = di.get_member(make_name(block.name()), DoxyFunction) - make_funcs.add(make_func.name()) - output.append(make_block_entry(di, block)) + # Don't want to risk writing to output twice. + if make_func.name() not in make_funcs: + make_funcs.add(make_func.name()) + output.append(make_block_entry(di, block)) except block.ParsingError: - sys.stderr.write('Parsing error for block {0}'.format(block.name())) + sys.stderr.write('Parsing error for block {0}\n'.format(block.name())) except: - if(tries < 3): - # May not be built just yet; sleep and try again - sys.stderr.write("XML parsing problem with file {0}, retrying.\n".format( - swigdocfilename)) - time.sleep(1) - tries += 1 - else: - # if we've given it three tries, give up and raise an error - sys.stderr.write("XML parsing error with file {0}. giving up.\n".format( - swigdocfilename)) + tries, try_again = wait_if_necessary(tries, swigdocfilename, block) + if not try_again: raise else: break @@ -246,7 +254,7 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None): try: output.append(make_func_entry(f)) except f.ParsingError: - sys.stderr.write('Parsing error for function {0}'.format(f.name())) + sys.stderr.write('Parsing error for function {0}\n'.format(f.name())) # Create docstrings for classes block_names = [block.name() for block in blocks] @@ -255,7 +263,7 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None): try: output.append(make_class_entry(k)) except k.ParsingError: - sys.stderr.write('Parsing error for class {0}'.format(k.name())) + sys.stderr.write('Parsing error for class {0}\n'.format(k.name())) # Docstrings are not created for anything that is not a function or a class. # If this excludes anything important please add it here. @@ -291,19 +299,11 @@ if __name__ == "__main__": tries = 0 while(1): try: - make_swig_interface_file(di, swigdocfilename, custom_output=custom_output) + make_swig_interface_file(di, swigdocfilename, custom_output=custom_output, tries=tries) except: - if(tries < 3): - # May not be built just yet; sleep and try again - sys.stderr.write("XML parsing problem with file {0}, retrying.\n".format( - swigdocfilename)) - time.sleep(1) - tries += 1 - else: - # if we've given it three tries, give up and raise an error - sys.stderr.write("XML parsing error with file {0}. giving up.\n".format( - swigdocfilename)) + tries, try_again = wait_if_necessary(tries, swigdocfilename) + if not try_again: raise else: break - + -- cgit v1.2.3 From bc1b4c18c8f16b6fbc666593869547ad2529662f Mon Sep 17 00:00:00 2001 From: Ben Reynwar <ben@reynwar.net> Date: Mon, 21 May 2012 22:15:08 -0700 Subject: docs: Fixing swig_doc and sphinx so that it can deal with 3.7 style. --- docs/doxygen/doxyxml/doxyindex.py | 56 ++++++++------ docs/doxygen/swig_doc.py | 81 ++++++++++++++++++-- docs/sphinx/README | 13 ++-- docs/sphinx/gnuradio_sphinx.py | 38 +++++++++- docs/sphinx/source/atsc/blks.rst | 34 ++++----- docs/sphinx/source/audio/index.rst | 4 +- docs/sphinx/source/digital/blocks.rst | 32 ++++---- docs/sphinx/source/gr/coding_blk.rst | 16 ++-- docs/sphinx/source/gr/converter_blk.rst | 58 +++++++------- docs/sphinx/source/gr/demodulation_blk.rst | 2 +- docs/sphinx/source/gr/dft_blk.rst | 6 +- docs/sphinx/source/gr/filter_blk.rst | 86 ++++++++++----------- docs/sphinx/source/gr/level_blk.rst | 46 +++++------ docs/sphinx/source/gr/math_blk.rst | 112 +++++++++++++-------------- docs/sphinx/source/gr/misc_blk.rst | 18 ++--- docs/sphinx/source/gr/modulation_blk.rst | 6 +- docs/sphinx/source/gr/sink_blk.rst | 44 +++++------ docs/sphinx/source/gr/slicedice_blk.rst | 22 +++--- docs/sphinx/source/gr/source_blk.rst | 44 +++++------ docs/sphinx/source/gr/sync_blk.rst | 12 +-- docs/sphinx/source/noaa.rst | 6 +- docs/sphinx/source/pager/blks.rst | 10 +-- docs/sphinx/source/qtgui/index.rst | 8 +- docs/sphinx/source/trellis/blks.rst | 118 ++++++++++++++--------------- docs/sphinx/source/video_sdl.rst | 4 +- docs/sphinx/source/vocoder/blks.rst | 32 ++++---- docs/sphinx/source/wavelet.rst | 6 +- 27 files changed, 513 insertions(+), 401 deletions(-) (limited to 'docs/doxygen') diff --git a/docs/doxygen/doxyxml/doxyindex.py b/docs/doxygen/doxyxml/doxyindex.py index 84bc7b88c3..304109a8e5 100644 --- a/docs/doxygen/doxyxml/doxyindex.py +++ b/docs/doxygen/doxyxml/doxyindex.py @@ -80,12 +80,28 @@ class DoxyCompMem(Base): self._data['brief_description'] = bd self._data['detailed_description'] = dd + def set_parameters(self, data): + vs = [ddc.value for ddc in data.detaileddescription.content_] + pls = [] + for v in vs: + if hasattr(v, 'parameterlist'): + pls += v.parameterlist + pis = [] + for pl in pls: + pis += pl.parameteritem + dpis = [] + for pi in pis: + dpi = DoxyParameterItem(pi) + dpi._parse() + dpis.append(dpi) + self._data['params'] = dpis + + class DoxyCompound(DoxyCompMem): pass class DoxyMember(DoxyCompMem): pass - class DoxyFunction(DoxyMember): @@ -98,10 +114,13 @@ class DoxyFunction(DoxyMember): return super(DoxyFunction, self)._parse() self.set_descriptions(self._parse_data) - self._data['params'] = [] - prms = self._parse_data.param - for prm in prms: - self._data['params'].append(DoxyParam(prm)) + self.set_parameters(self._parse_data) + if not self._data['params']: + # If the params weren't set by a comment then just grab the names. + self._data['params'] = [] + prms = self._parse_data.param + for prm in prms: + self._data['params'].append(DoxyParam(prm)) brief_description = property(lambda self: self.data()['brief_description']) detailed_description = property(lambda self: self.data()['detailed_description']) @@ -121,9 +140,18 @@ class DoxyParam(DoxyMember): self.set_descriptions(self._parse_data) self._data['declname'] = self._parse_data.declname + @property + def description(self): + descriptions = [] + if self.brief_description: + descriptions.append(self.brief_description) + if self.detailed_description: + descriptions.append(self.detailed_description) + return '\n\n'.join(descriptions) + brief_description = property(lambda self: self.data()['brief_description']) detailed_description = property(lambda self: self.data()['detailed_description']) - declname = property(lambda self: self.data()['declname']) + name = property(lambda self: self.data()['declname']) class DoxyParameterItem(DoxyMember): """A different representation of a parameter in Doxygen.""" @@ -165,22 +193,6 @@ class DoxyClass(DoxyCompound): # We just ignore this for now. self.process_memberdefs() - def set_parameters(self, data): - vs = [ddc.value for ddc in data.detaileddescription.content_] - pls = [] - for v in vs: - if hasattr(v, 'parameterlist'): - pls += v.parameterlist - pis = [] - for pl in pls: - pis += pl.parameteritem - dpis = [] - for pi in pis: - dpi = DoxyParameterItem(pi) - dpi._parse() - dpis.append(dpi) - self._data['params'] = dpis - brief_description = property(lambda self: self.data()['brief_description']) detailed_description = property(lambda self: self.data()['detailed_description']) params = property(lambda self: self.data()['params']) diff --git a/docs/doxygen/swig_doc.py b/docs/doxygen/swig_doc.py index 414748bbae..9277470984 100644 --- a/docs/doxygen/swig_doc.py +++ b/docs/doxygen/swig_doc.py @@ -29,7 +29,8 @@ python docstrings. import sys, time -from doxyxml import DoxyIndex, DoxyClass, DoxyFriend, DoxyFunction, DoxyFile, base +from doxyxml import DoxyIndex, DoxyClass, DoxyFriend, DoxyFunction, DoxyFile +from doxyxml import DoxyOther, base def py_name(name): bits = name.split('_') @@ -54,8 +55,27 @@ class Block(object): return False friendname = make_name(item.name()) is_a_block = item.has_member(friendname, DoxyFriend) + # But now sometimes the make function isn't a friend so check again. + if not is_a_block: + is_a_block = di.has_member(friendname, DoxyFunction) return is_a_block +class Block2(object): + """ + Checks if doxyxml produced objects correspond to a new style + gnuradio block. + """ + + @classmethod + def includes(cls, item): + if not isinstance(item, DoxyClass): + return False + # Check for a parsing error. + if item.error(): + return False + is_a_block2 = item.has_member('make', DoxyFunction) and item.has_member('sptr', DoxyOther) + return is_a_block2 + def utoascii(text): """ @@ -141,15 +161,18 @@ def make_func_entry(func, name=None, description=None, params=None): return make_entry(func, name=name, description=description, params=params) -def make_class_entry(klass, description=None): +def make_class_entry(klass, description=None, ignored_methods=[], params=None): """ Create a class docstring for a swig interface file. """ + if params is None: + params = klass.params output = [] - output.append(make_entry(klass, description=description, params=klass.params)) + output.append(make_entry(klass, description=description, params=params)) for func in klass.in_category(DoxyFunction): - name = klass.name() + '::' + func.name() - output.append(make_func_entry(func, name=name)) + if func.name() not in ignored_methods: + name = klass.name() + '::' + func.name() + output.append(make_func_entry(func, name=name)) return "\n\n".join(output) @@ -183,11 +206,32 @@ def make_block_entry(di, block): # the make function. output = [] output.append(make_class_entry(block, description=super_description)) - creator = block.get_member(block.name(), DoxyFunction) output.append(make_func_entry(make_func, description=super_description, params=block.params)) return "\n\n".join(output) +def make_block2_entry(di, block): + """ + Create class and function docstrings of a new style gnuradio block for a + swig interface file. + """ + descriptions = [] + # For new style blocks all the relevant documentation should be + # associated with the 'make' method. + make_func = block.get_member('make', DoxyFunction) + description = combine_descriptions(make_func) + # Associate the combined description with the class and + # the make function. + output = [] + #output.append(make_class_entry( + # block, description=description, + # ignored_methods=['make'], params=make_func.params)) + makename = block.name() + '::make' + output.append(make_func_entry( + make_func, name=makename, description=description, + params=make_func.params)) + return "\n\n".join(output) + def wait_if_necessary(tries, swigdocfilename, item=None): if item is not None: extra = ', item {0}'.format(item.name()) @@ -223,6 +267,7 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None, tries=0): while(1): try: blocks = di.in_category(Block) + blocks2 = di.in_category(Block2) except: tries, try_again = wait_if_necessary(tries, swigdocfilename) if not try_again: @@ -246,10 +291,28 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None, tries=0): raise else: break + for block in blocks2: + while(1): + try: + make_func = block.get_member('make', DoxyFunction) + make_func_name = block.name() +'::make' + # Don't want to risk writing to output twice. + if make_func_name not in make_funcs: + make_funcs.add(make_func_name) + output.append(make_block2_entry(di, block)) + except block.ParsingError: + sys.stderr.write('Parsing error for block {0}\n'.format(block.name())) + except: + tries, try_again = wait_if_necessary(tries, swigdocfilename, block) + if not try_again: + raise + else: + break # Create docstrings for functions # Don't include the make functions since they have already been dealt with. - funcs = [f for f in di.in_category(DoxyFunction) if f.name() not in make_funcs] + funcs = [f for f in di.in_category(DoxyFunction) + if f.name() not in make_funcs and not f.name().startswith('std::')] for f in funcs: try: output.append(make_func_entry(f)) @@ -258,7 +321,9 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None, tries=0): # Create docstrings for classes block_names = [block.name() for block in blocks] - klasses = [k for k in di.in_category(DoxyClass) if k.name() not in block_names] + block_names += [block.name() for block in blocks2] + klasses = [k for k in di.in_category(DoxyClass) + if k.name() not in block_names and not k.name().startswith('std::')] for k in klasses: try: output.append(make_class_entry(k)) diff --git a/docs/sphinx/README b/docs/sphinx/README index c3ac382648..0ae3a43f84 100644 --- a/docs/sphinx/README +++ b/docs/sphinx/README @@ -48,7 +48,7 @@ examples. under the "Slicing and Dicing Streams" subheading. Edit file gnuradio/docs/sphinx/source/gr/slicedice_blk.rst and add the line - >.. autoblock:: gnuradio.gr.myslicer + >.. autooldblock:: gnuradio.gr.myslicer 2) Adding a new python hierarchical block gnuradio.digital.mymod Edit file gnruadio/docs/sphinx/source/digital/index.rst and add the @@ -63,7 +63,10 @@ examples. a python hierarchical signal processing block so that it can format it appropriately. -The process for documenting objects that are not signal processing blocks is -similar but rather than using the 'autoblock' and 'autopyblock' directives -the standard sphinx directives such as 'autofunction' and 'autoclass' can -be used. \ No newline at end of file +The process for documenting objects that are not signal processing +blocks is similar but rather than using the 'autooldblock', and +'autopyblock' directives the standard sphinx directives such as +'autofunction' and 'autoclass' can be used. + +Finally for signal processing blocks using the 3.7 style the directive +'autoblock' rather than 'autooldblock' can be used. \ No newline at end of file diff --git a/docs/sphinx/gnuradio_sphinx.py b/docs/sphinx/gnuradio_sphinx.py index 6f35a6fce9..e8ca867f8c 100644 --- a/docs/sphinx/gnuradio_sphinx.py +++ b/docs/sphinx/gnuradio_sphinx.py @@ -15,6 +15,7 @@ def setup(sp): sp.connect('autodoc-process-signature', fix_signature) sp.connect('autodoc-process-docstring', remove_lines) # Add node to autodocument signal-processing blocks. + sp.add_autodocumenter(OldBlockDocumenter) sp.add_autodocumenter(BlockDocumenter) sp.add_autodocumenter(PyBlockDocumenter) @@ -105,9 +106,10 @@ common_block_members =[ 'thisown', 'to_basic_block', 'unique_id', + 'make', ] -class BlockDocumenter(FunctionDocumenter): +class OldBlockDocumenter(FunctionDocumenter): """ Specialized Documenter subclass for gnuradio blocks. @@ -115,13 +117,13 @@ class BlockDocumenter(FunctionDocumenter): with the wrapped sptr (e.g. gr.gr_head_sptr) to keep the documentation tidier. """ - objtype = 'block' + objtype = 'oldblock' directivetype = 'function' # Don't want to use this for generic functions for give low priority. priority = -10 def __init__(self, *args, **kwargs): - super(BlockDocumenter, self).__init__(*args, **kwargs) + super(OldBlockDocumenter, self).__init__(*args, **kwargs) # Get class name bits = self.name.split('.') if len(bits) != 3 or bits[0] != 'gnuradio': @@ -129,6 +131,36 @@ class BlockDocumenter(FunctionDocumenter): sptr_name = 'gnuradio.{0}.{0}_{1}_sptr'.format(bits[1], bits[2]) # Create a Class Documenter to create documentation for the classes members. self.classdoccer = ClassDocumenter(self.directive, sptr_name, indent=self.content_indent) + self.classdoccer.doc_as_attr = False + self.classdoccer.real_modname = self.classdoccer.get_real_modname() + self.classdoccer.options.members = ALL + self.classdoccer.options.exclude_members = common_block_members + self.classdoccer.parse_name() + self.classdoccer.import_object() + + def document_members(self, *args, **kwargs): + return self.classdoccer.document_members(*args, **kwargs) + +class BlockDocumenter(FunctionDocumenter): + """ + Specialized Documenter subclass for new style gnuradio blocks. + + It merges together the documentation for the generator function (e.g. wavelet.squash_ff) + with the wrapped sptr (e.g. wavelet.squash_ff_sptr) to keep the documentation + tidier. + """ + objtype = 'block' + directivetype = 'function' + # Don't want to use this for generic functions for give low priority. + priority = -10 + + def __init__(self, *args, **kwargs): + super(BlockDocumenter, self).__init__(*args, **kwargs) + # Get class name + sptr_name = self.name + '_sptr' + # Create a Class Documenter to create documentation for the classes members. + self.classdoccer = ClassDocumenter(self.directive, sptr_name, indent=self.content_indent) + self.classdoccer.doc_as_attr = False self.classdoccer.real_modname = self.classdoccer.get_real_modname() self.classdoccer.options.members = ALL self.classdoccer.options.exclude_members = common_block_members diff --git a/docs/sphinx/source/atsc/blks.rst b/docs/sphinx/source/atsc/blks.rst index ce26f095b1..6f51a22876 100644 --- a/docs/sphinx/source/atsc/blks.rst +++ b/docs/sphinx/source/atsc/blks.rst @@ -1,20 +1,20 @@ gnuradio.atsc: Signal Processing Blocks ======================================= -.. autoblock:: gnuradio.atsc.bit_timing_loop -.. autoblock:: gnuradio.atsc.deinterleaver -.. autoblock:: gnuradio.atsc.depad -.. autoblock:: gnuradio.atsc.derandomizer -.. autoblock:: gnuradio.atsc.ds_to_softds -.. autoblock:: gnuradio.atsc.equalizer -.. autoblock:: gnuradio.atsc.field_sync_demux -.. autoblock:: gnuradio.atsc.field_sync_mux -.. autoblock:: gnuradio.atsc.fpll -.. autoblock:: gnuradio.atsc.fs_checker -.. autoblock:: gnuradio.atsc.interleaver -.. autoblock:: gnuradio.atsc.pad -.. autoblock:: gnuradio.atsc.randomizer -.. autoblock:: gnuradio.atsc.rs_decoder -.. autoblock:: gnuradio.atsc.rs_encoder -.. autoblock:: gnuradio.atsc.trellis_encoder -.. autoblock:: gnuradio.atsc.viterbi_decoder +.. autooldblock:: gnuradio.atsc.bit_timing_loop +.. autooldblock:: gnuradio.atsc.deinterleaver +.. autooldblock:: gnuradio.atsc.depad +.. autooldblock:: gnuradio.atsc.derandomizer +.. autooldblock:: gnuradio.atsc.ds_to_softds +.. autooldblock:: gnuradio.atsc.equalizer +.. autooldblock:: gnuradio.atsc.field_sync_demux +.. autooldblock:: gnuradio.atsc.field_sync_mux +.. autooldblock:: gnuradio.atsc.fpll +.. autooldblock:: gnuradio.atsc.fs_checker +.. autooldblock:: gnuradio.atsc.interleaver +.. autooldblock:: gnuradio.atsc.pad +.. autooldblock:: gnuradio.atsc.randomizer +.. autooldblock:: gnuradio.atsc.rs_decoder +.. autooldblock:: gnuradio.atsc.rs_encoder +.. autooldblock:: gnuradio.atsc.trellis_encoder +.. autooldblock:: gnuradio.atsc.viterbi_decoder diff --git a/docs/sphinx/source/audio/index.rst b/docs/sphinx/source/audio/index.rst index 31d53567b8..d0bc4f3c08 100644 --- a/docs/sphinx/source/audio/index.rst +++ b/docs/sphinx/source/audio/index.rst @@ -3,5 +3,5 @@ gnuradio.audio .. automodule:: gnuradio.audio -.. autoblock:: gnuradio.audio.source -.. autoblock:: gnuradio.audio.sink +.. autooldblock:: gnuradio.audio.source +.. autooldblock:: gnuradio.audio.sink diff --git a/docs/sphinx/source/digital/blocks.rst b/docs/sphinx/source/digital/blocks.rst index 2ac228d4ea..68ec8dad1c 100644 --- a/docs/sphinx/source/digital/blocks.rst +++ b/docs/sphinx/source/digital/blocks.rst @@ -1,22 +1,22 @@ gnuradio.digital: Signal Processing Blocks ========================================== -.. autoblock:: gnuradio.digital.fll_band_edge_cc -.. autoblock:: gnuradio.digital.kurtotic_equalizer_cc -.. autoblock:: gnuradio.digital.lms_dd_equalizer_cc -.. autoblock:: gnuradio.digital.mpsk_receiver_cc -.. autoblock:: gnuradio.digital.mpsk_snr_est_cc -.. autoblock:: gnuradio.digital.clock_recovery_mm_cc -.. autoblock:: gnuradio.digital.clock_recovery_mm_ff -.. autoblock:: gnuradio.digital.constellation_decoder_cb -.. autoblock:: gnuradio.digital.constellation_receiver_cb -.. autoblock:: gnuradio.digital.correlate_access_code_bb -.. autoblock:: gnuradio.digital.costas_loop_cc -.. autoblock:: gnuradio.digital.cma_equalizer_cc -.. autoblock:: gnuradio.digital.binary_slicer_fb -.. autoblock:: gnuradio.digital.gmskmod_bc -.. autoblock:: gnuradio.digital.probe_mpsk_snr_est_c -.. autoblock:: gnuradio.digital.cpmmod_bc +.. autooldblock:: gnuradio.digital.fll_band_edge_cc +.. autooldblock:: gnuradio.digital.kurtotic_equalizer_cc +.. autooldblock:: gnuradio.digital.lms_dd_equalizer_cc +.. autooldblock:: gnuradio.digital.mpsk_receiver_cc +.. autooldblock:: gnuradio.digital.mpsk_snr_est_cc +.. autooldblock:: gnuradio.digital.clock_recovery_mm_cc +.. autooldblock:: gnuradio.digital.clock_recovery_mm_ff +.. autooldblock:: gnuradio.digital.constellation_decoder_cb +.. autooldblock:: gnuradio.digital.constellation_receiver_cb +.. autooldblock:: gnuradio.digital.correlate_access_code_bb +.. autooldblock:: gnuradio.digital.costas_loop_cc +.. autooldblock:: gnuradio.digital.cma_equalizer_cc +.. autooldblock:: gnuradio.digital.binary_slicer_fb +.. autooldblock:: gnuradio.digital.gmskmod_bc +.. autooldblock:: gnuradio.digital.probe_mpsk_snr_est_c +.. autooldblock:: gnuradio.digital.cpmmod_bc .. autopyblock:: gnuradio.digital.generic_demod .. autopyblock:: gnuradio.digital.generic_mod .. autopyblock:: gnuradio.digital.bpsk.dbpsk_demod diff --git a/docs/sphinx/source/gr/coding_blk.rst b/docs/sphinx/source/gr/coding_blk.rst index 87196a5aeb..e50b990bcd 100644 --- a/docs/sphinx/source/gr/coding_blk.rst +++ b/docs/sphinx/source/gr/coding_blk.rst @@ -1,11 +1,11 @@ gnuradio.gr: Information Coding and Decoding ============================================ -.. autoblock:: gnuradio.gr.additive_scrambler_bb -.. autoblock:: gnuradio.gr.descrambler_bb -.. autoblock:: gnuradio.gr.diff_decoder_bb -.. autoblock:: gnuradio.gr.diff_encoder_bb -.. autoblock:: gnuradio.gr.fake_channel_encoder_pp -.. autoblock:: gnuradio.gr.fake_channel_decoder_pp -.. autoblock:: gnuradio.gr.map_bb -.. autoblock:: gnuradio.gr.scrambler_bb +.. autooldblock:: gnuradio.gr.additive_scrambler_bb +.. autooldblock:: gnuradio.gr.descrambler_bb +.. autooldblock:: gnuradio.gr.diff_decoder_bb +.. autooldblock:: gnuradio.gr.diff_encoder_bb +.. autooldblock:: gnuradio.gr.fake_channel_encoder_pp +.. autooldblock:: gnuradio.gr.fake_channel_decoder_pp +.. autooldblock:: gnuradio.gr.map_bb +.. autooldblock:: gnuradio.gr.scrambler_bb diff --git a/docs/sphinx/source/gr/converter_blk.rst b/docs/sphinx/source/gr/converter_blk.rst index b0ddd1d8a9..790109a94f 100644 --- a/docs/sphinx/source/gr/converter_blk.rst +++ b/docs/sphinx/source/gr/converter_blk.rst @@ -1,32 +1,32 @@ gnuradio.gr: Type Conversions ============================= -.. autoblock:: gnuradio.gr.bytes_to_syms -.. autoblock:: gnuradio.gr.char_to_float -.. autoblock:: gnuradio.gr.complex_to_interleaved_short -.. autoblock:: gnuradio.gr.complex_to_float -.. autoblock:: gnuradio.gr.complex_to_real -.. autoblock:: gnuradio.gr.complex_to_imag -.. autoblock:: gnuradio.gr.complex_to_mag -.. autoblock:: gnuradio.gr.complex_to_mag_squared -.. autoblock:: gnuradio.gr.complex_to_arg -.. autoblock:: gnuradio.gr.float_to_char -.. autoblock:: gnuradio.gr.float_to_complex -.. autoblock:: gnuradio.gr.float_to_short -.. autoblock:: gnuradio.gr.float_to_uchar -.. autoblock:: gnuradio.gr.interleaved_short_to_complex -.. autoblock:: gnuradio.gr.short_to_float -.. autoblock:: gnuradio.gr.uchar_to_float -.. autoblock:: gnuradio.gr.unpack_k_bits_bb -.. autoblock:: gnuradio.gr.chunks_to_symbols_bc -.. autoblock:: gnuradio.gr.chunks_to_symbols_bf -.. autoblock:: gnuradio.gr.chunks_to_symbols_ic -.. autoblock:: gnuradio.gr.chunks_to_symbols_if -.. autoblock:: gnuradio.gr.chunks_to_symbols_sc -.. autoblock:: gnuradio.gr.chunks_to_symbols_sf -.. autoblock:: gnuradio.gr.packed_to_unpacked_bb -.. autoblock:: gnuradio.gr.packed_to_unpacked_ii -.. autoblock:: gnuradio.gr.packed_to_unpacked_ss -.. autoblock:: gnuradio.gr.unpacked_to_packed_bb -.. autoblock:: gnuradio.gr.unpacked_to_packed_ii -.. autoblock:: gnuradio.gr.unpacked_to_packed_ss +.. autooldblock:: gnuradio.gr.bytes_to_syms +.. autooldblock:: gnuradio.gr.char_to_float +.. autooldblock:: gnuradio.gr.complex_to_interleaved_short +.. autooldblock:: gnuradio.gr.complex_to_float +.. autooldblock:: gnuradio.gr.complex_to_real +.. autooldblock:: gnuradio.gr.complex_to_imag +.. autooldblock:: gnuradio.gr.complex_to_mag +.. autooldblock:: gnuradio.gr.complex_to_mag_squared +.. autooldblock:: gnuradio.gr.complex_to_arg +.. autooldblock:: gnuradio.gr.float_to_char +.. autooldblock:: gnuradio.gr.float_to_complex +.. autooldblock:: gnuradio.gr.float_to_short +.. autooldblock:: gnuradio.gr.float_to_uchar +.. autooldblock:: gnuradio.gr.interleaved_short_to_complex +.. autooldblock:: gnuradio.gr.short_to_float +.. autooldblock:: gnuradio.gr.uchar_to_float +.. autooldblock:: gnuradio.gr.unpack_k_bits_bb +.. autooldblock:: gnuradio.gr.chunks_to_symbols_bc +.. autooldblock:: gnuradio.gr.chunks_to_symbols_bf +.. autooldblock:: gnuradio.gr.chunks_to_symbols_ic +.. autooldblock:: gnuradio.gr.chunks_to_symbols_if +.. autooldblock:: gnuradio.gr.chunks_to_symbols_sc +.. autooldblock:: gnuradio.gr.chunks_to_symbols_sf +.. autooldblock:: gnuradio.gr.packed_to_unpacked_bb +.. autooldblock:: gnuradio.gr.packed_to_unpacked_ii +.. autooldblock:: gnuradio.gr.packed_to_unpacked_ss +.. autooldblock:: gnuradio.gr.unpacked_to_packed_bb +.. autooldblock:: gnuradio.gr.unpacked_to_packed_ii +.. autooldblock:: gnuradio.gr.unpacked_to_packed_ss diff --git a/docs/sphinx/source/gr/demodulation_blk.rst b/docs/sphinx/source/gr/demodulation_blk.rst index e5a9354340..4f800b642b 100644 --- a/docs/sphinx/source/gr/demodulation_blk.rst +++ b/docs/sphinx/source/gr/demodulation_blk.rst @@ -1,4 +1,4 @@ gnuradio.gr: Demodulation ========================= -.. autoblock:: gnuradio.gr.quadrature_demod_cf +.. autooldblock:: gnuradio.gr.quadrature_demod_cf diff --git a/docs/sphinx/source/gr/dft_blk.rst b/docs/sphinx/source/gr/dft_blk.rst index a93119969b..4ac1d2e621 100644 --- a/docs/sphinx/source/gr/dft_blk.rst +++ b/docs/sphinx/source/gr/dft_blk.rst @@ -1,6 +1,6 @@ gnuradio.gr: Fourier Transform ============================== -.. autoblock:: gnuradio.gr.goertzel_fc -.. autoblock:: gnuradio.gr.fft_vcc -.. autoblock:: gnuradio.gr.fft_vfc +.. autooldblock:: gnuradio.gr.goertzel_fc +.. autooldblock:: gnuradio.gr.fft_vcc +.. autooldblock:: gnuradio.gr.fft_vfc diff --git a/docs/sphinx/source/gr/filter_blk.rst b/docs/sphinx/source/gr/filter_blk.rst index 767ee4b741..a73ddda2a8 100644 --- a/docs/sphinx/source/gr/filter_blk.rst +++ b/docs/sphinx/source/gr/filter_blk.rst @@ -1,46 +1,46 @@ gnuradio.gr: Filters ==================== -.. autoblock:: gnuradio.gr.fft_filter_ccc -.. autoblock:: gnuradio.gr.fft_filter_fff -.. autoblock:: gnuradio.gr.filter_delay_fc -.. autoblock:: gnuradio.gr.fir_filter_ccc -.. autoblock:: gnuradio.gr.fir_filter_ccf -.. autoblock:: gnuradio.gr.fir_filter_fcc -.. autoblock:: gnuradio.gr.fir_filter_fff -.. autoblock:: gnuradio.gr.fir_filter_fsf -.. autoblock:: gnuradio.gr.fir_filter_scc -.. autoblock:: gnuradio.gr.fractional_interpolator_cc -.. autoblock:: gnuradio.gr.fractional_interpolator_ff -.. autoblock:: gnuradio.gr.freq_xlating_fir_filter_ccc -.. autoblock:: gnuradio.gr.freq_xlating_fir_filter_ccf -.. autoblock:: gnuradio.gr.freq_xlating_fir_filter_fcc -.. autoblock:: gnuradio.gr.freq_xlating_fir_filter_fcf -.. autoblock:: gnuradio.gr.freq_xlating_fir_filter_scc -.. autoblock:: gnuradio.gr.freq_xlating_fir_filter_scf -.. autoblock:: gnuradio.gr.hilbert_fc -.. autoblock:: gnuradio.gr.iir_filter_ffd -.. autoblock:: gnuradio.gr.interp_fir_filter_ccc -.. autoblock:: gnuradio.gr.interp_fir_filter_ccf -.. autoblock:: gnuradio.gr.interp_fir_filter_fcc -.. autoblock:: gnuradio.gr.interp_fir_filter_fff -.. autoblock:: gnuradio.gr.interp_fir_filter_fsf -.. autoblock:: gnuradio.gr.interp_fir_filter_scc -.. autoblock:: gnuradio.gr.rational_resampler_base_ccc -.. autoblock:: gnuradio.gr.rational_resampler_base_ccf -.. autoblock:: gnuradio.gr.rational_resampler_base_fcc -.. autoblock:: gnuradio.gr.rational_resampler_base_fff -.. autoblock:: gnuradio.gr.rational_resampler_base_fsf -.. autoblock:: gnuradio.gr.rational_resampler_base_scc -.. autoblock:: gnuradio.gr.single_pole_iir_filter_cc -.. autoblock:: gnuradio.gr.single_pole_iir_filter_ff -.. autoblock:: gnuradio.gr.moving_average_cc -.. autoblock:: gnuradio.gr.moving_average_ff -.. autoblock:: gnuradio.gr.moving_average_ii -.. autoblock:: gnuradio.gr.moving_average_ss -.. autoblock:: gnuradio.gr.pfb_arb_resampler_ccf -.. autoblock:: gnuradio.gr.pfb_channelizer_ccf -.. autoblock:: gnuradio.gr.pfb_clock_sync_ccf -.. autoblock:: gnuradio.gr.pfb_clock_sync_fff -.. autoblock:: gnuradio.gr.pfb_decimator_ccf -.. autoblock:: gnuradio.gr.pfb_interpolator_ccf +.. autooldblock:: gnuradio.gr.fft_filter_ccc +.. autooldblock:: gnuradio.gr.fft_filter_fff +.. autooldblock:: gnuradio.gr.filter_delay_fc +.. autooldblock:: gnuradio.gr.fir_filter_ccc +.. autooldblock:: gnuradio.gr.fir_filter_ccf +.. autooldblock:: gnuradio.gr.fir_filter_fcc +.. autooldblock:: gnuradio.gr.fir_filter_fff +.. autooldblock:: gnuradio.gr.fir_filter_fsf +.. autooldblock:: gnuradio.gr.fir_filter_scc +.. autooldblock:: gnuradio.gr.fractional_interpolator_cc +.. autooldblock:: gnuradio.gr.fractional_interpolator_ff +.. autooldblock:: gnuradio.gr.freq_xlating_fir_filter_ccc +.. autooldblock:: gnuradio.gr.freq_xlating_fir_filter_ccf +.. autooldblock:: gnuradio.gr.freq_xlating_fir_filter_fcc +.. autooldblock:: gnuradio.gr.freq_xlating_fir_filter_fcf +.. autooldblock:: gnuradio.gr.freq_xlating_fir_filter_scc +.. autooldblock:: gnuradio.gr.freq_xlating_fir_filter_scf +.. autooldblock:: gnuradio.gr.hilbert_fc +.. autooldblock:: gnuradio.gr.iir_filter_ffd +.. autooldblock:: gnuradio.gr.interp_fir_filter_ccc +.. autooldblock:: gnuradio.gr.interp_fir_filter_ccf +.. autooldblock:: gnuradio.gr.interp_fir_filter_fcc +.. autooldblock:: gnuradio.gr.interp_fir_filter_fff +.. autooldblock:: gnuradio.gr.interp_fir_filter_fsf +.. autooldblock:: gnuradio.gr.interp_fir_filter_scc +.. autooldblock:: gnuradio.gr.rational_resampler_base_ccc +.. autooldblock:: gnuradio.gr.rational_resampler_base_ccf +.. autooldblock:: gnuradio.gr.rational_resampler_base_fcc +.. autooldblock:: gnuradio.gr.rational_resampler_base_fff +.. autooldblock:: gnuradio.gr.rational_resampler_base_fsf +.. autooldblock:: gnuradio.gr.rational_resampler_base_scc +.. autooldblock:: gnuradio.gr.single_pole_iir_filter_cc +.. autooldblock:: gnuradio.gr.single_pole_iir_filter_ff +.. autooldblock:: gnuradio.gr.moving_average_cc +.. autooldblock:: gnuradio.gr.moving_average_ff +.. autooldblock:: gnuradio.gr.moving_average_ii +.. autooldblock:: gnuradio.gr.moving_average_ss +.. autooldblock:: gnuradio.gr.pfb_arb_resampler_ccf +.. autooldblock:: gnuradio.gr.pfb_channelizer_ccf +.. autooldblock:: gnuradio.gr.pfb_clock_sync_ccf +.. autooldblock:: gnuradio.gr.pfb_clock_sync_fff +.. autooldblock:: gnuradio.gr.pfb_decimator_ccf +.. autooldblock:: gnuradio.gr.pfb_interpolator_ccf diff --git a/docs/sphinx/source/gr/level_blk.rst b/docs/sphinx/source/gr/level_blk.rst index 77ba2270df..d6c565c65d 100644 --- a/docs/sphinx/source/gr/level_blk.rst +++ b/docs/sphinx/source/gr/level_blk.rst @@ -1,26 +1,26 @@ gnuradio.gr: Signal Level Control (AGC) ======================================= -.. autoblock:: gnuradio.gr.agc2_cc -.. autoblock:: gnuradio.gr.agc2_ff -.. autoblock:: gnuradio.gr.agc_cc -.. autoblock:: gnuradio.gr.agc_ff -.. autoblock:: gnuradio.gr.ctcss_squelch_ff -.. autoblock:: gnuradio.gr.dpll_bb -.. autoblock:: gnuradio.gr.feedforward_agc_cc -.. autoblock:: gnuradio.gr.peak_detector2_fb -.. autoblock:: gnuradio.gr.pwr_squelch_cc -.. autoblock:: gnuradio.gr.pwr_squelch_ff -.. autoblock:: gnuradio.gr.regenerate_bb -.. autoblock:: gnuradio.gr.simple_squelch_cc -.. autoblock:: gnuradio.gr.mute_cc -.. autoblock:: gnuradio.gr.mute_ff -.. autoblock:: gnuradio.gr.mute_ii -.. autoblock:: gnuradio.gr.mute_ss -.. autoblock:: gnuradio.gr.peak_detector_fb -.. autoblock:: gnuradio.gr.peak_detector_ib -.. autoblock:: gnuradio.gr.peak_detector_sb -.. autoblock:: gnuradio.gr.sample_and_hold_bb -.. autoblock:: gnuradio.gr.sample_and_hold_ff -.. autoblock:: gnuradio.gr.sample_and_hold_ii -.. autoblock:: gnuradio.gr.sample_and_hold_ss +.. autooldblock:: gnuradio.gr.agc2_cc +.. autooldblock:: gnuradio.gr.agc2_ff +.. autooldblock:: gnuradio.gr.agc_cc +.. autooldblock:: gnuradio.gr.agc_ff +.. autooldblock:: gnuradio.gr.ctcss_squelch_ff +.. autooldblock:: gnuradio.gr.dpll_bb +.. autooldblock:: gnuradio.gr.feedforward_agc_cc +.. autooldblock:: gnuradio.gr.peak_detector2_fb +.. autooldblock:: gnuradio.gr.pwr_squelch_cc +.. autooldblock:: gnuradio.gr.pwr_squelch_ff +.. autooldblock:: gnuradio.gr.regenerate_bb +.. autooldblock:: gnuradio.gr.simple_squelch_cc +.. autooldblock:: gnuradio.gr.mute_cc +.. autooldblock:: gnuradio.gr.mute_ff +.. autooldblock:: gnuradio.gr.mute_ii +.. autooldblock:: gnuradio.gr.mute_ss +.. autooldblock:: gnuradio.gr.peak_detector_fb +.. autooldblock:: gnuradio.gr.peak_detector_ib +.. autooldblock:: gnuradio.gr.peak_detector_sb +.. autooldblock:: gnuradio.gr.sample_and_hold_bb +.. autooldblock:: gnuradio.gr.sample_and_hold_ff +.. autooldblock:: gnuradio.gr.sample_and_hold_ii +.. autooldblock:: gnuradio.gr.sample_and_hold_ss diff --git a/docs/sphinx/source/gr/math_blk.rst b/docs/sphinx/source/gr/math_blk.rst index a2ef51922e..7b9437f995 100644 --- a/docs/sphinx/source/gr/math_blk.rst +++ b/docs/sphinx/source/gr/math_blk.rst @@ -1,59 +1,59 @@ gnuradio.gr: Mathematics ======================== -.. autoblock:: gnuradio.gr.conjugate_cc -.. autoblock:: gnuradio.gr.nlog10_ff -.. autoblock:: gnuradio.gr.rms_cf -.. autoblock:: gnuradio.gr.rms_ff -.. autoblock:: gnuradio.gr.add_cc -.. autoblock:: gnuradio.gr.add_const_cc -.. autoblock:: gnuradio.gr.add_const_ff -.. autoblock:: gnuradio.gr.add_const_ii -.. autoblock:: gnuradio.gr.add_const_sf -.. autoblock:: gnuradio.gr.add_const_ss -.. autoblock:: gnuradio.gr.add_const_vcc -.. autoblock:: gnuradio.gr.add_const_vff -.. autoblock:: gnuradio.gr.add_const_vii -.. autoblock:: gnuradio.gr.add_const_vss -.. autoblock:: gnuradio.gr.add_ff -.. autoblock:: gnuradio.gr.add_ii -.. autoblock:: gnuradio.gr.add_ss -.. autoblock:: gnuradio.gr.and_bb -.. autoblock:: gnuradio.gr.and_const_bb -.. autoblock:: gnuradio.gr.and_const_ii -.. autoblock:: gnuradio.gr.and_const_ss -.. autoblock:: gnuradio.gr.and_ii -.. autoblock:: gnuradio.gr.and_ss -.. autoblock:: gnuradio.gr.divide_cc -.. autoblock:: gnuradio.gr.divide_ff -.. autoblock:: gnuradio.gr.divide_ii -.. autoblock:: gnuradio.gr.divide_ss -.. autoblock:: gnuradio.gr.integrate_cc -.. autoblock:: gnuradio.gr.integrate_ff -.. autoblock:: gnuradio.gr.integrate_ii -.. autoblock:: gnuradio.gr.integrate_ss -.. autoblock:: gnuradio.gr.multiply_cc -.. autoblock:: gnuradio.gr.multiply_const_cc -.. autoblock:: gnuradio.gr.multiply_const_ff -.. autoblock:: gnuradio.gr.multiply_const_ii -.. autoblock:: gnuradio.gr.multiply_const_ss -.. autoblock:: gnuradio.gr.multiply_const_vcc -.. autoblock:: gnuradio.gr.multiply_const_vff -.. autoblock:: gnuradio.gr.multiply_const_vii -.. autoblock:: gnuradio.gr.multiply_const_vss -.. autoblock:: gnuradio.gr.multiply_ff -.. autoblock:: gnuradio.gr.multiply_ii -.. autoblock:: gnuradio.gr.multiply_ss -.. autoblock:: gnuradio.gr.not_bb -.. autoblock:: gnuradio.gr.not_ii -.. autoblock:: gnuradio.gr.not_ss -.. autoblock:: gnuradio.gr.or_bb -.. autoblock:: gnuradio.gr.or_ii -.. autoblock:: gnuradio.gr.or_ss -.. autoblock:: gnuradio.gr.sub_cc -.. autoblock:: gnuradio.gr.sub_ff -.. autoblock:: gnuradio.gr.sub_ii -.. autoblock:: gnuradio.gr.sub_ss -.. autoblock:: gnuradio.gr.xor_bb -.. autoblock:: gnuradio.gr.xor_ii -.. autoblock:: gnuradio.gr.xor_ss +.. autooldblock:: gnuradio.gr.conjugate_cc +.. autooldblock:: gnuradio.gr.nlog10_ff +.. autooldblock:: gnuradio.gr.rms_cf +.. autooldblock:: gnuradio.gr.rms_ff +.. autooldblock:: gnuradio.gr.add_cc +.. autooldblock:: gnuradio.gr.add_const_cc +.. autooldblock:: gnuradio.gr.add_const_ff +.. autooldblock:: gnuradio.gr.add_const_ii +.. autooldblock:: gnuradio.gr.add_const_sf +.. autooldblock:: gnuradio.gr.add_const_ss +.. autooldblock:: gnuradio.gr.add_const_vcc +.. autooldblock:: gnuradio.gr.add_const_vff +.. autooldblock:: gnuradio.gr.add_const_vii +.. autooldblock:: gnuradio.gr.add_const_vss +.. autooldblock:: gnuradio.gr.add_ff +.. autooldblock:: gnuradio.gr.add_ii +.. autooldblock:: gnuradio.gr.add_ss +.. autooldblock:: gnuradio.gr.and_bb +.. autooldblock:: gnuradio.gr.and_const_bb +.. autooldblock:: gnuradio.gr.and_const_ii +.. autooldblock:: gnuradio.gr.and_const_ss +.. autooldblock:: gnuradio.gr.and_ii +.. autooldblock:: gnuradio.gr.and_ss +.. autooldblock:: gnuradio.gr.divide_cc +.. autooldblock:: gnuradio.gr.divide_ff +.. autooldblock:: gnuradio.gr.divide_ii +.. autooldblock:: gnuradio.gr.divide_ss +.. autooldblock:: gnuradio.gr.integrate_cc +.. autooldblock:: gnuradio.gr.integrate_ff +.. autooldblock:: gnuradio.gr.integrate_ii +.. autooldblock:: gnuradio.gr.integrate_ss +.. autooldblock:: gnuradio.gr.multiply_cc +.. autooldblock:: gnuradio.gr.multiply_const_cc +.. autooldblock:: gnuradio.gr.multiply_const_ff +.. autooldblock:: gnuradio.gr.multiply_const_ii +.. autooldblock:: gnuradio.gr.multiply_const_ss +.. autooldblock:: gnuradio.gr.multiply_const_vcc +.. autooldblock:: gnuradio.gr.multiply_const_vff +.. autooldblock:: gnuradio.gr.multiply_const_vii +.. autooldblock:: gnuradio.gr.multiply_const_vss +.. autooldblock:: gnuradio.gr.multiply_ff +.. autooldblock:: gnuradio.gr.multiply_ii +.. autooldblock:: gnuradio.gr.multiply_ss +.. autooldblock:: gnuradio.gr.not_bb +.. autooldblock:: gnuradio.gr.not_ii +.. autooldblock:: gnuradio.gr.not_ss +.. autooldblock:: gnuradio.gr.or_bb +.. autooldblock:: gnuradio.gr.or_ii +.. autooldblock:: gnuradio.gr.or_ss +.. autooldblock:: gnuradio.gr.sub_cc +.. autooldblock:: gnuradio.gr.sub_ff +.. autooldblock:: gnuradio.gr.sub_ii +.. autooldblock:: gnuradio.gr.sub_ss +.. autooldblock:: gnuradio.gr.xor_bb +.. autooldblock:: gnuradio.gr.xor_ii +.. autooldblock:: gnuradio.gr.xor_ss diff --git a/docs/sphinx/source/gr/misc_blk.rst b/docs/sphinx/source/gr/misc_blk.rst index f3bd2d943b..c69293056c 100644 --- a/docs/sphinx/source/gr/misc_blk.rst +++ b/docs/sphinx/source/gr/misc_blk.rst @@ -1,12 +1,12 @@ gnuradio.gr: Miscellaneous Blocks ================================= -.. autoblock:: gnuradio.gr.copy -.. autoblock:: gnuradio.gr.delay -.. autoblock:: gnuradio.gr.kludge_copy -.. autoblock:: gnuradio.gr.nop -.. autoblock:: gnuradio.gr.pa_2x2_phase_combiner -.. autoblock:: gnuradio.gr.repeat -.. autoblock:: gnuradio.gr.threshold_ff -.. autoblock:: gnuradio.gr.throttle -.. autoblock:: gnuradio.gr.channel_model +.. autooldblock:: gnuradio.gr.copy +.. autooldblock:: gnuradio.gr.delay +.. autooldblock:: gnuradio.gr.kludge_copy +.. autooldblock:: gnuradio.gr.nop +.. autooldblock:: gnuradio.gr.pa_2x2_phase_combiner +.. autooldblock:: gnuradio.gr.repeat +.. autooldblock:: gnuradio.gr.threshold_ff +.. autooldblock:: gnuradio.gr.throttle +.. autooldblock:: gnuradio.gr.channel_model diff --git a/docs/sphinx/source/gr/modulation_blk.rst b/docs/sphinx/source/gr/modulation_blk.rst index 7cc54d9dc5..1fff4614ca 100644 --- a/docs/sphinx/source/gr/modulation_blk.rst +++ b/docs/sphinx/source/gr/modulation_blk.rst @@ -1,6 +1,6 @@ gnuradio.gr: Modulation ======================= -.. autoblock:: gnuradio.gr.cpfsk_bc -.. autoblock:: gnuradio.gr.frequency_modulator_fc -.. autoblock:: gnuradio.gr.phase_modulator_fc +.. autooldblock:: gnuradio.gr.cpfsk_bc +.. autooldblock:: gnuradio.gr.frequency_modulator_fc +.. autooldblock:: gnuradio.gr.phase_modulator_fc diff --git a/docs/sphinx/source/gr/sink_blk.rst b/docs/sphinx/source/gr/sink_blk.rst index 8e5c7a4036..7608ff09b0 100644 --- a/docs/sphinx/source/gr/sink_blk.rst +++ b/docs/sphinx/source/gr/sink_blk.rst @@ -1,25 +1,25 @@ gnuradio.gr: Signal Sinks ========================= -.. autoblock:: gnuradio.gr.bin_statistics_f -.. autoblock:: gnuradio.gr.check_counting_s -.. autoblock:: gnuradio.gr.check_lfsr_32k_s -.. autoblock:: gnuradio.gr.framer_sink_1 -.. autoblock:: gnuradio.gr.null_sink -.. autoblock:: gnuradio.gr.packet_sink -.. autoblock:: gnuradio.gr.probe_avg_mag_sqrd_c -.. autoblock:: gnuradio.gr.probe_avg_mag_sqrd_cf -.. autoblock:: gnuradio.gr.probe_avg_mag_sqrd_f -.. autoblock:: gnuradio.gr.probe_signal_f -.. autoblock:: gnuradio.gr.vector_sink_b -.. autoblock:: gnuradio.gr.vector_sink_c -.. autoblock:: gnuradio.gr.vector_sink_f -.. autoblock:: gnuradio.gr.vector_sink_i -.. autoblock:: gnuradio.gr.vector_sink_s -.. autoblock:: gnuradio.gr.file_descriptor_sink -.. autoblock:: gnuradio.gr.file_sink -.. autoblock:: gnuradio.gr.histo_sink_f -.. autoblock:: gnuradio.gr.message_sink -.. autoblock:: gnuradio.gr.oscope_sink_f -.. autoblock:: gnuradio.gr.udp_sink -.. autoblock:: gnuradio.gr.wavfile_sink +.. autooldblock:: gnuradio.gr.bin_statistics_f +.. autooldblock:: gnuradio.gr.check_counting_s +.. autooldblock:: gnuradio.gr.check_lfsr_32k_s +.. autooldblock:: gnuradio.gr.framer_sink_1 +.. autooldblock:: gnuradio.gr.null_sink +.. autooldblock:: gnuradio.gr.packet_sink +.. autooldblock:: gnuradio.gr.probe_avg_mag_sqrd_c +.. autooldblock:: gnuradio.gr.probe_avg_mag_sqrd_cf +.. autooldblock:: gnuradio.gr.probe_avg_mag_sqrd_f +.. autooldblock:: gnuradio.gr.probe_signal_f +.. autooldblock:: gnuradio.gr.vector_sink_b +.. autooldblock:: gnuradio.gr.vector_sink_c +.. autooldblock:: gnuradio.gr.vector_sink_f +.. autooldblock:: gnuradio.gr.vector_sink_i +.. autooldblock:: gnuradio.gr.vector_sink_s +.. autooldblock:: gnuradio.gr.file_descriptor_sink +.. autooldblock:: gnuradio.gr.file_sink +.. autooldblock:: gnuradio.gr.histo_sink_f +.. autooldblock:: gnuradio.gr.message_sink +.. autooldblock:: gnuradio.gr.oscope_sink_f +.. autooldblock:: gnuradio.gr.udp_sink +.. autooldblock:: gnuradio.gr.wavfile_sink diff --git a/docs/sphinx/source/gr/slicedice_blk.rst b/docs/sphinx/source/gr/slicedice_blk.rst index 0bb5719ea6..e845627aad 100644 --- a/docs/sphinx/source/gr/slicedice_blk.rst +++ b/docs/sphinx/source/gr/slicedice_blk.rst @@ -1,14 +1,14 @@ gnuradio.gr: Slicing and Dicing Streams ======================================= -.. autoblock:: gnuradio.gr.deinterleave -.. autoblock:: gnuradio.gr.head -.. autoblock:: gnuradio.gr.interleave -.. autoblock:: gnuradio.gr.keep_one_in_n -.. autoblock:: gnuradio.gr.skiphead -.. autoblock:: gnuradio.gr.stream_to_streams -.. autoblock:: gnuradio.gr.stream_to_vector -.. autoblock:: gnuradio.gr.streams_to_stream -.. autoblock:: gnuradio.gr.streams_to_vector -.. autoblock:: gnuradio.gr.vector_to_stream -.. autoblock:: gnuradio.gr.vector_to_streams +.. autooldblock:: gnuradio.gr.deinterleave +.. autooldblock:: gnuradio.gr.head +.. autooldblock:: gnuradio.gr.interleave +.. autooldblock:: gnuradio.gr.keep_one_in_n +.. autooldblock:: gnuradio.gr.skiphead +.. autooldblock:: gnuradio.gr.stream_to_streams +.. autooldblock:: gnuradio.gr.stream_to_vector +.. autooldblock:: gnuradio.gr.streams_to_stream +.. autooldblock:: gnuradio.gr.streams_to_vector +.. autooldblock:: gnuradio.gr.vector_to_stream +.. autooldblock:: gnuradio.gr.vector_to_streams diff --git a/docs/sphinx/source/gr/source_blk.rst b/docs/sphinx/source/gr/source_blk.rst index e6e24e1b54..df873bcf74 100644 --- a/docs/sphinx/source/gr/source_blk.rst +++ b/docs/sphinx/source/gr/source_blk.rst @@ -1,26 +1,26 @@ gnuradio.gr: Signal Sources =========================== -.. autoblock:: gnuradio.gr.glfsr_source_b -.. autoblock:: gnuradio.gr.glfsr_source_f -.. autoblock:: gnuradio.gr.lfsr_32k_source_s -.. autoblock:: gnuradio.gr.null_source -.. autoblock:: gnuradio.gr.noise_source_c -.. autoblock:: gnuradio.gr.noise_source_f -.. autoblock:: gnuradio.gr.noise_source_i -.. autoblock:: gnuradio.gr.noise_source_s -.. autoblock:: gnuradio.gr.sig_source_c -.. autoblock:: gnuradio.gr.sig_source_f -.. autoblock:: gnuradio.gr.sig_source_i -.. autoblock:: gnuradio.gr.sig_source_s -.. autoblock:: gnuradio.gr.vector_source_b -.. autoblock:: gnuradio.gr.vector_source_c -.. autoblock:: gnuradio.gr.vector_source_f -.. autoblock:: gnuradio.gr.vector_source_i -.. autoblock:: gnuradio.gr.vector_source_s -.. autoblock:: gnuradio.gr.file_descriptor_source -.. autoblock:: gnuradio.gr.file_source -.. autoblock:: gnuradio.gr.message_source -.. autoblock:: gnuradio.gr.udp_source -.. autoblock:: gnuradio.gr.wavfile_source +.. autooldblock:: gnuradio.gr.glfsr_source_b +.. autooldblock:: gnuradio.gr.glfsr_source_f +.. autooldblock:: gnuradio.gr.lfsr_32k_source_s +.. autooldblock:: gnuradio.gr.null_source +.. autooldblock:: gnuradio.gr.noise_source_c +.. autooldblock:: gnuradio.gr.noise_source_f +.. autooldblock:: gnuradio.gr.noise_source_i +.. autooldblock:: gnuradio.gr.noise_source_s +.. autooldblock:: gnuradio.gr.sig_source_c +.. autooldblock:: gnuradio.gr.sig_source_f +.. autooldblock:: gnuradio.gr.sig_source_i +.. autooldblock:: gnuradio.gr.sig_source_s +.. autooldblock:: gnuradio.gr.vector_source_b +.. autooldblock:: gnuradio.gr.vector_source_c +.. autooldblock:: gnuradio.gr.vector_source_f +.. autooldblock:: gnuradio.gr.vector_source_i +.. autooldblock:: gnuradio.gr.vector_source_s +.. autooldblock:: gnuradio.gr.file_descriptor_source +.. autooldblock:: gnuradio.gr.file_source +.. autooldblock:: gnuradio.gr.message_source +.. autooldblock:: gnuradio.gr.udp_source +.. autooldblock:: gnuradio.gr.wavfile_source diff --git a/docs/sphinx/source/gr/sync_blk.rst b/docs/sphinx/source/gr/sync_blk.rst index bb2b839741..be9f908f73 100644 --- a/docs/sphinx/source/gr/sync_blk.rst +++ b/docs/sphinx/source/gr/sync_blk.rst @@ -1,9 +1,9 @@ gnuradio.gr: Synchronization ============================ -.. autoblock:: gnuradio.gr.pll_carriertracking_cc -.. autoblock:: gnuradio.gr.pll_freqdet_cf -.. autoblock:: gnuradio.gr.pll_refout_cc -.. autoblock:: gnuradio.gr.pn_correlator_cc -.. autoblock:: gnuradio.gr.simple_correlator -.. autoblock:: gnuradio.gr.simple_framer +.. autooldblock:: gnuradio.gr.pll_carriertracking_cc +.. autooldblock:: gnuradio.gr.pll_freqdet_cf +.. autooldblock:: gnuradio.gr.pll_refout_cc +.. autooldblock:: gnuradio.gr.pn_correlator_cc +.. autooldblock:: gnuradio.gr.simple_correlator +.. autooldblock:: gnuradio.gr.simple_framer diff --git a/docs/sphinx/source/noaa.rst b/docs/sphinx/source/noaa.rst index 06c7078130..65461f99b8 100644 --- a/docs/sphinx/source/noaa.rst +++ b/docs/sphinx/source/noaa.rst @@ -3,6 +3,6 @@ gnuradio.noaa .. automodule:: gnuradio.noaa -.. autoblock:: gnuradio.noaa.hrpt_decoder -.. autoblock:: gnuradio.noaa.hrpt_deframer -.. autoblock:: gnuradio.noaa.hrpt_pll_cf +.. autooldblock:: gnuradio.noaa.hrpt_decoder +.. autooldblock:: gnuradio.noaa.hrpt_deframer +.. autooldblock:: gnuradio.noaa.hrpt_pll_cf diff --git a/docs/sphinx/source/pager/blks.rst b/docs/sphinx/source/pager/blks.rst index 9b5a2ca70d..a36103d1fa 100644 --- a/docs/sphinx/source/pager/blks.rst +++ b/docs/sphinx/source/pager/blks.rst @@ -1,9 +1,9 @@ gnuradio.pager: Signal Processing Blocks ======================================== -.. autoblock:: gnuradio.pager.flex_deinterleave +.. autooldblock:: gnuradio.pager.flex_deinterleave .. autopyblock:: gnuradio.pager.flex_demod -.. autoblock:: gnuradio.pager.flex_frame -.. autoblock:: gnuradio.pager.flex_parse -.. autoblock:: gnuradio.pager.flex_sync -.. autoblock:: gnuradio.pager.slicer_fb +.. autooldblock:: gnuradio.pager.flex_frame +.. autooldblock:: gnuradio.pager.flex_parse +.. autooldblock:: gnuradio.pager.flex_sync +.. autooldblock:: gnuradio.pager.slicer_fb diff --git a/docs/sphinx/source/qtgui/index.rst b/docs/sphinx/source/qtgui/index.rst index c6311d381a..83bdedca89 100644 --- a/docs/sphinx/source/qtgui/index.rst +++ b/docs/sphinx/source/qtgui/index.rst @@ -3,7 +3,7 @@ gnuradio.qtgui .. automodule:: gnuradio.qtgui -.. autoblock:: gnuradio.qtgui.sink_c -.. autoblock:: gnuradio.qtgui.sink_f -.. autoblock:: gnuradio.qtgui.time_sink_c -.. autoblock:: gnuradio.qtgui.time_sink_f +.. autooldblock:: gnuradio.qtgui.sink_c +.. autooldblock:: gnuradio.qtgui.sink_f +.. autooldblock:: gnuradio.qtgui.time_sink_c +.. autooldblock:: gnuradio.qtgui.time_sink_f diff --git a/docs/sphinx/source/trellis/blks.rst b/docs/sphinx/source/trellis/blks.rst index a2eda07d61..d82319bad6 100644 --- a/docs/sphinx/source/trellis/blks.rst +++ b/docs/sphinx/source/trellis/blks.rst @@ -1,62 +1,62 @@ gnuradio.trellis: Signal Processing Blocks ========================================== -.. autoblock:: gnuradio.trellis.constellation_metrics_cf -.. autoblock:: gnuradio.trellis.encoder_bb -.. autoblock:: gnuradio.trellis.encoder_bi -.. autoblock:: gnuradio.trellis.encoder_bs -.. autoblock:: gnuradio.trellis.encoder_ii -.. autoblock:: gnuradio.trellis.encoder_si -.. autoblock:: gnuradio.trellis.encoder_ss -.. autoblock:: gnuradio.trellis.metrics_c -.. autoblock:: gnuradio.trellis.metrics_f -.. autoblock:: gnuradio.trellis.metrics_i -.. autoblock:: gnuradio.trellis.metrics_s -.. autoblock:: gnuradio.trellis.pccc_decoder_b -.. autoblock:: gnuradio.trellis.pccc_decoder_combined_cb -.. autoblock:: gnuradio.trellis.pccc_decoder_combined_ci -.. autoblock:: gnuradio.trellis.pccc_decoder_combined_cs -.. autoblock:: gnuradio.trellis.pccc_decoder_combined_fb -.. autoblock:: gnuradio.trellis.pccc_decoder_combined_fi -.. autoblock:: gnuradio.trellis.pccc_decoder_combined_fs -.. autoblock:: gnuradio.trellis.pccc_decoder_i -.. autoblock:: gnuradio.trellis.pccc_decoder_s -.. autoblock:: gnuradio.trellis.pccc_encoder_bb -.. autoblock:: gnuradio.trellis.pccc_encoder_bi -.. autoblock:: gnuradio.trellis.pccc_encoder_bs -.. autoblock:: gnuradio.trellis.pccc_encoder_ii -.. autoblock:: gnuradio.trellis.pccc_encoder_si -.. autoblock:: gnuradio.trellis.pccc_encoder_ss -.. autoblock:: gnuradio.trellis.permutation -.. autoblock:: gnuradio.trellis.sccc_decoder_b -.. autoblock:: gnuradio.trellis.sccc_decoder_combined_cb -.. autoblock:: gnuradio.trellis.sccc_decoder_combined_ci -.. autoblock:: gnuradio.trellis.sccc_decoder_combined_cs -.. autoblock:: gnuradio.trellis.sccc_decoder_combined_fb -.. autoblock:: gnuradio.trellis.sccc_decoder_combined_fi -.. autoblock:: gnuradio.trellis.sccc_decoder_combined_fs -.. autoblock:: gnuradio.trellis.sccc_decoder_i -.. autoblock:: gnuradio.trellis.sccc_decoder_s -.. autoblock:: gnuradio.trellis.sccc_encoder_bb -.. autoblock:: gnuradio.trellis.sccc_encoder_bi -.. autoblock:: gnuradio.trellis.sccc_encoder_bs -.. autoblock:: gnuradio.trellis.sccc_encoder_ii -.. autoblock:: gnuradio.trellis.sccc_encoder_si -.. autoblock:: gnuradio.trellis.sccc_encoder_ss -.. autoblock:: gnuradio.trellis.siso_combined_f -.. autoblock:: gnuradio.trellis.siso_f -.. autoblock:: gnuradio.trellis.viterbi_b -.. autoblock:: gnuradio.trellis.viterbi_combined_cb -.. autoblock:: gnuradio.trellis.viterbi_combined_ci -.. autoblock:: gnuradio.trellis.viterbi_combined_cs -.. autoblock:: gnuradio.trellis.viterbi_combined_fb -.. autoblock:: gnuradio.trellis.viterbi_combined_fi -.. autoblock:: gnuradio.trellis.viterbi_combined_fs -.. autoblock:: gnuradio.trellis.viterbi_combined_ib -.. autoblock:: gnuradio.trellis.viterbi_combined_ii -.. autoblock:: gnuradio.trellis.viterbi_combined_is -.. autoblock:: gnuradio.trellis.viterbi_combined_sb -.. autoblock:: gnuradio.trellis.viterbi_combined_si -.. autoblock:: gnuradio.trellis.viterbi_combined_ss -.. autoblock:: gnuradio.trellis.viterbi_i -.. autoblock:: gnuradio.trellis.viterbi_s +.. autooldblock:: gnuradio.trellis.constellation_metrics_cf +.. autooldblock:: gnuradio.trellis.encoder_bb +.. autooldblock:: gnuradio.trellis.encoder_bi +.. autooldblock:: gnuradio.trellis.encoder_bs +.. autooldblock:: gnuradio.trellis.encoder_ii +.. autooldblock:: gnuradio.trellis.encoder_si +.. autooldblock:: gnuradio.trellis.encoder_ss +.. autooldblock:: gnuradio.trellis.metrics_c +.. autooldblock:: gnuradio.trellis.metrics_f +.. autooldblock:: gnuradio.trellis.metrics_i +.. autooldblock:: gnuradio.trellis.metrics_s +.. autooldblock:: gnuradio.trellis.pccc_decoder_b +.. autooldblock:: gnuradio.trellis.pccc_decoder_combined_cb +.. autooldblock:: gnuradio.trellis.pccc_decoder_combined_ci +.. autooldblock:: gnuradio.trellis.pccc_decoder_combined_cs +.. autooldblock:: gnuradio.trellis.pccc_decoder_combined_fb +.. autooldblock:: gnuradio.trellis.pccc_decoder_combined_fi +.. autooldblock:: gnuradio.trellis.pccc_decoder_combined_fs +.. autooldblock:: gnuradio.trellis.pccc_decoder_i +.. autooldblock:: gnuradio.trellis.pccc_decoder_s +.. autooldblock:: gnuradio.trellis.pccc_encoder_bb +.. autooldblock:: gnuradio.trellis.pccc_encoder_bi +.. autooldblock:: gnuradio.trellis.pccc_encoder_bs +.. autooldblock:: gnuradio.trellis.pccc_encoder_ii +.. autooldblock:: gnuradio.trellis.pccc_encoder_si +.. autooldblock:: gnuradio.trellis.pccc_encoder_ss +.. autooldblock:: gnuradio.trellis.permutation +.. autooldblock:: gnuradio.trellis.sccc_decoder_b +.. autooldblock:: gnuradio.trellis.sccc_decoder_combined_cb +.. autooldblock:: gnuradio.trellis.sccc_decoder_combined_ci +.. autooldblock:: gnuradio.trellis.sccc_decoder_combined_cs +.. autooldblock:: gnuradio.trellis.sccc_decoder_combined_fb +.. autooldblock:: gnuradio.trellis.sccc_decoder_combined_fi +.. autooldblock:: gnuradio.trellis.sccc_decoder_combined_fs +.. autooldblock:: gnuradio.trellis.sccc_decoder_i +.. autooldblock:: gnuradio.trellis.sccc_decoder_s +.. autooldblock:: gnuradio.trellis.sccc_encoder_bb +.. autooldblock:: gnuradio.trellis.sccc_encoder_bi +.. autooldblock:: gnuradio.trellis.sccc_encoder_bs +.. autooldblock:: gnuradio.trellis.sccc_encoder_ii +.. autooldblock:: gnuradio.trellis.sccc_encoder_si +.. autooldblock:: gnuradio.trellis.sccc_encoder_ss +.. autooldblock:: gnuradio.trellis.siso_combined_f +.. autooldblock:: gnuradio.trellis.siso_f +.. autooldblock:: gnuradio.trellis.viterbi_b +.. autooldblock:: gnuradio.trellis.viterbi_combined_cb +.. autooldblock:: gnuradio.trellis.viterbi_combined_ci +.. autooldblock:: gnuradio.trellis.viterbi_combined_cs +.. autooldblock:: gnuradio.trellis.viterbi_combined_fb +.. autooldblock:: gnuradio.trellis.viterbi_combined_fi +.. autooldblock:: gnuradio.trellis.viterbi_combined_fs +.. autooldblock:: gnuradio.trellis.viterbi_combined_ib +.. autooldblock:: gnuradio.trellis.viterbi_combined_ii +.. autooldblock:: gnuradio.trellis.viterbi_combined_is +.. autooldblock:: gnuradio.trellis.viterbi_combined_sb +.. autooldblock:: gnuradio.trellis.viterbi_combined_si +.. autooldblock:: gnuradio.trellis.viterbi_combined_ss +.. autooldblock:: gnuradio.trellis.viterbi_i +.. autooldblock:: gnuradio.trellis.viterbi_s diff --git a/docs/sphinx/source/video_sdl.rst b/docs/sphinx/source/video_sdl.rst index e4fc5acac3..6be88d788c 100644 --- a/docs/sphinx/source/video_sdl.rst +++ b/docs/sphinx/source/video_sdl.rst @@ -3,5 +3,5 @@ gnuradio.video_sdl .. automodule:: gnuradio.video_sdl -.. autoblock:: gnuradio.video_sdl.sink_s -.. autoblock:: gnuradio.video_sdl.sink_uc +.. autooldblock:: gnuradio.video_sdl.sink_s +.. autooldblock:: gnuradio.video_sdl.sink_uc diff --git a/docs/sphinx/source/vocoder/blks.rst b/docs/sphinx/source/vocoder/blks.rst index ea20bc44be..34eda9d250 100644 --- a/docs/sphinx/source/vocoder/blks.rst +++ b/docs/sphinx/source/vocoder/blks.rst @@ -1,19 +1,19 @@ gnuradio.vocoder ================ -.. autoblock:: gnuradio.vocoder.alaw_decode_bs -.. autoblock:: gnuradio.vocoder.alaw_encode_sb -.. autoblock:: gnuradio.vocoder.codec2_decode_ps -.. autoblock:: gnuradio.vocoder.codec2_encode_sp -.. autoblock:: gnuradio.vocoder.cvsd_decode_bs -.. autoblock:: gnuradio.vocoder.cvsd_encode_sb -.. autoblock:: gnuradio.vocoder.g721_decode_bs -.. autoblock:: gnuradio.vocoder.g721_encode_sb -.. autoblock:: gnuradio.vocoder.g723_24_decode_bs -.. autoblock:: gnuradio.vocoder.g723_24_encode_sb -.. autoblock:: gnuradio.vocoder.g723_40_decode_bs -.. autoblock:: gnuradio.vocoder.g723_40_encode_sb -.. autoblock:: gnuradio.vocoder.gsm_fr_decode_ps -.. autoblock:: gnuradio.vocoder.gsm_fr_encode_sp -.. autoblock:: gnuradio.vocoder.ulaw_decode_bs -.. autoblock:: gnuradio.vocoder.ulaw_encode_sb +.. autooldblock:: gnuradio.vocoder.alaw_decode_bs +.. autooldblock:: gnuradio.vocoder.alaw_encode_sb +.. autooldblock:: gnuradio.vocoder.codec2_decode_ps +.. autooldblock:: gnuradio.vocoder.codec2_encode_sp +.. autooldblock:: gnuradio.vocoder.cvsd_decode_bs +.. autooldblock:: gnuradio.vocoder.cvsd_encode_sb +.. autooldblock:: gnuradio.vocoder.g721_decode_bs +.. autooldblock:: gnuradio.vocoder.g721_encode_sb +.. autooldblock:: gnuradio.vocoder.g723_24_decode_bs +.. autooldblock:: gnuradio.vocoder.g723_24_encode_sb +.. autooldblock:: gnuradio.vocoder.g723_40_decode_bs +.. autooldblock:: gnuradio.vocoder.g723_40_encode_sb +.. autooldblock:: gnuradio.vocoder.gsm_fr_decode_ps +.. autooldblock:: gnuradio.vocoder.gsm_fr_encode_sp +.. autooldblock:: gnuradio.vocoder.ulaw_decode_bs +.. autooldblock:: gnuradio.vocoder.ulaw_encode_sb diff --git a/docs/sphinx/source/wavelet.rst b/docs/sphinx/source/wavelet.rst index 679bab70c0..5236c4dbb2 100644 --- a/docs/sphinx/source/wavelet.rst +++ b/docs/sphinx/source/wavelet.rst @@ -3,6 +3,6 @@ gnuradio.wavelet .. automodule:: gnuradio.wavelet -.. autoblock:: gnuradio.wavelet.squash_ff -.. autoblock:: gnuradio.wavelet.wavelet_ff -.. autoblock:: gnuradio.wavelet.wvps_ff +.. autooldblock:: gnuradio.wavelet.squash_ff +.. autooldblock:: gnuradio.wavelet.wavelet_ff +.. autooldblock:: gnuradio.wavelet.wvps_ff -- cgit v1.2.3 From e67e3d9ac40f9651f108463c18cd704bef733574 Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 4 Jun 2012 20:43:49 -0400 Subject: docs: fixed Doxygen from looking in the howto dir. --- docs/doxygen/Doxyfile.in | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'docs/doxygen') diff --git a/docs/doxygen/Doxyfile.in b/docs/doxygen/Doxyfile.in index f3485316c4..ad3c2d01f4 100644 --- a/docs/doxygen/Doxyfile.in +++ b/docs/doxygen/Doxyfile.in @@ -628,7 +628,6 @@ EXCLUDE = @abs_top_builddir@/docs/doxygen/html \ @abs_top_builddir@/gr-gsm-fr-vocoder/src/lib/gsm_full_rate.py \ @abs_top_builddir@/gr-gsm-fr-vocoder/src/python/encdec.py \ @abs_top_builddir@/gr-howto-write-a-block \ - @abs_top_builddir@/gr-howto-write-a-block-cmake \ @abs_top_builddir@/gr-pager/src/pager_swig.py \ @abs_top_builddir@/gr-trellis/doc \ @abs_top_builddir@/gr-trellis/src/lib/generate_all.py \ @@ -640,7 +639,7 @@ EXCLUDE = @abs_top_builddir@/docs/doxygen/html \ @abs_top_builddir@/_CPack_Packages \ @abs_top_srcdir@/cmake \ @abs_top_srcdir@/gr-qtgui/lib \ - @abs_top_srcdir@/gr-howto-write-a-block-cmake + @abs_top_srcdir@/gr-howto-write-a-block # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded -- cgit v1.2.3 From ec30d89449f48fdd2f88420b4c87aba2e1a5abd1 Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Sun, 10 Jun 2012 12:43:06 -0400 Subject: volk: make sure the alignment call for a block passes at least 1. For machines with an alignment of 1, the blocks were truncating the aligment to 0. This makes sure that it gets set to a minimum of 1. --- docs/doxygen/other/volk_guide.dox | 2 +- gnuradio-core/src/lib/general/gr_add_ff.cc | 2 +- gnuradio-core/src/lib/general/gr_char_to_float.cc | 2 +- gnuradio-core/src/lib/general/gr_char_to_short.cc | 2 +- gnuradio-core/src/lib/general/gr_complex_to_xxx.cc | 12 ++++++------ gnuradio-core/src/lib/general/gr_conjugate_cc.cc | 2 +- gnuradio-core/src/lib/general/gr_float_to_char.cc | 2 +- gnuradio-core/src/lib/general/gr_float_to_int.cc | 2 +- gnuradio-core/src/lib/general/gr_float_to_short.cc | 2 +- gnuradio-core/src/lib/general/gr_int_to_float.cc | 2 +- gnuradio-core/src/lib/general/gr_multiply_cc.cc | 6 +++--- gnuradio-core/src/lib/general/gr_multiply_conjugate_cc.cc | 6 +++--- gnuradio-core/src/lib/general/gr_multiply_const_cc.cc | 6 +++--- gnuradio-core/src/lib/general/gr_multiply_const_ff.cc | 6 +++--- gnuradio-core/src/lib/general/gr_multiply_ff.cc | 2 +- gnuradio-core/src/lib/general/gr_short_to_char.cc | 2 +- gnuradio-core/src/lib/general/gr_short_to_float.cc | 2 +- 17 files changed, 30 insertions(+), 30 deletions(-) (limited to 'docs/doxygen') diff --git a/docs/doxygen/other/volk_guide.dox b/docs/doxygen/other/volk_guide.dox index 24882ed1a6..0e444ebbaf 100644 --- a/docs/doxygen/other/volk_guide.dox +++ b/docs/doxygen/other/volk_guide.dox @@ -63,7 +63,7 @@ calls with: \code const int alignment_multiple = volk_get_alignment() / output_item_size; - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); \endcode The Volk function 'volk_get_alignment' provides the alignment of the diff --git a/gnuradio-core/src/lib/general/gr_add_ff.cc b/gnuradio-core/src/lib/general/gr_add_ff.cc index 2e45673d3b..5f6676bb7b 100644 --- a/gnuradio-core/src/lib/general/gr_add_ff.cc +++ b/gnuradio-core/src/lib/general/gr_add_ff.cc @@ -42,7 +42,7 @@ gr_add_ff::gr_add_ff (size_t vlen) { const int alignment_multiple = volk_get_alignment() / sizeof(float); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } int diff --git a/gnuradio-core/src/lib/general/gr_char_to_float.cc b/gnuradio-core/src/lib/general/gr_char_to_float.cc index aec7ad8522..f63aa5b169 100644 --- a/gnuradio-core/src/lib/general/gr_char_to_float.cc +++ b/gnuradio-core/src/lib/general/gr_char_to_float.cc @@ -42,7 +42,7 @@ gr_char_to_float::gr_char_to_float (size_t vlen, float scale) { const int alignment_multiple = volk_get_alignment() / sizeof(float); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } float diff --git a/gnuradio-core/src/lib/general/gr_char_to_short.cc b/gnuradio-core/src/lib/general/gr_char_to_short.cc index c20d6cd888..bb9bd8909e 100644 --- a/gnuradio-core/src/lib/general/gr_char_to_short.cc +++ b/gnuradio-core/src/lib/general/gr_char_to_short.cc @@ -42,7 +42,7 @@ gr_char_to_short::gr_char_to_short (size_t vlen) { const int alignment_multiple = volk_get_alignment() / sizeof(char); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } int diff --git a/gnuradio-core/src/lib/general/gr_complex_to_xxx.cc b/gnuradio-core/src/lib/general/gr_complex_to_xxx.cc index 3b1fbf9acd..cdf6d7f3a6 100644 --- a/gnuradio-core/src/lib/general/gr_complex_to_xxx.cc +++ b/gnuradio-core/src/lib/general/gr_complex_to_xxx.cc @@ -45,7 +45,7 @@ gr_complex_to_float::gr_complex_to_float (unsigned int vlen) { const int alignment_multiple = volk_get_alignment() / sizeof(float); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } int @@ -106,7 +106,7 @@ gr_complex_to_real::gr_complex_to_real (unsigned int vlen) { const int alignment_multiple = volk_get_alignment() / sizeof(float); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } int @@ -146,7 +146,7 @@ gr_complex_to_imag::gr_complex_to_imag (unsigned int vlen) { const int alignment_multiple = volk_get_alignment() / sizeof(float); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } int @@ -186,7 +186,7 @@ gr_complex_to_mag::gr_complex_to_mag (unsigned int vlen) { const int alignment_multiple = volk_get_alignment() / sizeof(float); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } int @@ -220,7 +220,7 @@ gr_complex_to_mag_squared::gr_complex_to_mag_squared (unsigned int vlen) { const int alignment_multiple = volk_get_alignment() / sizeof(float); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } int @@ -258,7 +258,7 @@ gr_complex_to_arg::gr_complex_to_arg (unsigned int vlen) { const int alignment_multiple = volk_get_alignment() / sizeof(float); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } int diff --git a/gnuradio-core/src/lib/general/gr_conjugate_cc.cc b/gnuradio-core/src/lib/general/gr_conjugate_cc.cc index aaa7f490c7..94ac3e162b 100644 --- a/gnuradio-core/src/lib/general/gr_conjugate_cc.cc +++ b/gnuradio-core/src/lib/general/gr_conjugate_cc.cc @@ -43,7 +43,7 @@ gr_conjugate_cc::gr_conjugate_cc () { const int alignment_multiple = volk_get_alignment() / sizeof(gr_complex); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } int diff --git a/gnuradio-core/src/lib/general/gr_float_to_char.cc b/gnuradio-core/src/lib/general/gr_float_to_char.cc index 3602ad7453..d67ded3ea6 100644 --- a/gnuradio-core/src/lib/general/gr_float_to_char.cc +++ b/gnuradio-core/src/lib/general/gr_float_to_char.cc @@ -42,7 +42,7 @@ gr_float_to_char::gr_float_to_char (size_t vlen, float scale) { const int alignment_multiple = volk_get_alignment() / sizeof(char); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } float diff --git a/gnuradio-core/src/lib/general/gr_float_to_int.cc b/gnuradio-core/src/lib/general/gr_float_to_int.cc index bd3cd6a3b3..43b8518956 100644 --- a/gnuradio-core/src/lib/general/gr_float_to_int.cc +++ b/gnuradio-core/src/lib/general/gr_float_to_int.cc @@ -43,7 +43,7 @@ gr_float_to_int::gr_float_to_int (size_t vlen, float scale) { const int alignment_multiple = volk_get_alignment() / sizeof(int); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } float diff --git a/gnuradio-core/src/lib/general/gr_float_to_short.cc b/gnuradio-core/src/lib/general/gr_float_to_short.cc index 07995c99aa..ab720168bf 100644 --- a/gnuradio-core/src/lib/general/gr_float_to_short.cc +++ b/gnuradio-core/src/lib/general/gr_float_to_short.cc @@ -42,7 +42,7 @@ gr_float_to_short::gr_float_to_short (size_t vlen, float scale) { const int alignment_multiple = volk_get_alignment() / sizeof(short); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } float diff --git a/gnuradio-core/src/lib/general/gr_int_to_float.cc b/gnuradio-core/src/lib/general/gr_int_to_float.cc index a284853055..a7fb24dc69 100644 --- a/gnuradio-core/src/lib/general/gr_int_to_float.cc +++ b/gnuradio-core/src/lib/general/gr_int_to_float.cc @@ -42,7 +42,7 @@ gr_int_to_float::gr_int_to_float (size_t vlen, float scale) { const int alignment_multiple = volk_get_alignment() / sizeof(float); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } int diff --git a/gnuradio-core/src/lib/general/gr_multiply_cc.cc b/gnuradio-core/src/lib/general/gr_multiply_cc.cc index 32c44a19e4..4a3751419f 100644 --- a/gnuradio-core/src/lib/general/gr_multiply_cc.cc +++ b/gnuradio-core/src/lib/general/gr_multiply_cc.cc @@ -40,9 +40,9 @@ gr_multiply_cc::gr_multiply_cc (size_t vlen) gr_make_io_signature (1, 1, sizeof (gr_complex)*vlen)), d_vlen(vlen) { - const int alignment_multiple = - volk_get_alignment() / sizeof(gr_complex); - set_alignment(alignment_multiple); + const int alignment_multiple = + volk_get_alignment() / sizeof(gr_complex); + set_alignment(std::max(1,alignment_multiple)); } int diff --git a/gnuradio-core/src/lib/general/gr_multiply_conjugate_cc.cc b/gnuradio-core/src/lib/general/gr_multiply_conjugate_cc.cc index 53ede2eeda..0c5fb4a926 100644 --- a/gnuradio-core/src/lib/general/gr_multiply_conjugate_cc.cc +++ b/gnuradio-core/src/lib/general/gr_multiply_conjugate_cc.cc @@ -40,9 +40,9 @@ gr_multiply_conjugate_cc::gr_multiply_conjugate_cc (size_t vlen) gr_make_io_signature (1, 1, sizeof (gr_complex)*vlen)), d_vlen(vlen) { - const int alignment_multiple = - volk_get_alignment() / sizeof(gr_complex); - set_alignment(alignment_multiple); + const int alignment_multiple = + volk_get_alignment() / sizeof(gr_complex); + set_alignment(std::max(1,alignment_multiple)); } int diff --git a/gnuradio-core/src/lib/general/gr_multiply_const_cc.cc b/gnuradio-core/src/lib/general/gr_multiply_const_cc.cc index 359ab6ba05..bd4511937f 100644 --- a/gnuradio-core/src/lib/general/gr_multiply_const_cc.cc +++ b/gnuradio-core/src/lib/general/gr_multiply_const_cc.cc @@ -40,9 +40,9 @@ gr_multiply_const_cc::gr_multiply_const_cc (gr_complex k, size_t vlen) gr_make_io_signature (1, 1, sizeof (gr_complex)*vlen)), d_k(k), d_vlen(vlen) { - const int alignment_multiple = - volk_get_alignment() / sizeof(gr_complex); - set_alignment(alignment_multiple); + const int alignment_multiple = + volk_get_alignment() / sizeof(gr_complex); + set_alignment(std::max(1,alignment_multiple)); } gr_complex diff --git a/gnuradio-core/src/lib/general/gr_multiply_const_ff.cc b/gnuradio-core/src/lib/general/gr_multiply_const_ff.cc index 263f066106..16ba39df93 100644 --- a/gnuradio-core/src/lib/general/gr_multiply_const_ff.cc +++ b/gnuradio-core/src/lib/general/gr_multiply_const_ff.cc @@ -40,9 +40,9 @@ gr_multiply_const_ff::gr_multiply_const_ff (float k, size_t vlen) gr_make_io_signature (1, 1, sizeof (float)*vlen)), d_k(k), d_vlen(vlen) { - const int alignment_multiple = - volk_get_alignment() / sizeof(float); - set_alignment(alignment_multiple); + const int alignment_multiple = + volk_get_alignment() / sizeof(float); + set_alignment(std::max(1,alignment_multiple)); } float diff --git a/gnuradio-core/src/lib/general/gr_multiply_ff.cc b/gnuradio-core/src/lib/general/gr_multiply_ff.cc index f764a71e8f..bb7bd07550 100644 --- a/gnuradio-core/src/lib/general/gr_multiply_ff.cc +++ b/gnuradio-core/src/lib/general/gr_multiply_ff.cc @@ -42,7 +42,7 @@ gr_multiply_ff::gr_multiply_ff (size_t vlen) { const int alignment_multiple = volk_get_alignment() / sizeof(float); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } int diff --git a/gnuradio-core/src/lib/general/gr_short_to_char.cc b/gnuradio-core/src/lib/general/gr_short_to_char.cc index 9d6c41406e..8c146a351d 100644 --- a/gnuradio-core/src/lib/general/gr_short_to_char.cc +++ b/gnuradio-core/src/lib/general/gr_short_to_char.cc @@ -42,7 +42,7 @@ gr_short_to_char::gr_short_to_char (size_t vlen) { const int alignment_multiple = volk_get_alignment() / sizeof(char); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } int diff --git a/gnuradio-core/src/lib/general/gr_short_to_float.cc b/gnuradio-core/src/lib/general/gr_short_to_float.cc index 960cf644d1..093d6024fa 100644 --- a/gnuradio-core/src/lib/general/gr_short_to_float.cc +++ b/gnuradio-core/src/lib/general/gr_short_to_float.cc @@ -42,7 +42,7 @@ gr_short_to_float::gr_short_to_float (size_t vlen, float scale) { const int alignment_multiple = volk_get_alignment() / sizeof(float); - set_alignment(alignment_multiple); + set_alignment(std::max(1,alignment_multiple)); } float -- cgit v1.2.3 From 5f13956bfac00dadf350d97ccc8ddd555dc9b10e Mon Sep 17 00:00:00 2001 From: Josh Blum <josh@joshknows.com> Date: Tue, 3 Jul 2012 13:52:11 -0700 Subject: docs: remove redundant retries from swig_doc.py With proper build dependencies, it should not be needed. --- docs/doxygen/swig_doc.py | 100 ++++++++++++----------------------------------- 1 file changed, 26 insertions(+), 74 deletions(-) (limited to 'docs/doxygen') diff --git a/docs/doxygen/swig_doc.py b/docs/doxygen/swig_doc.py index 9277470984..f24608b3ee 100644 --- a/docs/doxygen/swig_doc.py +++ b/docs/doxygen/swig_doc.py @@ -1,5 +1,5 @@ # -# Copyright 2010,2011 Free Software Foundation, Inc. +# Copyright 2010-2012 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -232,25 +232,7 @@ def make_block2_entry(di, block): params=make_func.params)) return "\n\n".join(output) -def wait_if_necessary(tries, swigdocfilename, item=None): - if item is not None: - extra = ', item {0}'.format(item.name()) - else: - extra = '' - if(tries < 3): - # May not be built just yet; sleep and try again - sys.stderr.write("XML parsing problem with file {0}{1}, retrying.\n".format( - swigdocfilename, extra)) - time.sleep(1) - tries += 1 - return tries, True - else: - # if we've given it three tries, give up and raise an error - sys.stderr.write("XML parsing error with file {0}{1}. giving up.\n".format( - swigdocfilename, extra)) - return tries, False - -def make_swig_interface_file(di, swigdocfilename, custom_output=None, tries=0): +def make_swig_interface_file(di, swigdocfilename, custom_output=None): output = [""" /* @@ -264,50 +246,32 @@ def make_swig_interface_file(di, swigdocfilename, custom_output=None, tries=0): output.append(custom_output) # Create docstrings for the blocks. - while(1): - try: - blocks = di.in_category(Block) - blocks2 = di.in_category(Block2) - except: - tries, try_again = wait_if_necessary(tries, swigdocfilename) - if not try_again: - raise - else: - break + blocks = di.in_category(Block) + blocks2 = di.in_category(Block2) + make_funcs = set([]) for block in blocks: - while(1): - try: - make_func = di.get_member(make_name(block.name()), DoxyFunction) - # Don't want to risk writing to output twice. - if make_func.name() not in make_funcs: - make_funcs.add(make_func.name()) - output.append(make_block_entry(di, block)) - except block.ParsingError: - sys.stderr.write('Parsing error for block {0}\n'.format(block.name())) - except: - tries, try_again = wait_if_necessary(tries, swigdocfilename, block) - if not try_again: - raise - else: - break + try: + make_func = di.get_member(make_name(block.name()), DoxyFunction) + # Don't want to risk writing to output twice. + if make_func.name() not in make_funcs: + make_funcs.add(make_func.name()) + output.append(make_block_entry(di, block)) + except block.ParsingError: + sys.stderr.write('Parsing error for block {0}\n'.format(block.name())) + raise + for block in blocks2: - while(1): - try: - make_func = block.get_member('make', DoxyFunction) - make_func_name = block.name() +'::make' - # Don't want to risk writing to output twice. - if make_func_name not in make_funcs: - make_funcs.add(make_func_name) - output.append(make_block2_entry(di, block)) - except block.ParsingError: - sys.stderr.write('Parsing error for block {0}\n'.format(block.name())) - except: - tries, try_again = wait_if_necessary(tries, swigdocfilename, block) - if not try_again: - raise - else: - break + try: + make_func = block.get_member('make', DoxyFunction) + make_func_name = block.name() +'::make' + # Don't want to risk writing to output twice. + if make_func_name not in make_funcs: + make_funcs.add(make_func_name) + output.append(make_block2_entry(di, block)) + except block.ParsingError: + sys.stderr.write('Parsing error for block {0}\n'.format(block.name())) + raise # Create docstrings for functions # Don't include the make functions since they have already been dealt with. @@ -359,16 +323,4 @@ if __name__ == "__main__": custom_output = "\n\n".join(output) # Generate the docstrings interface file. - # If parsing error on NoSuchMember, try again by rereading everything. - # Give up after 3 tries. - tries = 0 - while(1): - try: - make_swig_interface_file(di, swigdocfilename, custom_output=custom_output, tries=tries) - except: - tries, try_again = wait_if_necessary(tries, swigdocfilename) - if not try_again: - raise - else: - break - + make_swig_interface_file(di, swigdocfilename, custom_output=custom_output) -- cgit v1.2.3 From 743745f0fbb8c31b919bada25dab91dfeab5e129 Mon Sep 17 00:00:00 2001 From: Tom Rondeau <trondeau@vt.edu> Date: Mon, 3 Sep 2012 14:09:06 -0400 Subject: docs: reworking doc into one extra dox file for easier linking. build_guide was not being found properly. Putting these together fixes that. --- docs/doxygen/other/build_guide.dox | 158 ------------------ docs/doxygen/other/extra_pages.dox | 326 +++++++++++++++++++++++++++++++++++++ docs/doxygen/other/main_page.dox | 2 +- docs/doxygen/other/volk_guide.dox | 161 ------------------ 4 files changed, 327 insertions(+), 320 deletions(-) delete mode 100644 docs/doxygen/other/build_guide.dox create mode 100644 docs/doxygen/other/extra_pages.dox delete mode 100644 docs/doxygen/other/volk_guide.dox (limited to 'docs/doxygen') diff --git a/docs/doxygen/other/build_guide.dox b/docs/doxygen/other/build_guide.dox deleted file mode 100644 index 629a0f89f2..0000000000 --- a/docs/doxygen/other/build_guide.dox +++ /dev/null @@ -1,158 +0,0 @@ -/*! \page page_build Build Instructions and Information - -\section dependencies Dependencies - -The list of GNU Radio dependencies and the minimum required versions, -if any, to build the various GNU Radio components. - -Most of these components do not need to be individually compiled or -installed. Instead, rely on your operating system's package manager or -binary installation process (the <b>apt-get</b> system in Debian and -Ubuntu, <b>yum</b> in RedHat and Fedora, etc.). GNU Radio tries to keep an -up-to-date build guide for the majority of the supported operating -systems on gnuradio.org -(http://gnuradio.org/redmine/projects/gnuradio/wiki/BuildGuide). - -Not all dependencies are required for all components, and not all -components are required for a given installation. The list of required -components is determined by what the user requires from GNU Radio. If, -for example, you do not use any Comedi-based hardware, do not worry -about building gr-comedi. - -Before trying to build these from source, please try your system's -installation tool (apt-get, pkg_install, YaST, yum, urpmi, etc.) -first. Most recent systems have these packages available. - -\subsection dep_global Global Dependencies -\li git http://code.google.com/p/msysgit -\li cmake (>= 2.6) http://www.cmake.org/cmake/resources/software.html -\li boost (>= 1.35) http://www.boostpro.com/download -\li cppunit (>= 1.9.14) http://gaiacrtn.free.fr/cppunit/index.html -\li fftw3f (>= 3.0) http://www.fftw.org/install/windows.html - -\subsection dep_python Python Wrappers -\li python (>= 2.5) http://www.python.org/download/ -\li swig (>= 1.3.31) http://www.swig.org/download.html -\li numpy (>= 1.1.0) http://sourceforge.net/projects/numpy/files/NumPy/ - -\subsection dep_docs docs: Building the documentation -\li doxygen (>= 1.5) http://www.stack.nl/~dimitri/doxygen/download.html - -\subsection dep_grc grc: The GNU Radio Companion -\li Cheetah (>= 2.0) http://www.cheetahtemplate.org/ -\li pygtk (>= 2.10) http://www.pygtk.org/downloads.html - -\subsection dep_wavelet gr-wavelet: Collection of wavelet blocks -\li gsl (>= 1.10) http://gnuwin32.sourceforge.net/packages/gsl.htm - -\subsection dep_gr_qtgui gr-qtgui: The QT-based Graphical User Interface -\li qt (>= 4.4) http://qt.nokia.com/downloads/ -\li qwt (>= 5.2) http://sourceforge.net/projects/qwt/ -\li pyqt (>= 4.4) http://www.riverbankcomputing.co.uk/software/pyqt/download -\li pyqwt (>= 5.2) http://pyqwt.sourceforge.net/download.html - -\subsection dep_gr_wxgui gr-wxgui: The WX-based Graphical User Interface -\li wxpython (>= 2.8) http://www.wxpython.org/ -\li python-lxml (>= 1.3.6) http://lxml.de/ - -\subsection dep_gr_audio gr-audio: Audio Subsystems (system/OS dependent) -\li audio-alsa (>= 0.9) http://www.alsa-project.org -\li audio-jack (>= 0.8) http://jackaudio.org/ -\li portaduio (>= 19) http://www.portaudio.com/ -\li audio-oss (>= 1.0) http://www.opensound.com/oss.html -\li audio-osx -\li audio-windows - -It is not necessary to satisfy all of these dependencies; just the -one(s) that are right for your system. On Linux, don't expect -audio-osx and audio-windows to be either satisfied or built. - -\subsection dep_uhd uhd: The Ettus USRP Hardware Driver Interface -\li uhd (>= 3.0.0) http://code.ettus.com/redmine/ettus/projects/uhd/wiki - -\subsection dep_shd shd: The Symplex Hardware Driver Interface -\li shd (>= 3.0.0) - -\subsection dep_gr_video_sdl gr-video-sdl: PAL and NTSC display -\li SDL (>= 1.2.0) http://www.libsdl.org/download-1.2.php - -\subsection dep_gr_comedi gr-comedi: Comedi hardware interface -\li comedilib (>= 0.8) http://www.comedi.org/ - - - -\section build_gr_cmake Building GNU Radio - -GNU Radio is built using the Cmake build system -(http://www.cmake.org/). The standard build method is as follows: - -\code -$ mkdir $(builddir) -$ cd $(builddir) -$ cmake [OPTIONS] $(srcdir) -$ make -$ make test -$ sudo make install -\endcode - -The \$(builddir) is the directory in which the code is built. This -<b>cannot</b> be the same path as where the source code resides. Often, -\$(builddir) is \$(srcdir)/build. - -\subsection Cmake Options - -Options can be used to specify where to find various library or -include file dependencies that are not automatically being found -(-DCMAKE_PREFIX_PATH) or set the prefix -(-DCMAKE_INSTALL_PREFIX=(dir)). - -Components can also be enabled and disabled through the options. For a -component named *gr-comp*, the option to disable would look like: --DENABLE_GR_COMP=off. The "off" could also be "false" or "no", and -cmake is not case sensitive about these options. Similarly, "true", -"on", or "yes" will turn this component on. All components are enabled -by default. - -An example is -DENABLE_PYTHON=False turns off building any Python or -Swigging components. The result will be the GNU Radio libraries and -C++ programs/applications/examples. No Python or GRC files will be -built or installed. - -The -DENABLE_DEFAULT=False can be used to disable all -components. Individual components can then be selectively turned back -on. For example, just buidling the Volk and Gruel libraries can be -done with this: - -\code -cmake -DENABLE_DEFAULT=Off -DENABLE_VOLK=True -DENABLE_GRUEL=True <srcdir> -\endcode - - -The build type allows you to specify the build as a debug or release -version. Each type sets different flags for different purposes. To set -the build type, use: - -\code --DCMAKE_BUILD_TYPE="Release"|"Debug" -\endcode - -If not specified, the "Release" mode is the defaulted to. - -"Release" mode sets the '-O3' optimization flag. - -"Debug" mode sets '-g -O2' flags to export debug symbols and reduce -the optimization to make the libraries easier to debug and step -through. - - -\subsection build_gr_cmake_e100 Building for the E100 - -To build GNU Radio on the Ettus Research E100 embedded platforms, -Cmake has to know that the processors uses the NEON extensions. Use -the - -\code -cmake -DCMAKE_CXX_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g" \ - -DCMAKE_C_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g" \ - <gr_source_dir> -\endcode diff --git a/docs/doxygen/other/extra_pages.dox b/docs/doxygen/other/extra_pages.dox new file mode 100644 index 0000000000..d40c692e03 --- /dev/null +++ b/docs/doxygen/other/extra_pages.dox @@ -0,0 +1,326 @@ +/*! \page build_guide Build Instructions and Information + +\section dependencies Dependencies + +The list of GNU Radio dependencies and the minimum required versions, +if any, to build the various GNU Radio components. + +Most of these components do not need to be individually compiled or +installed. Instead, rely on your operating system's package manager or +binary installation process (the <b>apt-get</b> system in Debian and +Ubuntu, <b>yum</b> in RedHat and Fedora, etc.). GNU Radio tries to keep an +up-to-date build guide for the majority of the supported operating +systems on gnuradio.org +(http://gnuradio.org/redmine/projects/gnuradio/wiki/BuildGuide). + +Not all dependencies are required for all components, and not all +components are required for a given installation. The list of required +components is determined by what the user requires from GNU Radio. If, +for example, you do not use any Comedi-based hardware, do not worry +about building gr-comedi. + +Before trying to build these from source, please try your system's +installation tool (apt-get, pkg_install, YaST, yum, urpmi, etc.) +first. Most recent systems have these packages available. + +\subsection dep_global Global Dependencies +\li git http://code.google.com/p/msysgit +\li cmake (>= 2.6) http://www.cmake.org/cmake/resources/software.html +\li boost (>= 1.35) http://www.boostpro.com/download +\li cppunit (>= 1.9.14) http://gaiacrtn.free.fr/cppunit/index.html +\li fftw3f (>= 3.0) http://www.fftw.org/install/windows.html + +\subsection dep_python Python Wrappers +\li python (>= 2.5) http://www.python.org/download/ +\li swig (>= 1.3.31) http://www.swig.org/download.html +\li numpy (>= 1.1.0) http://sourceforge.net/projects/numpy/files/NumPy/ + +\subsection dep_docs docs: Building the documentation +\li doxygen (>= 1.5) http://www.stack.nl/~dimitri/doxygen/download.html + +\subsection dep_grc grc: The GNU Radio Companion +\li Cheetah (>= 2.0) http://www.cheetahtemplate.org/ +\li pygtk (>= 2.10) http://www.pygtk.org/downloads.html + +\subsection dep_wavelet gr-wavelet: Collection of wavelet blocks +\li gsl (>= 1.10) http://gnuwin32.sourceforge.net/packages/gsl.htm + +\subsection dep_gr_qtgui gr-qtgui: The QT-based Graphical User Interface +\li qt (>= 4.4) http://qt.nokia.com/downloads/ +\li qwt (>= 5.2) http://sourceforge.net/projects/qwt/ +\li pyqt (>= 4.4) http://www.riverbankcomputing.co.uk/software/pyqt/download +\li pyqwt (>= 5.2) http://pyqwt.sourceforge.net/download.html + +\subsection dep_gr_wxgui gr-wxgui: The WX-based Graphical User Interface +\li wxpython (>= 2.8) http://www.wxpython.org/ +\li python-lxml (>= 1.3.6) http://lxml.de/ + +\subsection dep_gr_audio gr-audio: Audio Subsystems (system/OS dependent) +\li audio-alsa (>= 0.9) http://www.alsa-project.org +\li audio-jack (>= 0.8) http://jackaudio.org/ +\li portaduio (>= 19) http://www.portaudio.com/ +\li audio-oss (>= 1.0) http://www.opensound.com/oss.html +\li audio-osx +\li audio-windows + +It is not necessary to satisfy all of these dependencies; just the +one(s) that are right for your system. On Linux, don't expect +audio-osx and audio-windows to be either satisfied or built. + +\subsection dep_uhd uhd: The Ettus USRP Hardware Driver Interface +\li uhd (>= 3.0.0) http://code.ettus.com/redmine/ettus/projects/uhd/wiki + +\subsection dep_shd shd: The Symplex Hardware Driver Interface +\li shd (>= 3.0.0) + +\subsection dep_gr_video_sdl gr-video-sdl: PAL and NTSC display +\li SDL (>= 1.2.0) http://www.libsdl.org/download-1.2.php + +\subsection dep_gr_comedi gr-comedi: Comedi hardware interface +\li comedilib (>= 0.8) http://www.comedi.org/ + + + +\section build_gr_cmake Building GNU Radio + +GNU Radio is built using the Cmake build system +(http://www.cmake.org/). The standard build method is as follows: + +\code +$ mkdir $(builddir) +$ cd $(builddir) +$ cmake [OPTIONS] $(srcdir) +$ make +$ make test +$ sudo make install +\endcode + +The \$(builddir) is the directory in which the code is built. This +<b>cannot</b> be the same path as where the source code resides. Often, +\$(builddir) is \$(srcdir)/build. + +\subsection Cmake Options + +Options can be used to specify where to find various library or +include file dependencies that are not automatically being found +(-DCMAKE_PREFIX_PATH) or set the prefix +(-DCMAKE_INSTALL_PREFIX=(dir)). + +Components can also be enabled and disabled through the options. For a +component named *gr-comp*, the option to disable would look like: +-DENABLE_GR_COMP=off. The "off" could also be "false" or "no", and +cmake is not case sensitive about these options. Similarly, "true", +"on", or "yes" will turn this component on. All components are enabled +by default. + +An example is -DENABLE_PYTHON=False turns off building any Python or +Swigging components. The result will be the GNU Radio libraries and +C++ programs/applications/examples. No Python or GRC files will be +built or installed. + +The -DENABLE_DEFAULT=False can be used to disable all +components. Individual components can then be selectively turned back +on. For example, just buidling the Volk and Gruel libraries can be +done with this: + +\code +cmake -DENABLE_DEFAULT=Off -DENABLE_VOLK=True -DENABLE_GRUEL=True <srcdir> +\endcode + + +The build type allows you to specify the build as a debug or release +version. Each type sets different flags for different purposes. To set +the build type, use: + +\code +-DCMAKE_BUILD_TYPE="Release"|"Debug" +\endcode + +If not specified, the "Release" mode is the defaulted to. + +"Release" mode sets the '-O3' optimization flag. + +"Debug" mode sets '-g -O2' flags to export debug symbols and reduce +the optimization to make the libraries easier to debug and step +through. + + +\subsection build_gr_cmake_e100 Building for the E100 + +To build GNU Radio on the Ettus Research E100 embedded platforms, +Cmake has to know that the processors uses the NEON extensions. Use +the + +\code +cmake -DCMAKE_CXX_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g" \ + -DCMAKE_C_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -g" \ + <gr_source_dir> +\endcode + +*/ + + + +/*! \page volk_guide Instructions for using Volk in GNU Radio + +\section volk_intro Introduction + +Volk is the Vector-Optimized Library of Kernels. It is a library that +contains kernels of hand-written SIMD code for different mathematical +operations. Since each SIMD architecture can be greatly different and +no compiler has yet come along to handle vectorization properly or +highly efficiently, Volk approaches the problem differently. For each +architecture or platform that a developer wishes to vectorize for, a +new proto-kernel is added to Volk. At runtime, Volk will select the +correct proto-kernel. In this way, the users of Volk call a kernel for +performing the operation that is platform/architecture agnostic. This +allows us to write portable SIMD code. + +Volk kernels are always defined with a 'generic' proto-kernel, which +is written in plain C. With the generic kernel, the kernel becomes +portable to any platform. Kernels are then extended by adding +proto-kernels for new platforms in which they are desired. + +A good example of a Volk kernel with multiple proto-kernels defined is +the volk_32f_s32f_multiply_32f_a. This kernel implements a scalar +multiplication of a vector of floating point numbers (each item in the +vector is multiplied by the same value). This kernel has the following +proto-kernels that are defined for 'generic,' 'avx,' 'sse,' and 'orc.' + +\code + void volk_32f_s32f_multiply_32f_a_generic + void volk_32f_s32f_multiply_32f_a_sse + void volk_32f_s32f_multiply_32f_a_avx + void volk_32f_s32f_multiply_32f_a_orc +\endcode + +These proto-kernels means that on platforms with AVX support, Volk can +select this option or the SSE option, depending on which is faster. On +other platforms, the ORC SIMD compiler might provide a solution. If +all else fails, Volk can fall back on the generic proto-kernel, which +will always work. + +Just a note on ORC. ORC is a SIMD compiler library that uses a generic +assembly-like language for SIMD commands. Based on the available SIMD +architecture of a system, it will try and compile a good +solution. Tests show that the results of ORC proto-kernels are +generally better than the generic versions but often not as good as +the hand-tuned proto-kernels for a specific SIMD architecture. This +is, of course, to be expected, and ORC provides a nice intermediary +step to performance improvements until a specific hand-tuned +proto-kernel can be made for a given platform. + +See <a +href="http://gnuradio.org/redmine/projects/gnuradio/wiki/Volk">Volk on +gnuradio.org</a> for details on the Volk naming scheme. + + +\section volk_alignment Setting and Using Memory Alignment Information + +For Volk to work as best as possible, we want to use memory-aligned +SIMD calls, which means we have to have some way of knowing and +controlling the alignment of the buffers passed to gr_block's work +function. We set the alignment requirement for SIMD aligned memory +calls with: + +\code + const int alignment_multiple = + volk_get_alignment() / output_item_size; + set_alignment(std::max(1,alignment_multiple)); +\endcode + +The Volk function 'volk_get_alignment' provides the alignment of the +the machine architecture. We then base the alignment on the number of +output items required to maintain the alignment, so we divide the +number of alignment bytes by the number of bytes in an output items +(sizeof(float), sizeof(gr_complex), etc.). This value is then set per +block with the 'set_alignment' function. + +Because the scheduler tries to optimize throughput, the number of +items available per call to work will change and depends on the +availability of the read and write buffers. This means that it +sometimes cannot produce a buffer that is properly memory +aligned. This is an inevitable consequence of the scheduler +system. Instead of requiring alignment, the scheduler enforces the +alignment as much as possible, and when a buffer becomes unaligned, +the scheduler will work to correct it as much as possible. If a +block's buffers are unaligned, then, the scheduler sets a flag to +indicate as much so that the block can then decide what best to +do. The next section discusses the use of the aligned/unaligned +information in a gr_block's work function. + + +\section volk_work Using Alignment Properties in Work() + +The buffers passed to work/general_work in a gr_block are not +guaranteed to be aligned, but they will mostly be aligned whenever +possible. When not aligned, the 'is_unaligned()' flag will be set. So +a block can know if its buffers are aligned and make the right +decisions. This looks like: + +\code +int +gr_some_block::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]; + + if(is_unaligned()) { + // do something with unaligned data. This can either be a manual + // handling of the items or a call to an unaligned Volk function. + volk_32f_something_32f_u(out, in, noutput_items); + } + else { + // Buffers are aligned; can call the aligned Volk function. + volk_32f_something_32f_a(out, in, noutput_items); + } + + return noutput_items; +} +\endcode + + + +\section volk_tuning Tuning Volk Performance + +VOLK comes with a profiler that will build a config file for the best +SIMD architecture for your processor. Run volk_profile that is +installed into $PREFIX/bin. This program tests all known VOLK kernels +for each architecture supported by the processor. When finished, it +will write to $HOME/.volk/volk_config the best architecture for the +VOLK function. This file is read when using a function to know the +best version of the function to execute. + +\subsection volk_hand_tuning Hand-Tuning Performance + +If you know a particular architecture works best for your processor, +you can specify the particular architecture to use in the VOLK +preferences file: $HOME/.volk/volk_config + +The file looks like: + +\code + volk_<FUNCTION_NAME> <ARCHITECTURE> +\endcode + +Where the "FUNCTION_NAME" is the particular function that you want to +over-ride the default value and "ARCHITECTURE" is the VOLK SIMD +architecture to use (generic, sse, sse2, sse3, avx, etc.). For +example, the following config file tells VOLK to use SSE3 for the +aligned and unaligned versions of a function that multiplies two +complex streams together. + +\code + volk_32fc_x2_multiply_32fc_a sse3 + volk_32fc_x2_multiply_32fc_u sse3 +\endcode + +\b Tip: if benchmarking GNU Radio blocks, it can be useful to have a +volk_config file that sets all architectures to 'generic' as a way to +test the vectorized versus non-vectorized implementations. + +*/ + + diff --git a/docs/doxygen/other/main_page.dox b/docs/doxygen/other/main_page.dox index 68b0989436..8f69a97373 100644 --- a/docs/doxygen/other/main_page.dox +++ b/docs/doxygen/other/main_page.dox @@ -14,7 +14,7 @@ the <a href="http://gnuradio.squarespace.com" target="_blank"><b>GNU Radio blog< \section build Building GNU Radio -See the \ref page_build page for details about the project's +See the \ref build_guide page for details about the project's dependencies and build process. diff --git a/docs/doxygen/other/volk_guide.dox b/docs/doxygen/other/volk_guide.dox deleted file mode 100644 index 0e444ebbaf..0000000000 --- a/docs/doxygen/other/volk_guide.dox +++ /dev/null @@ -1,161 +0,0 @@ -/*! \page volk_guide Instructions for using Volk in GNU Radio - -\section volk_intro Introduction - -Volk is the Vector-Optimized Library of Kernels. It is a library that -contains kernels of hand-written SIMD code for different mathematical -operations. Since each SIMD architecture can be greatly different and -no compiler has yet come along to handle vectorization properly or -highly efficiently, Volk approaches the problem differently. For each -architecture or platform that a developer wishes to vectorize for, a -new proto-kernel is added to Volk. At runtime, Volk will select the -correct proto-kernel. In this way, the users of Volk call a kernel for -performing the operation that is platform/architecture agnostic. This -allows us to write portable SIMD code. - -Volk kernels are always defined with a 'generic' proto-kernel, which -is written in plain C. With the generic kernel, the kernel becomes -portable to any platform. Kernels are then extended by adding -proto-kernels for new platforms in which they are desired. - -A good example of a Volk kernel with multiple proto-kernels defined is -the volk_32f_s32f_multiply_32f_a. This kernel implements a scalar -multiplication of a vector of floating point numbers (each item in the -vector is multiplied by the same value). This kernel has the following -proto-kernels that are defined for 'generic,' 'avx,' 'sse,' and 'orc.' - -\code - void volk_32f_s32f_multiply_32f_a_generic - void volk_32f_s32f_multiply_32f_a_sse - void volk_32f_s32f_multiply_32f_a_avx - void volk_32f_s32f_multiply_32f_a_orc -\endcode - -These proto-kernels means that on platforms with AVX support, Volk can -select this option or the SSE option, depending on which is faster. On -other platforms, the ORC SIMD compiler might provide a solution. If -all else fails, Volk can fall back on the generic proto-kernel, which -will always work. - -Just a note on ORC. ORC is a SIMD compiler library that uses a generic -assembly-like language for SIMD commands. Based on the available SIMD -architecture of a system, it will try and compile a good -solution. Tests show that the results of ORC proto-kernels are -generally better than the generic versions but often not as good as -the hand-tuned proto-kernels for a specific SIMD architecture. This -is, of course, to be expected, and ORC provides a nice intermediary -step to performance improvements until a specific hand-tuned -proto-kernel can be made for a given platform. - -See <a -href="http://gnuradio.org/redmine/projects/gnuradio/wiki/Volk">Volk on -gnuradio.org</a> for details on the Volk naming scheme. - - -\section volk_alignment Setting and Using Memory Alignment Information - -For Volk to work as best as possible, we want to use memory-aligned -SIMD calls, which means we have to have some way of knowing and -controlling the alignment of the buffers passed to gr_block's work -function. We set the alignment requirement for SIMD aligned memory -calls with: - -\code - const int alignment_multiple = - volk_get_alignment() / output_item_size; - set_alignment(std::max(1,alignment_multiple)); -\endcode - -The Volk function 'volk_get_alignment' provides the alignment of the -the machine architecture. We then base the alignment on the number of -output items required to maintain the alignment, so we divide the -number of alignment bytes by the number of bytes in an output items -(sizeof(float), sizeof(gr_complex), etc.). This value is then set per -block with the 'set_alignment' function. - -Because the scheduler tries to optimize throughput, the number of -items available per call to work will change and depends on the -availability of the read and write buffers. This means that it -sometimes cannot produce a buffer that is properly memory -aligned. This is an inevitable consequence of the scheduler -system. Instead of requiring alignment, the scheduler enforces the -alignment as much as possible, and when a buffer becomes unaligned, -the scheduler will work to correct it as much as possible. If a -block's buffers are unaligned, then, the scheduler sets a flag to -indicate as much so that the block can then decide what best to -do. The next section discusses the use of the aligned/unaligned -information in a gr_block's work function. - - -\section volk_work Using Alignment Properties in Work() - -The buffers passed to work/general_work in a gr_block are not -guaranteed to be aligned, but they will mostly be aligned whenever -possible. When not aligned, the 'is_unaligned()' flag will be set. So -a block can know if its buffers are aligned and make the right -decisions. This looks like: - -\code -int -gr_some_block::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]; - - if(is_unaligned()) { - // do something with unaligned data. This can either be a manual - // handling of the items or a call to an unaligned Volk function. - volk_32f_something_32f_u(out, in, noutput_items); - } - else { - // Buffers are aligned; can call the aligned Volk function. - volk_32f_something_32f_a(out, in, noutput_items); - } - - return noutput_items; -} -\endcode - - - -\section volk_tuning Tuning Volk Performance - -VOLK comes with a profiler that will build a config file for the best -SIMD architecture for your processor. Run volk_profile that is -installed into $PREFIX/bin. This program tests all known VOLK kernels -for each architecture supported by the processor. When finished, it -will write to $HOME/.volk/volk_config the best architecture for the -VOLK function. This file is read when using a function to know the -best version of the function to execute. - -\subsection volk_hand_tuning Hand-Tuning Performance - -If you know a particular architecture works best for your processor, -you can specify the particular architecture to use in the VOLK -preferences file: $HOME/.volk/volk_config - -The file looks like: - -\code - volk_<FUNCTION_NAME> <ARCHITECTURE> -\endcode - -Where the "FUNCTION_NAME" is the particular function that you want to -over-ride the default value and "ARCHITECTURE" is the VOLK SIMD -architecture to use (generic, sse, sse2, sse3, avx, etc.). For -example, the following config file tells VOLK to use SSE3 for the -aligned and unaligned versions of a function that multiplies two -complex streams together. - -\code - volk_32fc_x2_multiply_32fc_a sse3 - volk_32fc_x2_multiply_32fc_u sse3 -\endcode - -\b Tip: if benchmarking GNU Radio blocks, it can be useful to have a -volk_config file that sets all architectures to 'generic' as a way to -test the vectorized versus non-vectorized implementations. - -*/ -- cgit v1.2.3